分區 leader 副本的選舉由控制器負責具體實施。當創建分區(創建主題或增加分區都有創建分區的動作〉或分區上線(比如分區中原先的 leader 副本下線,此時分區需要選舉 個新的leader 上線來對外提供服務)的時候都需要執行 leader 的選舉動作,對應的選舉策略為OfftlinePartitionLeaderElectionStrategy 這種策略的基本思路是按照 AR 集合中副本的順序查找第一個存活的副本,並且這個副本在 ISR 集合中。 一個分區 AR 集合在分配的時候就被指定,並且只要不發生重分配的情況,集合內部副本的順序是保持不變的,而分區的 ISR 集合中副本的順序可能會改變。
注意這里是根據 AR 的順序而不是 ISR 的順序進行選舉的。舉個例子 集群中有 個節
broker0 broker1 broker2 在某時刻具有 3個分區且副本因子為3的 主題 topic-leader的具體信息如下