首页 > 资讯 > 正文
ES订单数据的同步方案
来源:网络 阅读量:


Mysql数据同步到ES中,大致总结可以分为两种方案:
 
方案1:监听mysql的binlog,分析binlog将数据同步到ES集群中
优点:业务与ES数据耦合度低,业务逻辑中不需要关心ES数据的写入。
缺点:binglog模式只能使用ROW模式,且引入了新的同步服务,增加了开发量以及维护成本,也增大了ES同步的风险。
 
方案2:直接通过ES API将数据写入到ES集群中
优点:简洁明了,能够灵活的控制数据的写入
缺点:与业务耦合严重,强依赖于业务系统的写入方式
 
考虑到订单系统ES服务的业务特殊性,对于订单数据的实时性较高,显然监听binlog的方式相当于异步同步,有可能会产生较大的延时性。且方案1实质上跟方案2类似,但又引入了新的系统,维护成本也增高。
 
所以订单中心ES采用了直接通过ES API写入订单数据的方式,该方式简洁灵活,能够很好的满足订单中心数据同步到ES的需求。
 
由于ES订单数据的同步采用的是在业务中写入的方式,当新建或更新文档发生异常时,如果重试势必会影响业务正常操作的响应时间。
 
所以每次业务操作只更新一次ES,如果发生错误或者异常,在数据库中插入一条补救任务,有worker任务会实时的扫这些数据,以数据库订单数据为基准来再次更新ES数据。通过此种补偿机制,来保证ES数据与数据库订单数据的最终一致性。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.link66.cn/news/3081.html