1. 程式人生 > 其它 >zookeeper選舉機制

zookeeper選舉機制

zk選舉機制

sid:伺服器id,用來唯一標識一臺zookeeper叢集中的機器,每臺機器不能重複,和myid一致。

zxid:事務id,zxid是一個事務id,用來標識一次伺服器狀態的變更。在某一時刻,叢集中的每臺機器的zxid值不一定完全一致,這和zookeeper伺服器對於客戶端更新請求,的處理邏輯有關。

epoch:每個leader任期的代號,沒有leader時同一輪投票過程中的邏輯時鐘值是相同的,每投完一次票這個資料就會增加。

1.服務1啟動,發起一次選舉,伺服器1自己投自己一票,此時伺服器1票數一票,不夠半數以上3票,選舉無法完成,伺服器1狀態保持為looking。

2.伺服器2啟動,再發起一次選舉,伺服器1和2分別投自己一票並交換選舉資訊,此時伺服器1發現伺服器2的myid比自己目前投票推舉的(伺服器1)大,更改選票為推舉伺服器2,此時伺服器1票數0票,伺服器2票2票,沒有半數以上結果,選舉無法完成,伺服器1,2狀態保持looking。

3.伺服器3啟動,發起一次選舉,此時伺服器1和2都會更改選舉票為伺服器3,此時投票結果:

伺服器1為0票,伺服器2為0票,伺服器3為3票,伺服器3票數過半,當選leader,伺服器1,2更改狀態為following,伺服器3為leading。

4.伺服器4啟動,發起一次選舉,此時伺服器123已經不是looking狀態,不會更改選舉資訊,交換選票資訊結果,伺服器3為3票,伺服器4為1票,此時伺服器4服從多數,更改選舉票為伺服器3,並更改狀態為following。

伺服器5啟動,同4一樣當小弟。

本文來自部落格園,作者:三號小玩家,轉載請註明原文連結:https://www.cnblogs.com/q1359720840/p/15893740.html