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方式)
如果对实时性要求不高的情况下可以考虑用定时器来处理,具体步骤如下:
- 数据库的相关表中增加一个字段为timestamp的字段,任何crud操作都会导致该字段的时间发生变化
- 增加一个定时器程序按一定的时间周期扫描指定的表,把该时间段内发生变化的数据提取出来
- 逐条写入到ES中
优点:没有代码侵入、没有硬编码;没有业务强耦合;不改变原来程序的性能;Worker代码编写简单不需要考虑增删改查
缺点:时效性较差,由于定时器工作周期不可能

最低0.47元/天 解锁文章
394

被折叠的 条评论
为什么被折叠?



