原文链接:https://cwiki.apache.org/confluence/display/KAFKA/Replication+tools#Replicationtools-2.PreferredReplicaLeaderElectionTool
这工具做了啥?
为了支持replication功能,每一个partition可以有多个replica。一个partition的replica列表称为"assigned replicas"。在这个列表中的第一个replica称为"preferred replica"。当创建topic/partitions时,Kafka要确保所有的topic的"preferred replica"要平均的分布在Kafka集群中。在理想的场景中,一个partition的leader应该是"preferred replica"。这保证了leadership带来的负载可以在整个集群中进行均衡。然而,如果有broker shutdown了(比如controlled shutdown,crash,机器故障)的话,那么leadership负载就不均衡了(imbalance)。此工具就是用来在整个集群中恢复leadership的均衡。下面是此工具的操作步骤:
1,此工具更新ZK的路径 "admin/preferred_replica_election",写入一个topic的partition的列表,说明哪些partition的leader需要进行变化。
2,controller对上面说的那个路径进行监听,当数据更新时进行触发,controller会从ZK中读取相应的数据。