Zookeeper入門之六-ZK的選舉

ZK的選舉

先定義一些名詞:
投票Vote:

包含兩個主要信息哮幢,

  • zxid(事務ID,某個操作會有全局唯一的事務ID)志珍,
  • SID(當前機器的編號橙垢,集群內(nèi)唯一)

除了這兩個之外,還包括以下三個信息:

  • electionEpoch:類似于raft中的term伦糯,邏輯時鐘柜某,用于判斷多個投票是否在同一輪選舉周期中。該值在服務端是一個自增序列舔株,每次進入新一輪的投票后莺琳,都會對這個值進行+1操作
  • peerEpoch: 被推舉的leader的epoch
  • state:當前服務器的狀態(tài),詳見下
服務器狀態(tài):

LOOKING:尋找Leader狀態(tài)载慈,表示當前服務器認為集群中沒有l(wèi)eader惭等,因此需要進入Leader選舉流程

FOLLOWING:跟隨者狀態(tài),表示當前服務器是Follower

LEADING:領(lǐng)導者狀態(tài)办铡,表示當前服務器是Leader

OBSERVING: 觀察者狀態(tài)辞做,表示當前服務器角色是Observer

算法中的描述
  • vote_sid:接收到的投票中所推舉Leader服務器的sid
  • vote_zxid: 接收到的投票中所推舉Leader服務器的zxid
  • self_sid: 當前服務器本身的sid
  • self_zxid:當前服務器本身的zxid
選舉規(guī)則:
  1. 如果vote_zxid 大于self_zxid,那么認可當前收到的投票寡具,并再次將該投票發(fā)送出去
  2. 如果vote_zxid 小于self_zxid秤茅,那么堅持自己的投票,不做任何變更
  3. 如果vote_zxid等于self_zxid童叠,那么對比這兩者的sid
  4. 如果vote_sid大于self_sid框喳,那么認可當前的投票,并再次將該投票發(fā)送出去
  5. 如果vote_sid小于self_sid厦坛,那么堅持自己的投票五垮,不做任何變更。

通常來說杜秸,哪臺服務器上的數(shù)據(jù)越新放仗,那么就越有可能成為leader,因為zxid也越大撬碟。

zk只允許sid大的服務器主動和其他較小的sid服務器建立連接诞挨,否則斷開連接。服務器通過對比自己和遠程服務器的sid判斷是否接收連接請求呢蛤,如果當前服務器發(fā)現(xiàn)自己的sid較大惶傻,那么會斷開當前連接,然后自己主動去和遠程服務器建立連接其障。

投票只有來自于LOOKING服務器的才有效达罗。如果當前服務器不是LOOKING狀態(tài),說明已經(jīng)有Leader了,直接忽略這個投票粮揉,同時將leader信息以投票的方式發(fā)送出去巡李。

選舉輪次

也就是epoch(也稱為logicalclock),選舉的前提是在同一個epoch內(nèi)扶认,如果發(fā)現(xiàn)外部的epoch大于本身的侨拦,會立即更新自己的logicalclock,并清空已收到的投票辐宾。

只有在同一個選舉輪次的投票才是有效的投票狱从。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市叠纹,隨后出現(xiàn)的幾起案子季研,更是在濱河造成了極大的恐慌,老刑警劉巖誉察,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件与涡,死亡現(xiàn)場離奇詭異,居然都是意外死亡持偏,警方通過查閱死者的電腦和手機驼卖,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸿秆,“玉大人酌畜,你說我怎么就攤上這事∏溥矗” “怎么了桥胞?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長考婴。 經(jīng)常有香客問我贩虾,道長,這世上最難降的妖魔是什么蕉扮? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任整胃,我火速辦了婚禮颗圣,結(jié)果婚禮上喳钟,老公的妹妹穿的比我還像新娘。我一直安慰自己在岂,他們只是感情好奔则,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蔽午,像睡著了一般易茬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天抽莱,我揣著相機與錄音范抓,去河邊找鬼。 笑死食铐,一個胖子當著我的面吹牛匕垫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虐呻,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼象泵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了斟叼?” 一聲冷哼從身側(cè)響起偶惠,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎朗涩,沒想到半個月后忽孽,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡馋缅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年扒腕,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片萤悴。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡瘾腰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出覆履,到底是詐尸還是另有隱情蹋盆,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布硝全,位于F島的核電站栖雾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏伟众。R本人自食惡果不足惜析藕,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望凳厢。 院中可真熱鬧账胧,春花似錦、人聲如沸先紫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽遮精。三九已至居夹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背准脂。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工劫扒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人狸膏。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓粟关,卻偏偏與公主長得像,于是被迫代替她去往敵國和親环戈。 傳聞我的和親對象是個殘疾皇子闷板,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 【轉(zhuǎn)自】http://www.cnblogs.com/leesf456/p/6107600.html 一、前言 前...
    lxqfirst閱讀 830評論 0 0
  • 一院塞、前言 前面學習了Zookeeper服務端的相關(guān)細節(jié)遮晚,其中對于集群啟動而言,很重要的一部分就是Leader選舉拦止,...
    阿斯蒂芬2閱讀 17,622評論 4 19
  • 若進行Leader選舉县遣,則至少需要兩臺機器,這里選取3臺機器組成的服務器集群為例汹族。在集群初始化階段萧求,當有一臺服務器...
    白紙糊閱讀 960評論 0 1
  • 一夸政、Leader選舉過程 Leader選舉是保證分布式數(shù)據(jù)一致性的關(guān)鍵所在。當Zookeeper集群中的一臺服務器...
    yannhuang閱讀 1,222評論 0 2
  • 本文將從系統(tǒng)模型、序列化與協(xié)議坑资、客戶端工作原理耗帕、會話、服務端工作原理以及數(shù)據(jù)存儲等方面來揭示ZooKeeper的技...
    端木軒閱讀 3,784評論 0 42