Elasticsearch系列实战三:使用Logstath与Mysql数据同步

1.数据同步方案

1.1 同步双写

最为简单的方式,在将数据写到mysql时,同时将数据写到ES,实现数据的双写
优点:业务逻辑简单
缺点:硬编码;业务强耦合;存在双写失败丢数据风险;性能较差


1.2 异步双写(MQ方式)

针对第一种同步双写的性能和数据丢失问题,可以考虑引入MQ,从而形成了异步双写的方案,
优点:写入性能提高;不存在丢数据问题
缺点:硬编码;业务强耦合;代码编写复杂度增加;可能存在时延问题


1.3 binlog同步

利用mysql的binlog来进行同步,具体步骤如下:

1) 读取mysql的binlog日志,获取指定表的日志信息;

2) 将读取的信息转为MQ;

3) 编写一个MQ消费程序;

4) 不断消费MQ,每消费完一条消息,将消息写入到ES中。

优点:没有代码侵入、没有硬编码;性能高;业务解耦
缺点:构建Binlog系统复杂;存在MQ延时的风险


1.4 异步双写(WORK方式)

如果对实时性要求不高的情况下可以考虑用定时器来处理,具体步骤如下:

  1. 数据库的相关表中增加一个字段为timestamp的字段,任何crud操作都会导致该字段的时间发生变化
  2. 增加一个定时器程序按一定的时间周期扫描指定的表,把该时间段内发生变化的数据提取出来
  3. 逐条写入到ES中

优点:没有代码侵入、没有硬编码;没有业务强耦合;不改变原来程序的性能;Worker代码编写简单不需要考虑增删改查
缺点:时效性较差,由于定时器工作周期不可能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值