青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

loop_in_codes

低調做技術__歡迎移步我的獨立博客 codemaro.com 微博 kevinlynx

圖解zookeeper FastLeader選舉算法

zookeeper配置為集群模式時,在啟動或異常情況時會選舉出一個實例作為Leader。其默認選舉算法為FastLeaderElection

不知道zookeeper的可以考慮這樣一個問題:某個服務可以配置為多個實例共同構成一個集群對外提供服務。其每一個實例本地都存有冗余數據,每一個實例都可以直接對外提供讀寫服務。在這個集群中為了保證數據的一致性,需要有一個Leader來協調一些事務。那么問題來了:如何確定哪一個實例是Leader呢?

問題的難點在于:

  • 沒有一個仲裁者來選定Leader
  • 每一個實例本地可能已經存在數據,不確定哪個實例上的數據是最新的

分布式選舉算法正是用來解決這個問題的。

本文基于zookeeper 3.4.6 的源碼進行分析。FastLeaderElection算法的源碼全部位于FastLeaderElection.java文件中,其對外接口為FastLeaderElection.lookForLeader,該接口是一個同步接口,直到選舉結束才會返回。同樣由于網上已有類似文章,所以我就從圖示的角度來闡述。閱讀一些其他文章有利于獲得初步印象:

主要流程

閱讀代碼和以上推薦文章可以把整個流程梳理清楚。實現上,包括了一個消息處理主循環,也是選舉的主要邏輯,以及一個消息發送隊列處理線程和消息解碼線程。主要流程可概括為下圖:

fle-flow.png

推薦對照著推薦的文章及代碼理解,不贅述。

我們從感性上來理解這個算法。

每一個節點,相當于一個選民,他們都有自己的推薦人,最開始他們都推薦自己。誰更適合成為Leader有一個簡單的規則,例如sid夠大(配置)、持有的數據夠新(zxid夠大)。每個選民都告訴其他選民自己目前的推薦人是誰,類似于出去搞宣傳拉攏其他選民。每一個選民發現有比自己更適合的人時就轉而推薦這個更適合的人。最后,大部分人意見一致時,就可以結束選舉。

就這么簡單。總體上有一種不斷演化逼近結果的感覺。

當然,會有些特殊情況的處理。例如總共3個選民,1和2已經確定3是Leader,但3還不知情,此時就走入LEADING/FOLLOWING的分支,選民3只是接收結果。

代碼中不是所有邏輯都在這個大流程中完成的。在接收消息線程中,還可能單獨地回應某個節點(WorkerReceiver.run):

recv.png

從這里可以看出,當某個節點已經確定選舉結果不再處于LOOKING狀態時,其收到LOOKING消息時都會直接回應選舉的最終結果。結合上面那個比方,相當于某次選舉結束了,這個時候來了選民4又發起一次新的選舉,那么其他選民就直接告訴它當前的Leader情況。相當于,在這個集群主從已經就緒的情況下,又開啟了一個實例,這個實例就會直接使用當前的選舉結果。

狀態轉換

每個節點上有一些關鍵的數據結構:

  • 當前推薦人,初始推薦自己,每次收到其他更好的推薦人時就更新
  • 其他人的投票集合,用于確定何時選舉結束

每次推薦人更新時就會進行廣播,正是這個不斷地廣播驅動整個算法趨向于結果。假設有3個節點A/B/C,其都還沒有數據,按照sid關系為C>B>A,那么按照規則,C更可能成為Leader,其各個節點的狀態轉換為:

state.png

圖中,v(A)表示當前推薦人為A;r[]表示收到的投票集合。

可以看看當其他節點已經確定投票結果時,即不再是LOOKING時的狀態:

state-ret.png

代碼中有一個特殊的投票集合outofelection,我理解為選舉已結束的那些投票,這些投票僅用于表征選舉結果。

當一個新啟動的節點加入集群時,它對集群內其他節點發出投票請求,而其他節點已不處于LOOKING狀態,此時其他節點回應選舉結果,該節點收集這些結果到outofelection中,最終在收到合法LEADER消息且這些選票也構成選舉結束條件時,該節點就結束自己的選舉行為。注意到代碼中會logicalclock = n.electionEpoch;更新選舉輪數

