首页 > 解决方案 > Kafka 经纪人间通信

问题描述

我了解生产者/消费者需要与经纪人交谈以了解分区的领导者。经纪人与 zk 交谈,告诉他们他们加入了集群。

是不是真的

  1. 经纪人从 zk 知道谁是给定分区的领导者
  2. zk 检测到经纪人离开/死亡。然后它重新选举领导者并向所有经纪人发送新的领导者信息

问题:

  1. 为什么我们需要经纪人相互沟通?只是这样tehy可以移动分区还是它们也可以相互查询元数据。如果是这样,元数据交换的例子是什么

标签: apache-kafka

解决方案


生产者/消费者从一个代理请求元数据(因为他们每个人都缓存它),这就是他们知道谁是分区领导者的方式。

关于“这是真的”部分:

  1. 由于 zk 和其中之一,经纪人知道谁是给定分区的领导者。更准确地说,他们中的一个决定谁将成为领导者。该代理称为控制器。第一个连接到 zookeeper 的代理成为控制器,他的角色是决定哪个代理将成为领导者,哪些将成为副本,并通知他们。控制器本身不排除在此过程之外。它是一个像任何其他代理一样具有选择领导者和副本的特殊责任的代理
  2. zk 确实检测到经纪人何时死亡/离开,但它不会重新选举领导者。这是控制器的责任。当其中一个代理离开集群时,控制器从 zk 获取信息并开始重新分配

关于您的问题-代理确实相互通信(副本正在读取来自领导者的消息,控制器正在通知其他代理有关更改),但它们之间不交换元数据-它们将元数据写入动物园管理员


推荐阅读