在一个月黑风高的夜晚,突然收到现网生产环境Kafka消息积压的告警,梦中惊醒啊,马上起来排查日志。
问题现象
消费请求卡死在查找Coordinator
Coordinator为何物?Coordinator用于管理Consumer Group中各个成员,负责消费offset位移管理和Consumer Rebalance。Consumer在消费时必须先确认Consumer Group对应的Coordinator,随后才能join Group,获取对应的topic partition进行消费。
那如何确定Consumer Group的Coordinator呢?分两步走:
1、一个Consumer Group对应一个__consumers_offsets的分区,首先先计算Consumer Group对应的__consumers_offsets的分区,计算公式如下:
__consumers_offsets partition# = Math.abs(groupId.hashCode() % groupMetadataTopicPartitionCount,其中groupMetadataTopicPartitionCount由offsets.topic.num.partitions指定。
2、1中计算的该partition的leader所在的broker就是被选定的Coordinator。
定位过程
Coordinator节点找到了,现在看看Coordinator是否有问题:

本文分析了一次Kafka消费卡死的故障案例,详细解释了Consumer如何通过Coordinator进行消费,以及Coordinator选举过程中可能出现的问题。文章揭示了网络异常引发的Controller故障及解决思路。
1686

被折叠的 条评论
为什么被折叠?



