卡夫卡集团的重新平衡会导致越来越少的消费者存活吗?

时间:2018-11-04 16:11:34

标签: apache-kafka kafka-consumer-api

如果Kafka使用者在同步模式下使用消息,但是其相关的下游服务已损坏(例如,无法连接到DB)。 Kafka协调员不断触发小组再平衡,最终所有消费者会死吗?

1 个答案:

答案 0 :(得分:0)

就消费者对心跳间隔的反应而言,Kafka不会进行重新平衡。如果假设您的消费者未能对Zookeeper做出心跳响应,则Kafka会认为该消费者已经死亡并执行重新平衡。它基于几个属性here

heartbeat.interval.ms

  

使用Kafka的群组管理设施时,消费者协调员心跳之间的预期时间。心跳用于确保消费者的会话保持活动状态,并在新消费者加入或离开小组时促进重新平衡。该值必须设置为低于session.timeout.ms,但通常应设置为不大于该值的1/3。可以将其调整得更低,以控制正常的重新平衡所需的时间。

session.timeout.ms

  

使用Kafka的群组管理工具时,超时用于检测用户失败。消费者定期发送心跳,以向经纪人表明其活跃程度。如果在此会话超时到期之前,代理未收到任何心跳信号,则代理将把该使用者从组中删除并启动重新平衡。请注意,该值必须在group.min.session.timeout.ms和group.max.session.timeout.ms

在代理配置中配置的允许范围内。

zookeeper.session.timeout.ms

  

ZooKeeper会话超时。如果消费者在这段时间内没有对ZooKeeper进行心跳检查,则认为它已经死了,并且将会发生重新平衡。