336、请问下mysql redis es 三写 三删 怎么保证数据一致性 失败了怎么会滚

在多系统环境中,如MySQL、Redis和Elasticsearch,实现强一致性是一项挑战。通常采取最终一致性策略,通过Canal等工具监听MySQL的binlog,并发送到消息队列MQ。异步处理MQ消息,分别更新Redis和Elasticsearch。由于涉及多个系统,无法保证绝对的一致性,常见做法是监控错误并进行补偿操作,确保以MySQL数据为基准。同时,使用事务消息同步和幂等设计来增强一致性。在实际操作中,可能需要结合人工干预和死信队列处理无法自动解决的情况。
摘要由CSDN通过智能技术生成

叫点啥好

字节跳动员工

走最终一致性啊。db提交后用 canal 之类的组件,把binlog发送到mq。拿异构数据同步工具搭两条同步链路,从 mq 取数据,分别写进redis、es

只要涉及到1个以上的系统就没有绝对强一致性

为啥要保证一致性 直接监控错误然后补偿就行了,涉及到实际写操作时一律以mysql数据为准

写前日志,异常重试,幂等

没有保证绝对一致的方法

用事务消息同步es,保证实时性和一致性,用延迟消息同步redis+缓存常驻redis保证一致性

准确来说是很难做的。最简单的确实是最终一致性。。不然别说三写了。双写一般人都要gg

楼上说的没问题了,现在业务这么解决的。
cannal模拟监控binlog数据变动,mq队列重试,超过次数死信队列…实在不行人工干预

大家八股文背的都不一致啊

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值