posted on 2014-10-19 15:58 Kevin Lynx 閱讀(4530) 評論(0)  編輯 收藏 引用 所屬分類: network

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美大胆成人| 欧美国产乱视频| 久久综合九色综合网站| 亚洲三级电影在线观看| 久久久99免费视频| 免费在线亚洲| 亚洲日韩欧美视频| 欧美紧缚bdsm在线视频| 亚洲激情在线激情| 99re6热在线精品视频播放速度| 欧美一区三区二区在线观看| 欧美一区二区三区在线看| 国产精品久久久久久久久久免费看| 99精品久久| 老司机凹凸av亚洲导航| 亚洲国产欧美国产综合一区| 欧美国产日产韩国视频| 在线视频你懂得一区二区三区| 亚洲欧美激情一区二区| 欧美激情片在线观看| 亚洲美女毛片| 欧美一区二区三区在线免费观看| 国产美女精品视频| 另类成人小视频在线| 亚洲一级网站| 欧美黑人多人双交| 亚洲欧美日韩精品综合在线观看| 国产精品久线观看视频| 久热精品在线视频| 亚洲欧美清纯在线制服| 亚洲国产精品高清久久久| 亚洲欧美精品在线观看| 亚洲国产高清视频| 国模吧视频一区| 久久午夜羞羞影院免费观看| 一区二区不卡在线视频 午夜欧美不卡'| 蜜桃av一区二区| 香蕉免费一区二区三区在线观看 | 久久午夜电影| 欧美成人福利视频| 久久久久久亚洲精品不卡4k岛国| 亚洲美女免费精品视频在线观看| 国产一区自拍视频| 国产精品亚洲欧美| 国产精品丝袜xxxxxxx| 欧美日韩天堂| 国产精品日日摸夜夜添夜夜av| 欧美精品九九| 欧美日韩精品是欧美日韩精品| 久久婷婷国产麻豆91天堂| 欧美在线视频全部完| 先锋a资源在线看亚洲| 亚洲愉拍自拍另类高清精品| 亚洲视频精选在线| 欧美一区二区三区啪啪| 欧美在线亚洲在线| 老鸭窝毛片一区二区三区| 快she精品国产999| 欧美日韩的一区二区| 欧美视频在线观看| 国内外成人在线| 一本色道久久加勒比精品| 亚洲视频精品| 久久久久久久精| 亚洲毛片在线| 久久久久久久性| 欧美日韩国产在线| 国产一区二区三区在线观看免费视频| 国产在线播放一区二区三区| 伊人激情综合| 亚洲免费综合| 亚洲第一搞黄网站| 性欧美8khd高清极品| 欧美另类专区| 亚洲国产成人在线| 亚洲欧美激情在线视频| 亚洲精品美女在线观看| 久久久久亚洲综合| 国产性色一区二区| 亚洲欧美日韩成人高清在线一区| 欧美呦呦网站| 久久久久久久999| 欧美日韩亚洲一区二| 亚洲国产成人午夜在线一区| 亚洲精品一区二区在线| 榴莲视频成人在线观看| 欧美一区二区黄| 欧美a级在线| 亚洲精品影院在线观看| 欧美成人性生活| 久久三级福利| 亚洲国产精品一区在线观看不卡| 麻豆精品视频在线| 亚洲女与黑人做爰| 国产欧美日韩精品专区| 久久漫画官网| 免费成人美女女| 亚洲午夜激情免费视频| 一区二区三区国产精品| 欧美日韩精品一区二区天天拍小说| 在线观看视频一区二区欧美日韩| 欧美成人免费全部观看天天性色| 久久综合中文字幕| 午夜亚洲激情| 欧美精品一区视频| 久久免费黄色| 国产欧美成人| 亚洲性人人天天夜夜摸| 99国产精品久久久久老师| 久久精品国产v日韩v亚洲 | 亚洲欧美日韩一区二区在线| 精品成人在线观看| 香蕉久久夜色精品| 午夜精品久久久久久久久久久久| 欧美激情麻豆| 亚洲精品123区| 亚洲国内欧美| 男女视频一区二区| 欧美激情综合色| 亚洲精品欧美精品| 欧美精品午夜视频| 亚洲精选久久| 亚洲欧美日韩在线观看a三区| 国产精品第一区| 亚洲综合精品| 久久香蕉国产线看观看av| 国内成人精品视频| 久久精品国产91精品亚洲| 久久久精品欧美丰满| 国产一区二区三区在线观看精品 | 欧美巨乳在线| 亚洲一区三区视频在线观看| 欧美一区二区三区精品| 国产日韩一区在线| 欧美xart系列在线观看| 亚洲人成在线影院| 午夜国产精品视频免费体验区| 国产日韩欧美在线一区| 久久久久欧美| 一本色道久久| 亚洲成人影音| 欧美成人午夜剧场免费观看| 一区二区三区四区国产| 久久这里有精品15一区二区三区| 亚洲美女中出| 一区二区三区在线不卡| 国产精品捆绑调教| 欧美va亚洲va国产综合| 午夜久久资源| 亚洲一区在线免费| 亚洲精品国偷自产在线99热| 久久久91精品国产一区二区三区| 日韩视频在线一区| 亚洲国产综合91精品麻豆| 国产视频欧美视频| 国产精品视频一二三| 欧美日韩黄色一区二区| 欧美国产丝袜视频| 久久久久久黄| 狼人天天伊人久久| 久久偷看各类wc女厕嘘嘘偷窃| 欧美一区二区三区精品电影| 在线一区二区日韩| 亚洲视频久久| 欧美与黑人午夜性猛交久久久| 亚洲欧美国产va在线影院| 亚洲视频碰碰| 久久国产精品99精品国产| 欧美综合国产精品久久丁香| 久久深夜福利免费观看| 欧美成人精品福利| 欧美屁股在线| 国产欧美日韩视频| 国产三区二区一区久久| 亚洲国产欧美日韩| 在线视频你懂得一区| 欧美亚洲日本网站| 免费欧美日韩国产三级电影| 亚洲国产精品成人精品| 亚洲图色在线| 欧美黑人在线观看| 国产人妖伪娘一区91| 影音先锋亚洲电影| 亚洲一区二区视频在线| 老司机aⅴ在线精品导航| 亚洲精品日日夜夜| 欧美在线视频一区二区| 欧美理论电影在线观看| 欧美午夜片欧美片在线观看| 国产综合精品| 亚洲一区二区三区免费视频 | 免费亚洲电影| 午夜日韩福利| 国产精品亚洲一区二区三区在线| 亚洲国产精品一区在线观看不卡 | 校园激情久久| 99精品视频一区| 欧美日韩国产系列| 夜夜嗨av一区二区三区网站四季av| 久久精品中文字幕一区二区三区|