【分佈式】Zookeeper的Leader選舉-選舉過程介紹

【分佈式】Zookeeper的Leader選舉-選舉過程介紹

    選舉開始,每臺服務器都有一張選票,並且會投自己,選自己當選Leader。
    在投票完成後,會將投票信息發送給集羣中的所有服務器(觀察者服務器不參與選舉)。

選票由兩部分組成:服務器唯一標識myid和事務編號zxid,即(myid,xzid)。

zxid越大說明數據越新,在選擇算法中的權重越大。
myid越大,在選擇算法中的權重越大。

比較選票時會先比較zxid,zxid大的獲勝,zxid相同時比較myid,myid大的獲勝,勝利方選票不變,失敗方選票將變成與勝利方一樣,並再次將該投票發送出去。

當有過半機器收到相同的投票信息,則選出Leader,選舉結束。

例如:
有A,B,C三臺服務器參與競選,myid分別爲1,2,3,zxid分別爲9,9,8。
選舉過程爲:
A收到的選票爲(2,9),(3,8),與自己的(1,9)比較,選票變爲(2,9),投出。
B收到的選票爲(1,9),(3,8),與自己的(2,9)比較,結果不變。
C收到的選票爲(1,9),(2,9),與自己的(3,8)比較,選票變爲(2,9),投出。

此時B機器擁有過半選票,當選爲Leader。

由上面規則可知,通常那臺服務器上的數據越新(ZXID會越大),其成爲Leader的可能性越大,也就越能夠保證數據的恢復。如果ZXID相同,則myid越大機會越大。

參考資料:

http://www.cnblogs.com/leesf456/p/6107600.html
https://www.cnblogs.com/yuyijq/p/4116365.html
http://www.cnblogs.com/ASPNET2008/p/6421571.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章