1. 程式人生 > >主要負責選舉當前broker為lead的過程監控epoch的

主要負責選舉當前broker為lead的過程監控epoch的

負責 and 通知 進行 經歷 oar machine lead zook

根據相關的上下文,創建KafkaController對象,引入多個監聽器監聽broker,topic,partition以及副本的狀態變化。
ZookeeperLeaderElector:
主要負責選舉當前broker為lead的過程,同時,如果出現異常情況轉移lead選舉權。
ReplicaStateMachine:
主要負責broker的副本狀態變化跟蹤與重新分配的工作
PartitionStateMachine:
主要負責topic與partition的狀態變化跟蹤與重新分配的工作

ZookeeperLeaderElector詳解
當前broker節點成為控制節點的流程
1.註冊controller epoch 的監聽者,用來監控epoch的選舉

2.增加controller epoch的值
3.初始化 controller的上下文,用來緩存當前的topics,活著的broker與每個online的partitions的leader
4.啟動controller的channel manager
5.啟動 replica state machine
6.啟動 partition state machine
如果在這個過程中出現異常情況,此節點將放棄成為controller。其他的broker將觸發選舉動作,將接替成為controller。
ReplicaStateMachine詳解
將會啟動broker副本狀態變化監聽程序
1.當OnlinePartition狀態變化例如(新建partition,offlinepartition),將觸發狀態變化通知
2.檢查是否有需要重新分配的partition給最近啟動的broker,從而進行分配調整。
在此過程中,不會更新topic/partition的leader/isr緩存,原因在於PartitionStateMachine會被觸發,他會去負責相關工作。
partition state machine詳解
1.創建新的topic
a)partitionStateMachine註冊topic信息
b)創建新的partition,將partition設置為NewPartition 狀態,再講其NewPartition->OnlinePartition 狀態
2.分區調整
partition state machine將註冊一個reassigned partitions監聽器,用來調整partition。當admin開始調整分區的時候,會創建zk的/admin /reassign_partitions,從而會觸發zk此目錄的監聽器,開始進行分區調整
1)用OAR + RAR副本組修改並分配副本列表.
2)當處於OAR + RAR時,發送LeaderAndIsr請求給每個副本.
3)副本處於RAR – OAR -> 調用方法NewReplica
4)等待直到新的副本加入isr中
5)副本處於RAR -> 調用方法OnlineReplica
6)設置AR to RAR並寫到內存中,將RAR擴容
7)如果當前的lead不再RAR中,從RAR中選舉一個新lead,並發送LeaderAndIsr信息。
8)對於處於OAR – RAR的副本 -> Offline (強制這些副本從isr重剔除)
9)將處於OAR – RAR的副本 ->NonExistentReplica ,並在物理硬盤上面刪除對應的文件數據
10)在zk上修改AR到RAR中。
11)更新/admin/reassign_partitions下面的信息,將刪除對應的partition信息
12)當新的lead選完之後,同時,也會將更新的副本與isr的信息的變化信息,通知給每一個broker
例子:
例如, if OAR = {1, 2, 3} and RAR = {4,5,6}, 在zk上重分配副本和領導者/is這些值可能經歷以下轉化。
AR leader/isr
{1,2,3} 1/{1,2,3} (初始化狀態)
{1,2,3,4,5,6} 1/{1,2,3} (step 2)
{1,2,3,4,5,6} 1/{1,2,3,4,5,6} (step 4)
{1,2,3,4,5,6} 4/{1,2,3,4,5,6} (step 7)
{1,2,3,4,5,6} 4/{4,5,6} (step 8)
{4,5,6} 4/{4,5,6} (step 10)

http://www.79cy.com/sell/201807/01/1302138.html
http://www.79cy.com/news/201807/01/1014768.html
http://www.79cy.com/news/201807/01/1014767.html

主要負責選舉當前broker為lead的過程監控epoch的