分区的Leader副本选举对用户是完全透明的,它是由Controller独立完成的。 你需要回答的是,在哪些场景下,需要执行分区Leader选举。每一种场景对 应于一种选举策略。
1,OfflinePartition Leader选举:每当有分区上线时,就需要执行Leader 选举。所谓的分区上线,可能是创建了新分区,也可能是之前的下线分区重新 上线。这是最常见的分区Leader选举场景。
2,ReassignPartition Leader 选举:当你手动运行
Kafka-reassign-partitions 命令,或者是调用 Admin 的
alterPartitionReassignments方法执行分区副本重分配时,可能触发此类选 举。假设原来的AR是[1, 2, 3], Leader是1,当执行副本重分配后,副本集 合AR被设置成[4, 5, 6],显然,Leader必须要变更,此时会发生Reassign Partition Leader 选举。
3,PreferredReplicaPartition Leader 选举:当你手动运行
Kafka-preferred-replica-election 命令,或自动触发了 Preferred Leader 选举时,该类策略被激活。所谓的Preferred Leader,指的是AR中的第一个 副本。比如 AR 是[3, 2, 1],那么,Preferred Leader 就是 3。
4、ControlledShutdownPartitionLeader 选举:当 Broker 正常关闭时,该 Broker上的所有Leader副本都会下线,因此,需要为受影响的分区执行相应 的Leader选举。
这4类选举策略的大致思想是类似的,即从AR中挑选首个在ISR中的副本, 作为新Leader。
Was this helpful?
0 / 0