zookeeper 選舉策略

2021-10-23 06:53:55 字數 1259 閱讀 1467

zookeeper的核心以下三點 

1、paxos演算法

基於訊息傳遞的一致性演算法

參考 2、zab協議

zab借鑑了paxos演算法,但又不像paxos那樣,是一種通用的分布式一致性演算法。是為zookeeper設計的支援崩潰恢復的原子廣播協議。

leader的選舉過程:

3888埠(選舉leader)兩兩機器通訊 

只要任何人投票,就會觸發那個準leader發起自己的投票

推選制,先比較zxid(事務id),zxid相同,再比較myid(機器自己的id)

分以下兩種情況:

注意:zxid——集群中過半的機器產生的最大的事物id

1、第一次啟動集群

機器數量啟動過半了才能選出leader

假設機器node1( mid=1,zid=0);node2(mid=2,zid=0);node3 (mid=3,zid=0);node4 (mid=4,zid=0)。其中node1,node2,node3三颱機器啟動完,各自發出投票資訊,先比對zid都為0,無法選出;再比對mid大小   node3勝出被選為leader

2、重啟集群或者leader掛了

zookeeper機器集群之間都會保持1s一次的心跳,從leader同步最新的資料 

假如 某乙個時刻node3機器 (leader)  zid增長到8(事物id)突然掛了, node4 zid =7 沒來的急同步leader資訊,先發現leader掛了。

node4(mid=4,zid=7)向node1,node2發起自身投票為leader

假如node2(mid=2,zid=8)接收node4(mid=4,zid=7)資訊。發現自身zid,node2(zid=8) > node4(zid=7),反饋給node4說哥們兒不行啊,你的票資訊過期了;同時node2(mid=2,zid=8)被動觸發給自己投票當選leader並廣播投票資訊(mid=2,zid=8)給其他機器,同時自身加一票

node1(mid=1,zid=8)接收到node2(mid=2,zid=8)投票資訊。zid相等;node1(mid=1)node4(mid=4,zid=7)接收到node2(mid=2,zid=8)投票資訊。zid相等;node4(zid=7)最終node2此輪競爭中3票勝出,當選leader

Zookeeper選舉原理

作為乙個分布式應用程式協調服務,在大型 中,其本身也是集群部署的,安裝zookeeper的時候最好是單數節點,因為要選舉。zookeeper的leader節點是集群工作的核心,用來更新並保證leader和server具有相同的系統狀態,follower伺服器是leader的跟隨者,用於接收客戶端的請...

zookeeper選舉機制

fastleaderelection演算法通過非同步的通訊方式來收集其它節點的選票,同時在分析選票時又根據投票者的當前狀態來作不同的處理,以加快leader的選舉程序。每個在zookeeper伺服器啟動先讀取當前儲存在磁碟的資料,zookeeper中的每份資料都有乙個對應的id值,這個值是依次遞增的...

Zookeeper 選舉機制

選舉訊息內容 fastleaderelection 選舉演算法介紹 伺服器id 編號。比如有三颱伺服器,編號分別是1,2,3。編號越大在選擇演算法中的權重越大。資料id。伺服器中存放的最大資料id。值越大說明資料越新,在選舉演算法中資料越新權重越大。邏輯時鐘,用來判斷多個投票是否在同一輪選舉週期中,...