背景:
集群中超過半數節點擊舉, 則成為 leader, 其他為 follower
新加入節點會重新發起選舉
節點總是優先選舉自己, 選舉失敗後, 選舉比自己 id 大的節點
leader 選舉出來後, 服從多數原則, 新加入的都是 follower
這裡舉例一共 5 個 zk 節點. myid 1 2 3 4 5
節點 1 啟動, 發起選舉
節點 1 投票給自己
投票數 1 沒有超過半數節點 ( 2.5 個), 選舉失敗, 當前是 looking 狀態
節點 2 啟動, 發起選舉
節點 2 投票給自己
節點 1 發現節點 2 id 大, 投票給節點 2
節點 2 總票數 2, 投票數沒有超過半數節點 ( 2.5 個), 選舉失敗, 節點 1 2 當前是 looking 狀態
節點 3 啟動, 發起選舉
節點 3 投票給自己
節點 1 2 發現節點 3 id 大, 投票給節點 3
節點 3 總票數 3, 投票數超過半數節點 ( 2.5 個), 選舉成功
節點 3 成為 leader, 是 leading 狀態,節點 1 2 由 looking 狀態變為 following 狀態
節點 4 啟動, 發起選舉
節點 4 投票給自己
節點 1 2 是 following 狀態, 不修改投票資訊, 仍然投給 3
此時節點 3 票數 3, 節點 4 服從多數, 投票給節點 3,節點 4 修改為 following 狀態
節點 5 啟動, 發起選舉
同理 節點4, 不影響之前的 leader 投票數, 節點 5 服從多數, 投票給節點 3
節點全部啟動完畢, 選舉結束
zookeeper選舉機制
fastleaderelection演算法通過非同步的通訊方式來收集其它節點的選票,同時在分析選票時又根據投票者的當前狀態來作不同的處理,以加快leader的選舉程序。每個在zookeeper伺服器啟動先讀取當前儲存在磁碟的資料,zookeeper中的每份資料都有乙個對應的id值,這個值是依次遞增的...
Zookeeper 選舉機制
選舉訊息內容 fastleaderelection 選舉演算法介紹 伺服器id 編號。比如有三颱伺服器,編號分別是1,2,3。編號越大在選擇演算法中的權重越大。資料id。伺服器中存放的最大資料id。值越大說明資料越新,在選舉演算法中資料越新權重越大。邏輯時鐘,用來判斷多個投票是否在同一輪選舉週期中,...
zookeeper選舉機制
在分布式系統中選主最直接或者傳統的方法是直接選定集群的乙個節點為 leader,其它的節點為 follower,這樣引入的乙個問題是如果 leader節點掛掉,整個集群就掛掉了。所以我們需要一種自動選主演算法,如果 leader節點掛掉,則從 follower節點中選出乙個主節點。選舉階段 lead...