场景:MySQL 表字段多、查询慢,业务有模糊查询的要求。现计划将数据备份到 ES 中,查询请求通过 ES 处理。
数据备份的方案是 Canal 订阅 binlog 数据操作,消费端再加以信息消费后存储于 ES。
这种情况下,未防止对一条数据的两次修改乱序消费,消费端多实例如何做到有序消费?
场景:MySQL 表字段多、查询慢,业务有模糊查询的要求。现计划将数据备份到 ES 中,查询请求通过 ES 处理。
数据备份的方案是 Canal 订阅 binlog 数据操作,消费端再加以信息消费后存储于 ES。
这种情况下,未防止对一条数据的两次修改乱序消费,消费端多实例如何做到有序消费?
加个标识, 体现DB修改的顺序
比如版本号,DB数据修改一次版本号加一(也可以使用更新时间字段,一般表中都有这个字段)
然后Canal监听到了信息,然后同步到ES时,判断一下当前监听到的消息中的版本号是不是比ES中的大,大就更新,不大就不更新
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。