卡夫卡经纪人间交流

时间:2018-10-04 00:50:22

标签: apache-kafka

我了解生产者/消费者需要与经纪人交谈以了解负责人的划分。经纪人与zk交谈以告知他们已加入集群。

是真的

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

问题:

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

2 个答案:

答案 0 :(得分:4)

生产者/消费者从其中一个代理那里请求元数据(因为每个代理都对其进行缓存),这就是他们如何知道谁是分区负责人的原因。

关于“是否确实如此”部分:

  1. 由于zk和其中之一,经纪人知道谁是给定分区的领导者。更准确地说,其中一个决定谁将成为领导者。该经纪人称为控制人。连接到动物园管理员的第一个经纪人成为控制者,他的角色是确定哪个经纪人将成为领导者,哪个经纪人将成为复制者,并告知他们有关信息。控制器本身不排除在此过程之外。它是一个像其他经纪人一样担负着选择领导者和副本者的特殊职责
  2. zk确实可以检测到经纪人去世/离开的时间,但它不会重选领导者。这是控制者的责任。当其中一个经纪人离开集群时,控制器从zk获取信息并开始重新分配

关于您的问题-经纪人之间确实进行了交流(副本正在读取领导者的消息,控制器正在向其他经纪人通知有关更改),但是他们之间并不交换元数据-他们将元数据写入动物园管理员

答案 1 :(得分:1)

代理是在Kafka群集中运行的Kafka服务器

“一个Kafka集群由多个Kafka经纪人组成。每个Kafka经纪人都有一个唯一的ID(数字)。Kafka经纪人包含主题日志分区。连接到一个经纪人会将客户端引导到整个Kafka集群。”

每个代理都拥有多个分区,每个分区都可以是主题的领导者或副本。所有对主题的写入和读取都经过领导者,领导者协调使用新数据更新副本。如果领导者失败,则副本将接任新领导者。

相关问题