淺談zk(4).leader如何選舉?
阿新 • • 發佈:2019-02-10
如果leader掛了怎麼辦? 當然是重新選舉一個新的leader呀, 選舉流程如下:
1)、所有當前server向所有節點廣播訊息,去竟選leader
2)、收到回執
3)、向小於或等於當前節點編號的節點發送廣播
4)、比較投票數, 如果獲得的票數>n/2+1,則推舉為leader
5)、被推舉的節點狀態由looking->leader
舉例:
叢集有5臺機器,標號分別為 0~5, leader為4,假如4掛掉了,需要重新選舉新的leader,流程如下:
1、序號為1、2、3、5 裝置首次相互廣播, 都去竟選leader,
廣播的時候把自己的代號傳遞出去
2、廣播後,大家都會收到回執
1號: 1、2、3、5
2號: 1、2、3、5
3號:1、2、3、5
5號:1、2、3、5
3、 首輪廣播完畢後,各自節點都收到回執, 進行2輪廣播
廣播原則是向小於或等於當前節點的裝置進行廣播,
2輪廣播後收到的回執
1號: 1、2、3、5
2號: 2、3、5
3號: 3、5
5號: 5
3、比較投票數, 得票數>n/2+1,推舉為leader
很顯然,經過2輪投票選舉,1號的得票數為4>4/2+1, 被推舉為leader。
恭喜1號。