当Kafka经纪人在消费者群体协调方面失败时会发生什么?

时间:2017-08-08 10:56:49

标签: apache-kafka kafka-consumer-api

如上所述。假设我有3个经纪人。当我作为消费者联系时,其中一个经纪人成为集团协调员。然后我杀了一个经纪人(或者它死了)。如果我尝试立即重新连接到代理,我会得到协调器不可用错误。

Kafka如何知道经纪人已经去世,分配新协调员需要多长时间?它是如何配置的?

这应该在文档中,但我找不到它。

2 个答案:

答案 0 :(得分:0)

我相信一个动物园管理员处理你要求的一切

Apache Kafka的一个关键依赖是Apache Zookeeper,它是一个分布式配置和同步服务。 Zookeeper充当Kafka经纪人和消费者之间的协调界面。 Kafka服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如有关主题,代理,消费者偏移(队列读取器)等的信息。

由于所有关键信息都存储在Zookeeper中,并且它通常在整个集合中复制这些数据,因此Kafka broker / Zookeeper的失败不会影响Kafka集群的状态。一旦Zookeeper重新启动,Kafka将恢复状态。这为Kafka提供了零停机时间。 Kafka经纪人之间的领导者选举也是在领导者失败的情况下使用Zookeeper完成的。
我建议浏览博客

The role of Apache ZooKeeper in Apache Kafka

答案 1 :(得分:0)

我建议您阅读以下 StackOverflow 帖子和 Kafka Confluence Wiki 以了解内幕。

Coordinator Failover

Group Coordinator and Consumer Group

Kafka Client-side Assignment Proposal

Kafka的新版本略有不同,即__consumer_offsets(用于存储消费者的偏移)存储在代理而不是Zookeeper中,协调器+ Zookeeper用于维护所声明的消费者群体。