es数据与mysql的双写_DB与ES组合应用内的数据实时同步

问题

1. 同步实时性:数据在DB更新后需多久才更新到Elasticsearch,多久的时间是应用系统可以接受范围,一般需要控制在1s以内,如果是分钟以上,属于离线同步。

2.数据一致性,数据频繁在DB变更修改,更新到ES后如何保证数据与DB一致,在容许的时间范围内应用系统查询的数据有效可接受的,如果变更出现覆盖等,那数据是无效的,应用系统是不可接受的,如何修复。

同步模式

1.推送Push模式,数据源主动将变更数据推送到目标源,如RabbitMQ,服务端会主动MQ发送到客户端。

2. 拉取Pull模式,目标源定时去数据源拉取变更数据,如Mysql数据库的数据主从同步,Slave会去Master拉取变更数据。

3. 推拉结合,数据源与目标源之间,既有推送方式也有拉取方式,此种模式一般会借助于中间媒介实现,如基于Kafka的游戏日志应用,数据源(采集端)会将日志数据发送到Kafka集群,目标源会定期的从Kafka拉取数据更新。

技术方案

1. 同步双写,更新DB时同步更新ES。此技术方案最简单,附带问题最多,数据冲突,数据覆盖,数据丢失,处处是坑,谨慎选择。

2. 异步双写,更新DB之后,记录一条MQ,MQ通知消费端,消费端反向查询DB数据,最后更新到ES。此技术方案与业务系统耦合严重,需要每个业务专门编写相关程序,不利于快速响应需求。

3. CDC,全称Change Data Capt

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值