Zookeeper的Leader選舉

投票時:使用(myid, ZXID)來表示html

處理投票時:服務器

· 優先檢查ZXID。ZXID比較大的服務器優先做爲Leader。數據結構

· 若是ZXID相同,那麼就比較myid。myid較大的服務器做爲Leader服務器。app

 

Leader選舉實現細節server

  1. 服務器狀態htm

  服務器具備四種狀態,分別是LOOKING、FOLLOWING、LEADING、OBSERVING。blog

  LOOKING:尋找Leader狀態。當服務器處於該狀態時,它會認爲當前集羣中沒有Leader,所以須要進入Leader選舉狀態。事務

  FOLLOWING:跟隨者狀態。代表當前服務器角色是Follower。io

  LEADING:領導者狀態。代表當前服務器角色是Leader。集羣

  OBSERVING:觀察者狀態。代表當前服務器角色是Observer。

  2. 投票數據結構

  每一個投票中包含了兩個最基本的信息,所推舉服務器的SID和ZXID,投票(Vote)在Zookeeper中包含字段以下

  id:被推舉的Leader的SID。

  zxid:被推舉的Leader事務ID。

  electionEpoch:邏輯時鐘,用來判斷多個投票是否在同一輪選舉週期中,該值在服務端是一個自增序列,每次進入新一輪的投票後,都會對該值進行加1操做。

  peerEpoch:被推舉的Leader的epoch。

  state:當前服務器的狀態。

 

https://leesf456.cnblogs.com/p/6107600.html?from=timeline&isappinstalled=0

相關文章
相關標籤/搜索