我了解生产者/消费者需要与经纪人交谈以了解负责分区的负责人。经纪人与zk交谈以告知他们已加入集群。
是真的吗
经纪人知道谁是zk中给定分区的领导者
zk检测到经纪人离开/死亡。然后,它重新选举领导者并将新的领导者信息发送给所有经纪人
题:
为什么我们需要经纪人互相沟通?只是
这样就可以移动分区,也可以相互查询元数据。如果是这样,元数据交换的示例将是什么
最佳答案
生产者/消费者从其中一个代理请求元数据(每个代理都对其进行缓存),这就是他们知道谁是分区领导者的方式。
关于“是否确实如此”部分:
借助zk和其中之一,经纪人知道谁是给定分区的领导者。更准确地说,其中一个决定谁将成为领导者。该经纪人称为控制人。连接到动物园管理员的第一个经纪人成为控制者,他的角色是确定哪个经纪人将成为领导者,哪个经纪人将成为复制者,并告知他们有关信息。控制器本身不排除在此过程之外。它是像其他经纪人一样担负着选择领导者和复制品的特殊职责
zk确实可以检测到经纪人去世/离开的时间,但它不会重选领导者。这是控制者的责任。当其中一个代理离开集群时,控制器从zk获取信息并开始重新分配
关于您的问题-经纪人之间确实进行了交流(副本正在读取领导者的消息,控制器正在向其他经纪人通知有关更改),但是他们之间并不交换元数据-他们将元数据写入动物园管理员
关于apache-kafka - 卡夫卡经纪人间沟通,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52637490/