Zookeeper選舉機制

1.Zookeeper選舉機制

何時須要進行選舉?服務器

當Zookeeper集羣中的一臺服務器出現如下兩種狀況之一時,須要進行Leader選舉:大數據

1)服務器初始化啓動spa

2)服務器運行期間沒法和Leader保持鏈接server

怎樣進行選舉?class

1.服務器初始化啓動的Leader選舉集羣

前提:至少須要兩臺服務器,當只有一臺服務器時,其單獨沒法進行Leader選舉,當有兩臺服務器時,而且他們之間能夠相互通訊,此時才能進入選舉狀態統計

選舉過程:通信

1)每臺服務器發出本身的投票。初始投票每臺服務器都會投本身,投票內容爲(myidZXIDEpoch數據

2)接收來自各個服務器的投票。每臺服務器接收到其餘服務器的投票後,首先判斷該投票的有效性(根據Epoch判斷是否爲本輪投票,是否來自LOOKING狀態的服務器)tab

3)處理投票。針對接收到的每個投票,都須要將該投票與本身的投票進行PK,規則以下:

1)首先檢查ZXID,ZXID大的服務器優先做爲Leader

2)ZXID相同,myid大的服務器做爲Leader

4)將投票的處理結果發送給其餘服務器,進行從新投票。

5)統計投票結果。若超過半數的服務器接受到相同的投票信息,則即可以認爲選出了Leader。

6)改變服務器狀態。一旦肯定了Leader,每臺服務器根據選舉結果,更新本身的狀態爲Leader或是Follower。

//啓動的順序不一樣,選舉的結果有可能不一樣

2.服務器運行期間的Leader選舉

前提:Leader服務器掛了。在服務器運行期間,Follower服務器掛掉不會影響Leader,只有當Leader服務器掛掉,纔會進入選舉狀態。此時,整個集羣暫停對外的服務,進入選舉狀態。

選舉過程:

1)變動狀態。Leader掛掉,其餘的Observer服務器都會將本身的服務器狀態變動爲Looking,並進入選舉過程。

。。。與初始化啓動選舉過程一致

名詞:

1)Looking:尋找Leader狀態。擁有此狀態及服務器會進入Leader選舉狀態

2)Follower:跟隨者狀態。代表當前服務器的角色爲Follower

3)Leading:領導者狀態。代表當前服務器的角色爲Leader

4)Observing:觀察者狀態。表名當前服務器的角色爲Observer

myid:服務器ID,編號越大在選舉中所佔權重越大

ZXID:服務器中存放的最大數據ID,值越大代表數據越新,在選舉中所佔權重越大。

Epoch:邏輯時鐘,每一輪投票過程當中邏輯時鐘必須是相同的,每投完一輪這個數值就會增長。

相關文章
相關標籤/搜索