ZooKeeper 選舉機制

來源:互聯網
上載者:User

標籤:返回   邏輯   編號   更新   概念   leading   權重   fas   stl   

ookeeper 預設的演算法是 FastLeaderElection,採用投票數大於半數則勝出的邏輯。
6.1 . 概念
伺服器 ID
比如有三台伺服器,編號分別是 1,2,3。編號越大在選擇演算法中的權重越大。
選舉狀態
LOOKING,競選狀態。
FOLLOWING,隨從狀態,同步 leader 狀態,參與投票。
OBSERVING,觀察狀態,同步 leader 狀態,不參與投票。LEADING,領導者狀態。
資料 ID
伺服器中存放的最新資料 version。
值越大說明資料越新,在選舉演算法中資料越新權重越大。邏輯時鐘
也叫投票的次數,同一輪投票過程中的邏輯時鐘值是相同的。每投完一次票這個資料就會增加,然後與接收到的其它伺服器返回的投票資訊中的數值相比, 根據不同的值做出不同的判斷。

6.2 . 全新叢集選舉
假設目前有 5 台伺服器,每台伺服器均沒有資料,它們的編號分別是
1,2,3,4,5,按編號依次啟動,它們的選擇舉過程如下:
l 伺服器 1 啟動,給自己投票,然後發投票資訊,由於其它機器還沒有啟動所以它收不到反饋資訊,伺服器 1 的狀態一直屬於 Looking。
l 伺服器 2 啟動,給自己投票,同時與之前啟動的伺服器 1 交換結果,由於伺服器 2 的編號大所以伺服器 2 勝出,但此時投票數沒有大於半數, 所以兩個伺服器的狀態依然是 LOOKING。
l 伺服器 3 啟動,給自己投票,同時與之前啟動的伺服器 1,2 交換資訊, 由於伺服器 3 的編號最大所以伺服器 3 勝出,此時投票數正好大於半數, 所以伺服器 3 成為領導者,伺服器 1,2 成為小弟。
l 伺服器 4 啟動,給自己投票,同時與之前啟動的伺服器 1,2,3 交換資訊, 儘管伺服器 4 的編號大,但之前伺服器 3 已經勝出,所以伺服器 4 只能成為小弟。
l 伺服器 5 啟動,後面的邏輯同伺服器 4 成為小弟。
6.3 . 非全新叢集選舉
對於運行正常的 zookeeper 叢集,中途有機器 down 掉,需要重新選舉時, 選舉過程就需要加入資料 ID、伺服器 ID 和邏輯時鐘。
資料 ID:資料新的 version 就大,資料每次更新都會更新 version。伺服器 ID:就是我們配置的 myid 中的值,每個機器一個。
邏輯時鐘:這個值從 0 開始遞增,每次選舉對應一個值。 如果在同一次選舉中,這個值是一致的。
這樣選舉的標準就變成:
1、邏輯時鐘小的選舉結果被忽略,重新投票;
2、統一邏輯時鐘後,資料 id 大的勝出;
3、資料 id 相同的情況下,伺服器 id 大的勝出; 根據這個規則選出 leader。

ZooKeeper 選舉機制

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.