首页 > 图灵资讯 > java面试题>正文

金三银四精选java面试题-Kafka消息丢失有几种情况?如何解决

2023-12-08 10:25:30

 

Kafka消息丢失有几种情况?如何解决

消息发送端

(1)acks=0: 表示producer不需要等待任何broker确认收到消息的回复,就可以继续发送下一条消息。性能最高,但是最容易丢消息。大数据统计报表场景,对性能要求很高,对数据丢失不敏感的情况可以用这种。

(2)acks=1: 至少要等待leader已经成功将数据写入本地log,但是不需要等待所有follower是否成功写入。就可以继续发送下一条消息。这种情况下,如果follower没有成功备份数据,而此时leader又挂掉,则消息会丢失。

(3)acks=-1或all: 这意味着leader需要等待所有备份(min.insync.replicas配置的备份个数)都成功写入日志,这种策略会保证只要有一个备份存活就不会丢失数据。这是最强的数据保证。一般除非是金融级别,或跟钱打交道的场景才会使用这种配置。当然如果min.insync.replicas配置的是1则也可能丢消息,跟acks=1情况类似。

消息消费端

如果消费这边配置的是自动提交,万一消费到数据还没处理完,就自动提交offset了,但是此时你consumer直接宕机了,未处理完的数据丢失了,下次也消费不到了。

 

 


 
上一篇 金三银四精选java面试题-Seata支持哪些模式的分布式事务
下一篇 金三银四精选java面试题-Kafka消息重复消费有几种情况?如何解决

文章素材均来源于网络,如有侵权,请联系管理员删除。