Kafka上的分区如何选择Leader?

在Kafka的一个分区(partition)中,Leader的选择主要依赖于Zookeeper:

1. 通过Zookeeper存储replicas

Kafka会将每个partition的replicas(复制副本brokers)信息存储在Zookeeper中。

2. Zookeeper选举Leader

当partition的Leader broker 离线或者失效时,ZooKeeper会自动在replicas列表里选举一个新的Leader。

3. Prefer broker with mostlog caches

Zookeeper倾向于选择那些有最多立即可用写入缓存的broker作为Leader。

4. 轮询选择

如果有多个broker的log cache一样多,Zookeeper则会轮询选择一个作为Leader。

5. 投票选择

在配置中也可以指定以投票的方式选择partition的Leader。

6. 设置优先级

可以设置不同优先级的broker,优先级高的更易当选Leader。

Kafka上的分区选择Leader主要途径是:

  1. 通过ZooKeeper存储replicas信息
  2. ZooKeeper根据replicas列表选择
  3. 倾向选择log cache多的broker
  4. 按照轮询或者投票机制选择
  5. 按优先级设置权重选择

Zookeeper可以动态监控brokers的状况,并及时自动选择具备条件(如log cache多)的Broker作为Leader。

Kafka依赖Zookeeper存储replicas信息和进行Leader选举。主要机制是根据log cache多、轮询选择、按优先级选择。