动物园管理员和卡夫卡的领导人选举

nat*_*han 6 apache-kafka apache-zookeeper

一个问题困扰了我很久。我知道动物园管理员中存在领导选举。假设我们有一个与 Zookeeper ensemble 连接的 Kafka 集群。

所以我的理解是,Ensemble 中有一个 zookeeper 领导者,Kafka 集群中也有一些“分区领导者”。并且Kafka分区leader是通过Zookeeper API选举出来的。这样对吗 ?

另一个问题,master/worker 与 leader/follower 基本相同吗?

fre*_*ver 6

  1. Zookeeper leader选举与Kafka分区leader选举无关,反之亦然。
  2. Kafka分区leader由Controller选举,Controller是Zookeeper的路径/Controller/2中最先注册的Broker,2是broker.id。当broker崩溃时,这个broker中的leader分区(或者leader副本)会被Controller切换,Controller会选择ISR中的一个replica作为分区leader。如果此分区离线(所有副本不可用),则此分区不能用于写入或读取。如果你设置了unclean.leader.election.enable=true,那么第一个可用的副本将被选为分区领导者,无论它是否在 ISR 中。所以有些消息可能会丢失。
  3. Kafka 和 Zookeeper 使用领导者/追随者,而不是主人/工人


ame*_*tic 2

Kafka中的分区领导者选举不是通过zookeeper API完成的,实际上,活动分配副本中的第一个副本将被选举为每个分区的领导者。

至于master/worker的事情,据我所知,许多开源已经用leader/replica或primary/replica取代了旧的术语,所以基本上,它们是相同的。