<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jinfeng_wang

    G-G-S,D-D-U!

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      400 Posts :: 0 Stories :: 296 Comments :: 0 Trackbacks
    http://www.cnblogs.com/bangerlee/p/5767845.html



    選舉(election)是分布式系統實踐中常見的問題,通過打破節點間的對等關系,選得的leader(或叫master、coordinator)有助于實現事務原子性、提升決議效率。 多數派(quorum)的思路幫助我們在網絡分化的情況下達成決議一致性,在leader選舉的場景下幫助我們選出唯一leader。租約(lease)在一定期限內給予節點特定權利,也可以用于實現leader選舉。

     

    下面我們就來學習分布式系統理論中的選舉、多數派和租約。

     

    選舉(electioin)

    一致性問題(consistency)是獨立的節點間如何達成決議的問題,選出大家都認可的leader本質上也是一致性問題,因而如何應對宕機恢復、網絡分化等在leader選舉中也需要考量。

     

    Bully算法[1]是最常見的選舉算法,其要求每個節點對應一個序號,序號最高的節點為leader。leader宕機后次高序號的節點被重選為leader,過程如下:

    (a). 節點4發現leader不可達,向序號比自己高的節點發起重新選舉,重新選舉消息中帶上自己的序號

    (b)(c). 節點5、6接收到重選信息后進行序號比較,發現自身的序號更大,向節點4返回OK消息并各自向更高序號節點發起重新選舉

    (d). 節點5收到節點6的OK消息,而節點6經過超時時間后收不到更高序號節點的OK消息,則認為自己是leader

    (e). 節點6把自己成為leader的信息廣播到所有節點

     

    回顧《分布式系統理論基礎 - 一致性、2PC和3PC》就可以看到,Bully算法中有2PC的身影,都具有提議(propose)和收集反饋(vote)的過程。

     

    在一致性算法Paxos、ZAB[2]、Raft[3]中,為提升決議效率均有節點充當leader的角色。ZAB、Raft中描述了具體的leader選舉實現,與Bully算法類似ZAB中使用zxid標識節點,具有最大zxid的節點表示其所具備的事務(transaction)最新、被選為leader。

     

    多數派(quorum)

    在網絡分化的場景下以上Bully算法會遇到一個問題,被分隔的節點都認為自己具有最大的序號、將產生多個leader,這時候就需要引入多數派(quorum)[4]。多數派的思路在分布式系統中很常見,其確保網絡分化情況下決議唯一。

     

    多數派的原理說起來很簡單,假如節點總數為2f+1,則一項決議得到多于 f 節點贊成則獲得通過。leader選舉中,網絡分化場景下只有具備多數派節點的部分才可能選出leader,這避免了多leader的產生。

     

    多數派的思路還被應用于副本(replica)管理,根據業務實際讀寫比例調整寫副本數Vw、讀副本數Vr,用以在可靠性和性能方面取得平衡[5]

     

    租約(lease)

    選舉中很重要的一個問題,以上尚未提到:怎么判斷leader不可用、什么時候應該發起重新選舉?最先可能想到會通過心跳(heart beat)判別leader狀態是否正常,但在網絡擁塞或瞬斷的情況下,這容易導致出現雙主。

     

    租約(lease)是解決該問題的常用方法,其最初提出時用于解決分布式緩存一致性問題[6],后面在分布式鎖[7]等很多方面都有應用。

     

    租約的原理同樣不復雜,中心思想是每次租約時長內只有一個節點獲得租約、到期后必須重新頒發租約。假設我們有租約頒發節點Z,節點0、1和2競選leader,租約過程如下:

    (a). 節點0、1、2在Z上注冊自己,Z根據一定的規則(例如先到先得)頒發租約給節點,該租約同時對應一個有效時長;這里假設節點0獲得租約、成為leader

    (b). leader宕機時,只有租約到期(timeout)后才重新發起選舉,這里節點1獲得租約、成為leader

     

    租約機制確保了一個時刻最多只有一個leader,避免只使用心跳機制產生雙主的問題。在實踐應用中,zookeeper、ectd可用于租約頒發。

     

    小結

    在分布式系統理論和實踐中,常見leader、quorum和lease的身影。分布式系統內不一定事事協商、事事民主,leader的存在有助于提升決議效率。

    本文以leader選舉作為例子引入和講述quorum、lease,當然quorum和lease是兩種思想,并不限于leader選舉應用。

     

    最后提一個有趣的問題與大家思考,leader選舉的本質是一致性問題,Paxos、Raft和ZAB等解決一致性問題的協議和算法本身又需要或依賴于leader,怎么理解這個看似“蛋生雞、雞生蛋”的問題?[8]

     

    [1] Elections in a Distributed Computing System, Hector Garcia-Molina, 1982

    [2] ZooKeeper’s atomic broadcast protocol: Theory and practice, Andre Medeiros, 2012

    [3] In Search of an Understandable Consensus Algorithm, Diego Ongaro and John Ousterhout, 2013

    [4] A quorum-based commit protocol, Dale Skeen, 1982

    [5] Weighted Voting for Replicated Data, David K. Gifford, 1979

    [6] Leases: An Efficient Fault-Tolerant Mechanism for Distributed File Cache Consistency, Cary G. Gray and David R. Cheriton, 1989

    [7] The Chubby lock service for loosely-coupled distributed systems, Mike Burrows, 2006

    [8] Why is Paxos leader election not done using Paxos?

    posted on 2017-02-03 15:25 jinfeng_wang 閱讀(270) 評論(0)  編輯  收藏 所屬分類: 2016-thinking2016-zookeeper
    主站蜘蛛池模板: 亚洲人成无码www久久久| 91亚洲精品麻豆| 在线免费观看国产| 亚洲综合欧美色五月俺也去 | 亚洲成a人片在线观看国产| 国产久爱免费精品视频| 99久久精品国产亚洲| 噜噜嘿在线视频免费观看| 热久久这里是精品6免费观看| 亚洲国产成人手机在线电影bd| 国产免费人人看大香伊| 久久免费视频精品| 理论亚洲区美一区二区三区| 亚洲av日韩av天堂影片精品| 美女被免费视频网站a国产| 日本卡1卡2卡三卡免费| 国产AV无码专区亚洲AV蜜芽 | 亚洲精品国产日韩无码AV永久免费网 | 欧洲亚洲国产精华液| 久久精品国产亚洲av麻| 日韩视频免费在线| 少妇无码一区二区三区免费| 高潮内射免费看片| 亚洲乱码一二三四区国产| 好看的电影网站亚洲一区| 国产成人免费全部网站| 在线免费观看国产| 免费无码又爽又刺激高潮软件| 亚洲暴爽av人人爽日日碰| 亚洲精品美女视频| 亚洲人精品午夜射精日韩 | 亚洲av永久无码精品网站| 免费国产在线观看老王影院| 69视频在线观看免费| 成人A片产无码免费视频在线观看 成人电影在线免费观看 | 成年女性特黄午夜视频免费看| 久久99毛片免费观看不卡| sss日本免费完整版在线观看| 亚洲精品伦理熟女国产一区二区| 亚洲黄色免费观看| 亚洲电影国产一区|