ToB企服应用市场:ToB评测及商务社交产业平台

标题: 大厂口试真题:如何包管Kafka的消息不被重复消费 [打印本页]

作者: 我爱普洱茶    时间: 2024-12-27 16:48
标题: 大厂口试真题:如何包管Kafka的消息不被重复消费
重复消费的缘故原由

1. 客户端自动提交Offset

Kafka默认的自动提交Offset会有一个5秒钟的时间间隔,也就是消费完消息5秒钟之后在下次向broker拉取消息的时间才会提交Offset,而在这个过程中如果应用被强制Kill或者宕机的时间可能会导致Offset没有提交从而产生重复消费的问题。
2. 服务端的分区再均衡(Partition Rebalancing)

分区再均衡是指在消费者组中,当消费者实例的数目发生变化(如新的消费者加入或现有消费者离开)时,Kafka自动重新分配主题分区给消费者的过程。这个过程确保了每个消费者都能公平地分担工作负载,并在有消费者加入或离开时,可以大概及时调整分区的分配,从而维持系统的高可用性和负载均衡。
消费者与协调者(coordinator)之间通过心跳机制来维护其活泼状态。如果消费者在配置的max.poll.interval.ms时间内(默认值为300000毫秒,即5分钟)没有向协调者发送心跳或哀求数据,协调者会认为该消费者已经殒命,从而触发Rebalance操作。如果Consumer在Rebalance发生前没有成功提交Offset,并且在Rebalance后从之前未提交的Offset位置开始消费,会导致消息重复消费。
怎么解决重复消费

Kafka通过一系列机制来确保消息不被重复消费,这些机制涵盖了消费者配置、消费者组协调、幂等性生产者以及消息处置惩罚过程中的去重技术等。以下是Kafka包管消息不重复消费的主要方式:
1. 进步消费端的处置惩罚性能避免触发reblance


2. 使用ConsumerRebalanceListener(再均衡监听器)


3. 幂等性校验


4. 消息去重技术


5. 监控和告警



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4