es数据与mysql的双写_[es同步数据库方式]ElasticSearch(ES)数据同步方案分析比较

随着业务量增长,MySQL的全文检索能力不足。本文探讨了四种ES与MySQL数据同步策略:同步双写、异步双写(MQ)、异步双写(Worker)和Binlog同步。同步双写简单但可能导致性能下降和数据丢失;异步双写通过MQ或Worker提升性能,但可能有延迟;Binlog同步则无侵入性且高性能,但实现复杂。
摘要由CSDN通过智能技术生成

当业务量上升后,由于mysql对全文检索或模糊查询支持的能力不强,在系统中查询的地方,往往会出现慢sql等,拖累系统其他模块,造成性能低下。

随着ES使用普及率的升高,ES是mysql的一个有效补充。我们可以将数据发送到搜索引擎(如ES)上,由搜索引擎来提供专业的服务。

接下来,就结合工作中实际用到的场景,对数据从mysql到es的同步进行一些分析。

在实践中我总结出了以下几种方式。

第1种:同步双写

这是一种最为简单的方式,在将数据写到mysql时,同时将数据写到ES,实现数据的双写。

优点:

业务逻辑简单。

缺点:

硬编码:有需要写入mysql的地方都需要添加写入ES的代码;业务强耦合;存在双写失败丢数据风险;性能较差:本来mysql的性能就不是很高,再加写一个ES,系统的性能必然会下降。说明:

上面第3点讲到的双写失败风险,包括以下3种:

ES系统不可用;应用系统和ES之间的网络故障;应用系统重启,导致系统来不及写入ES等。针对这种情况,有数据强一致性要求的,就必须双写放到事物中来处理,但是一旦用上事物,则性能下降更加明显。

第2种:异步双写(MQ方式)

针对第一种同步双写的性能和数据丢失问题,可以考虑引入MQ,从而形成了异步双写的方案,如下图所示:

由于MQ的性能基本比mysql高出一个数量级,所以性能可以得到显著的提高

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值