作者:罗一鸣

资料来源: https://my.oschina.net/u/2485991/blog/533163

前言:

站外推广系统订单报告一直是个痛点,研究后选择ES搜索引擎进行改造。 在线上遇到了很多问题,经过多方修改,目前系统终于正常运行,满足了订单报表大数据量、实时更新、响应速度、多维度查询的需要。

追寻花瓣本来是用ppt写的,在这里只能修改成图片展示。

一、为什么选择ES

搜索引擎主要考虑的是ES支持结构化数据查询和实时频繁更新功能。

elasticsearch替代方案(es搜索原理-编程之家

二、总体系统架构

整个业务线采用服务化方式,ES集群和数据库被数据库化,作为数据源封装在订单服务系统中作为对外统一接口; 每个后台APP和报告中心都以服务化的方式获取订单数据。

elasticsearch替代方案(es搜索原理-编程之家

三、数据更新设计

ES数据更新有批量更新和实时更新两种。

1、用于手动更新初始化数据或修复数据时

2、实时更新通过监视数据库订单的binlog,进行实时同步

elasticsearch替代方案(es搜索原理-编程之家

四、机器、索引、参数配置

elasticsearch替代方案(es搜索原理-编程之家

五、索引结构图

elasticsearch替代方案(es搜索原理-编程之家

六、机器性能选择

频繁更新时请务必考虑使用固态硬盘

elasticsearch替代方案(es搜索原理-编程之家

七、文档id选择

是订单数据,有频繁的数据更新,因此如下所示选择自己指定的唯一id。

elasticsearch替代方案(es搜索原理-编程之家

八、实时更新数据方案

实时数据更新通过接收数据库的binlog实现。

elasticsearch替代方案(es搜索原理-编程之家

elasticsearch替代方案(es搜索原理-编程之家

九、数据一致性解决方案

不一致的原因:

1、按域发行代码

2、网络延迟

3、集群故障

4、vdp、vms丢失数据

解决方案:

1、使用日程安排任务,每天比较3个月以内每天的数据

2、数据不一致时,自动批量同步当天的数据

3、数据不一致,自动发送警告邮件

4、调度任务随时可以手动结束

到现在为止还没有出现不一致的地方

十、数据更新、查询接口

elasticsearch替代方案(es搜索原理-编程之家

elasticsearch替代方案(es搜索原理-编程之家

elasticsearch替代方案(es搜索原理-编程之家

elasticsearch替代方案(es搜索原理-编程之家