Canal 监听 binlog 日志推往 MQ,消费端多实例如何做到有序消费?

新手上路,请多包涵

场景:MySQL 表字段多、查询慢,业务有模糊查询的要求。现计划将数据备份到 ES 中,查询请求通过 ES 处理。
数据备份的方案是 Canal 订阅 binlog 数据操作,消费端再加以信息消费后存储于 ES。
这种情况下,未防止对一条数据的两次修改乱序消费,消费端多实例如何做到有序消费?

阅读 2.3k
1 个回答

加个标识, 体现DB修改的顺序
比如版本号,DB数据修改一次版本号加一(也可以使用更新时间字段,一般表中都有这个字段)
然后Canal监听到了信息,然后同步到ES时,判断一下当前监听到的消息中的版本号是不是比ES中的大,大就更新,不大就不更新

已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进