2017-08-08 30 views
2

如上所述。假设我有3个经纪人。当我作为消费者联系时,其中一个经纪人成为集团协调员。然后我杀了一个经纪人(或者死了)。如果我尝试重新连接到经纪人,我会得到协调员不可用的错误。当卡夫卡经纪人在消费者群体协调方面失败时会发生什么?

卡夫卡如何知道经纪人死亡以及指定新协调员需要多长时间?它是如何配置的?

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

+0

什么是您使用的kafka版本? – marvel308

+0

您能否成功验证组协调器故障恢复?我有一个包含3个代理的测试拓扑,一旦消费者组协调器崩溃,主题就会正确地重新平衡,但消费者组停止接收消息。使用版本0.11.0.1 – Yamada

+0

@Yamada是的,但它需要时间。它取决于您使用的客户端在何种级别上运行。可以依靠协调员,或者在客户端手动完成。我遇到了这两个问题,并且导致了头痛的问题。 – deitch

回答

0

我相信一个动物园管理员处理你问

阿帕奇卡夫卡的关键依赖一切都是Apache的动物园管理员,这是一个分布式的配置和同步服务。 Zookeeper作为卡夫卡经纪人和消费者之间的协调接口。卡夫卡服务器通过Zookeeper集群共享信息。 Kafka在Zookeeper中存储基本元数据,例如有关主题,经纪人,消费者偏移量(队列读取器)等的信息。

由于所有关键信息都存储在Zookeeper中,并且它通常在其整个集群中复制这些数据,所以Kafka broker/Zookeeper的故障不会影响Kafka集群的状态。一旦Zookeeper重新启动,Kafka将恢复状态。这给Kafka带来零停机时间。卡夫卡经纪人之间的领导者选举也是通过在领导失败的情况下使用Zookeeper完成的。
我建议去通过博客

The role of Apache ZooKeeper in Apache Kafka

+0

@ marvel208 consumer_offsets存储在最新版本的Kafka 0.11.0.0版本的代理级别。所以,代理状态可以影响整个集群的状态。 – FindingTheOne

+0

@ marvel308不是真的。 Zookeeper只是状态存储(复制+一些逻辑)。但一个真正的经纪人担任协调员。我想知道卡夫卡如何管理对协调员领导失去的承认,如何分配一个新的协调员,以及如何配置它。 – deitch

+0

每个经纪人都有关于主题(和分区)及其领导人列表的信息,每当新领导人被选举或分区数目发生变化时,动物园管理人员都会随时更新。 – marvel308

0

我会推荐阅读以下StackOverflow的后和卡夫卡Confluence维客了解内部。

Coordinator Failover

Group Coordinator and Consumer Group

Kafka Client-side Assignment Proposal

有卡夫卡即__consumer_offsets的新版本轻微变化(用于存储消费者的偏移)被存储在代理而不是动物园管理员和协调+动物园管理员是用于维护消费者群体。

+0

中询问版本号时没有描述当协调员的经纪人失败时会发生什么情况。 – deitch

+0

我在这个[link](https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Detailed+Consumer+Coordinator+Design#KafkaDetailedConsumerCoordinatorDesign-10.OnCoordinatorFailover)上找到了协调器故障切换的内容。 – FindingTheOne

+0

更接近。我正在寻找实际的机制和配置控制。 – deitch