栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka消息零丢失方案

kafka消息零丢失方案


exactly one = least-once(-1、全写) + 幂等性(去重)
exactly-one是要保证 生产者只生产一次、kafka只存储一份数据、消费者只消费一次数据
我们在切片的场景下,kafka分区全写保证least-once,消费者通过业主唯一标识保证这个幂等性。这样生产者可以重复生产,kafka可以数据重复,消费者可以重复消费。

kafka消息丢失怎么解决? exit-one
生产者到mq
消息发出去了,等到消息的ack,再向下进行。消息发送成功。
消息发出去了,应用死了,ack也回不来,发送异常,再次发送这个消息,mq中会有多条这个消息,消息的幂等性解决消息重复的问题。
消息发出去了,mq死了。 高可用不会死。如果说真的是死了,没有收到ack,肯定要再此尝试发送。有降级方法。

mq主节点到子节点
接受到生产者的消息后,master收到收,直接返回
接受到生产者的消息后,同步完一半的节点,再返回
接受到生产者的消息后,同步完所有的节点,再返回
接受到消息,应用死了,ack回不去,回滚
接受到消息后,自己死了。高可用不会死。如果真的死了,没有给应用发送ack,会在此生产这个消息。

mq到消费着
消费着消费完这个消息,手动offset,kafka才能知道你下一条消费那条。
消费着消费完这个消息,自己挂了。没有offset下次消费还是这个消息。
业务执行完,offset之前挂了,将业务和offset放到一个事务里。
消费着消费完这个消息,mq挂了。高可用不会死。如果真的死了,offset不能成功,多次offset没成功后,手动回滚。也可以把他们放到同一个事务里。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434139.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号