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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Gossip算法

轉(zhuǎn)載自:http://blog.csdn.net/chen77716/article/details/6275762

Gossip算法因為Cassandra而名聲大噪,Gossip看似簡單,但要真正弄清楚其本質(zhì)遠沒看起來那么容易。為了尋求Gossip的本質(zhì),下面的內(nèi)容主要參考Gossip的原始論文:<<Efficient Reconciliation and Flow Control for Anti-Entropy Protocols>>。

 

1. Gossip背景

Gossip算法如其名,靈感來自辦公室八卦,只要一個人八卦一下,在有限的時間內(nèi)所有的人都會知道該八卦的信息,這種方式也與病毒傳播類似,因此Gossip有眾多的別名“閑話算法”、“疫情傳播算法”、“病毒感染算法”、“謠言傳播算法”。

但Gossip并不是一個新東西,之前的泛洪查找、路由算法都歸屬于這個范疇,不同的是Gossip給這類算法提供了明確的語義、具體實施方法及收斂性證明。

2. Gossip特點

Gossip算法又被稱為反熵(Anti-Entropy),熵是物理學(xué)上的一個概念,代表雜亂無章,而反熵就是在雜亂無章中尋求一致,這充分說明了Gossip的特點:在一個有界網(wǎng)絡(luò)中,每個節(jié)點都隨機地與其他節(jié)點通信,經(jīng)過一番雜亂無章的通信,最終所有節(jié)點的狀態(tài)都會達成一致。每個節(jié)點可能知道所有其他節(jié)點,也可能僅知道幾個鄰居節(jié)點,只要這些節(jié)可以通過網(wǎng)絡(luò)連通,最終他們的狀態(tài)都是一致的,當然這也是疫情傳播的特點。

要注意到的一點是,即使有的節(jié)點因宕機而重啟,有新節(jié)點加入,但經(jīng)過一段時間后,這些節(jié)點的狀態(tài)也會與其他節(jié)點達成一致,也就是說,Gossip天然具有分布式容錯的優(yōu)點。

3. Gossip本質(zhì)

Gossip是一個帶冗余的容錯算法,更進一步,Gossip是一個最終一致性算法。雖然無法保證在某個時刻所有節(jié)點狀態(tài)一致,但可以保證在”最終“所有節(jié)點一致,”最終“是一個現(xiàn)實中存在,但理論上無法證明的時間點。

因為Gossip不要求節(jié)點知道所有其他節(jié)點,因此又具有去中心化的特點,節(jié)點之間完全對等,不需要任何的中心節(jié)點。實際上Gossip可以用于眾多能接受“最終一致性”的領(lǐng)域:失敗檢測、路由同步、Pub/Sub、動態(tài)負載均衡。

但Gossip的缺點也很明顯,冗余通信會對網(wǎng)路帶寬、CUP資源造成很大的負載,而這些負載又受限于通信頻率,該頻率又影響著算法收斂的速度,后面我們會講在各種場合下的優(yōu)化方法。

4. Gossip節(jié)點的通信方式及收斂性

根據(jù)原論文,兩個節(jié)點(A、B)之間存在三種通信方式:

  • push: A節(jié)點將數(shù)據(jù)(key,value,version)及對應(yīng)的版本號推送給B節(jié)點,B節(jié)點更新A中比自己新的數(shù)據(jù)
  • pull:A僅將數(shù)據(jù)key,version推送給B,B將本地比A新的數(shù)據(jù)(Key,value,version)推送給A,A更新本地
  • push/pull:與pull類似,只是多了一步,A再將本地比B新的數(shù)據(jù)推送給B,B更新本地

如果把兩個節(jié)點數(shù)據(jù)同步一次定義為一個周期,則在一個周期內(nèi),push需通信1次,pull需2次,push/pull則需3次,從效果上來講,push/pull最好,理論上一個周期內(nèi)可以使兩個節(jié)點完全一致。直觀上也感覺,push/pull的收斂速度是最快的。

假設(shè)每個節(jié)點通信周期都能選擇(感染)一個新節(jié)點,則Gossip算法退化為一個二分查找過程,每個周期構(gòu)成一個平衡二叉樹,收斂速度為O(n2 ),對應(yīng)的時間開銷則為O(logn )。這也是Gossip理論上最優(yōu)的收斂速度。但在實際情況中最優(yōu)收斂速度是很難達到的,假設(shè)某個節(jié)點在第i個周期被感染的概率為pi ,第i+1個周期被感染的概率為pi+1 ,則pull的方式:

pull

而push為:

push

顯然pull的收斂速度大于push,而每個節(jié)點在每個周期被感染的概率都是固定的p(0<p<1),因此Gossip算法是基于p的平方收斂,也成為概率收斂,這在眾多的一致性算法中是非常獨特的。

個Gossip的節(jié)點的工作方式又分兩種:

  • Anti-Entropy(反熵):以固定的概率傳播所有的數(shù)據(jù)
  • Rumor-Mongering(謠言傳播):僅傳播新到達的數(shù)據(jù)

Anti-Entropy模式有完全的容錯性,但有較大的網(wǎng)絡(luò)、CPU負載;Rumor-Mongering模式有較小的網(wǎng)絡(luò)、CPU負載,但必須為數(shù)據(jù)定義”最新“的邊界,并且難以保證完全容錯,對失敗重啟且超過”最新“期限的節(jié)點,無法保證最終一致性,或需要引入額外的機制處理不一致性。我們后續(xù)著重討論Anti-Entropy模式的優(yōu)化。

5. Anti-Entropy的協(xié)調(diào)機制

協(xié)調(diào)機制是討論在每次2個節(jié)點通信時,如何交換數(shù)據(jù)能達到最快的一致性,也即消除兩個節(jié)點的不一致性。上面所講的push、pull等是通信方式,協(xié)調(diào)是在通信方式下的數(shù)據(jù)交換機制。協(xié)調(diào)所面臨的最大問題是,因為受限于網(wǎng)絡(luò)負載,不可能每次都把一個節(jié)點上的數(shù)據(jù)發(fā)送給另外一個節(jié)點,也即每個Gossip的消息大小都有上限。在有限的空間上有效率地交換所有的消息是協(xié)調(diào)要解決的主要問題。

在討論之前先聲明幾個概念:

  • 令N = {p,q,s,...}為需要gossip通信的server集合,有界大小
  • 令(p1,p2,...)是宿主在節(jié)點p上的數(shù)據(jù),其中數(shù)據(jù)有(key,value,version)構(gòu)成,q的規(guī)則與p類似。

為了保證一致性,規(guī)定數(shù)據(jù)的value及version只有宿主節(jié)點才能修改,其他節(jié)點只能間接通過Gossip協(xié)議來請求數(shù)據(jù)對應(yīng)的宿主節(jié)點修改。

5.1 精確協(xié)調(diào)(Precise Reconciliation)

精確協(xié)調(diào)希望在每次通信周期內(nèi)都非常準確地消除雙方的不一致性,具體表現(xiàn)為相互發(fā)送對方需要更新的數(shù)據(jù),因為每個節(jié)點都在并發(fā)與多個節(jié)點通信,理論上精確協(xié)調(diào)很難做到。精確協(xié)調(diào)需要給每個數(shù)據(jù)項獨立地維護自己的version,在每次交互是把所有的(key,value,version)發(fā)送到目標進行比對,從而找出雙方不同之處從而更新。但因為Gossip消息存在大小限制,因此每次選擇發(fā)送哪些數(shù)據(jù)就成了問題。當然可以隨機選擇一部分數(shù)據(jù),也可確定性的選擇數(shù)據(jù)。對確定性的選擇而言,可以有最老優(yōu)先(根據(jù)版本)和最新優(yōu)先兩種,最老優(yōu)先會優(yōu)先更新版本最新的數(shù)據(jù),而最新更新正好相反,這樣會造成老數(shù)據(jù)始終得不到機會更新,也即饑餓。

當然,開發(fā)這也可根據(jù)業(yè)務(wù)場景構(gòu)造自己的選擇算法,但始終都無法避免消息量過多的問題。

5.2 整體協(xié)調(diào)(Scuttlebutt Reconciliation)

整體協(xié)調(diào)與精確協(xié)調(diào)不同之處是,整體協(xié)調(diào)不是為每個數(shù)據(jù)都維護單獨的版本號,而是為每個節(jié)點上的宿主數(shù)據(jù)維護統(tǒng)一的version。比如節(jié)點P會為(p1,p2,...)維護一個一致的全局version,相當于把所有的宿主數(shù)據(jù)看作一個整體,當與其他節(jié)點進行比較時,只需必須這些宿主數(shù)據(jù)的最高version,如果最高version相同說明這部分數(shù)據(jù)全部一致,否則再進行精確協(xié)調(diào)。

整體協(xié)調(diào)對數(shù)據(jù)的選擇也有兩種方法:

  • 廣度優(yōu)先:根據(jù)整體version大小排序,也稱為公平選擇
  • 深度優(yōu)先:根據(jù)包含數(shù)據(jù)多少的排序,也稱為非公平選擇。因為后者更有實用價值,所以原論文更鼓勵后者

6. Cassandra中的實現(xiàn)

經(jīng)過驗證,Cassandra實現(xiàn)了基于整體協(xié)調(diào)的push/push模式,有幾個組件:

三條消息分別對應(yīng)push/pull的三個階段:

  • GossipDigitsMessage
  • GossipDigitsAckMessage
  • GossipDigitsAck2Message

還有三種狀態(tài):

  • EndpointState:維護宿主數(shù)據(jù)的全局version,并封裝了HeartBeat和ApplicationState
  • HeartBeat:心跳信息
  • ApplicationState:系統(tǒng)負載信息(磁盤使用率)

Cassandra主要是使用Gossip完成三方面的功能:

  • 失敗檢測
  • 動態(tài)負載均衡
  • 去中心化的彈性擴展

7. 總結(jié)

Gossip是一種去中心化、容錯而又最終一致性的絕妙算法,其收斂性不但得到證明還具有指數(shù)級的收斂速度。使用Gossip的系統(tǒng)可以很容易的把Server擴展到更多的節(jié)點,滿足彈性擴展輕而易舉。

唯一的缺點是收斂是最終一致性,不使用那些強一致性的場景,比如2pc。

posted on 2015-10-01 18:42 楊粼波 閱讀(596) 評論(0)  編輯 收藏 引用

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产精品久久久久7777婷婷| 亚洲午夜高清视频| 在线精品一区二区| 国产一区二区三区免费观看| 在线成人激情| 国产一区日韩一区| 老司机午夜精品视频| 久久久亚洲精品一区二区三区 | 午夜老司机精品| 羞羞漫画18久久大片| 久久久久久久久久久成人| 久久精品亚洲精品国产欧美kt∨| 欧美制服丝袜| 亚洲国产成人av在线| 最新国产拍偷乱拍精品| 亚洲综合色网站| 亚洲国产另类久久久精品极度| 亚洲欧美一区二区三区久久 | 亚洲精品少妇30p| 中文久久乱码一区二区| 欧美中文在线观看国产| 亚洲国产91精品在线观看| 亚洲午夜免费福利视频| 免费成人毛片| 久久婷婷国产综合精品青草| 午夜精品999| 99riav1国产精品视频| 欧美韩日一区二区三区| 亚洲乱码国产乱码精品精| 亚洲综合第一| 欧美激情在线狂野欧美精品| 国产精品高潮在线| 亚洲国产成人久久| 欧美一级黄色录像| 亚洲国产精品成人va在线观看| 久久se精品一区二区| 久久久国产精品一区二区中文 | 欧美韩国日本一区| 亚洲视频免费观看| 欧美亚洲在线| 亚洲一区二区三区四区中文| 亚洲自拍偷拍麻豆| 亚洲国产美女精品久久久久∴| 亚洲精品视频在线观看网站| 久久亚洲视频| 亚洲免费电影在线观看| 亚洲经典三级| 亚洲一区二区三区国产| 欧美日韩在线大尺度| 久久成人免费网| 亚洲欧洲日本在线| 久久久精品午夜少妇| 欲香欲色天天天综合和网| 久久精品国产亚洲精品| 久久er精品视频| 亚洲一区二区三区777| 免费视频久久| 亚洲国产成人一区| 久久久综合网站| 久久不射电影网| 国产原创一区二区| 久久一区二区精品| 久久久久久久999| 伊人蜜桃色噜噜激情综合| 久久亚洲国产成人| 久久久99免费视频| 136国产福利精品导航网址应用 | 亚洲精品免费在线| 欧美激情精品久久久久久蜜臀| 亚洲国产精品嫩草影院| 欧美激情偷拍| 欧美日韩国产在线观看| 亚洲先锋成人| 一片黄亚洲嫩模| 国产日本欧美一区二区三区| 久久久精品国产免大香伊| 久久久久久噜噜噜久久久精品| 在线观看视频欧美| 亚洲青色在线| 国产乱码精品1区2区3区| 久久久福利视频| 欧美成人一区二区三区片免费| 日韩亚洲欧美一区| 亚洲字幕一区二区| 在线欧美一区| 免费在线看成人av| 欧美视频福利| 亚洲免费视频中文字幕| 亚洲一区免费视频| 好看的av在线不卡观看| 欧美激情视频一区二区三区免费| 欧美福利精品| 久久av免费一区| 欧美成人亚洲| 久久精品亚洲| 欧美日韩国产在线看| 久久久久久自在自线| 欧美母乳在线| 久久夜色精品国产| 国产精品久久国产三级国电话系列| 久久久视频精品| 欧美三级电影网| 免费在线看成人av| 国产精品video| 欧美激情亚洲视频| 国产女人18毛片水18精品| 欧美激情国产日韩| 国产日韩欧美在线播放| 亚洲国产欧美在线人成| 国产日韩亚洲欧美| 日韩亚洲一区在线播放| 亚洲国产日韩欧美| 欧美在线视频在线播放完整版免费观看 | 欧美另类综合| 久久夜色精品国产欧美乱极品| 欧美视频网址| 亚洲日本电影| 亚洲国产一成人久久精品| 午夜精品国产精品大乳美女| 99日韩精品| 欧美成人激情在线| 免费在线成人av| 影音先锋成人资源站| 欧美一区二区三区在线视频| 亚洲一区免费| 欧美日韩午夜视频在线观看| 欧美高清在线| 亚洲国产精品一区二区三区| 欧美在线免费一级片| 欧美在线视频不卡| 国产麻豆视频精品| 亚洲免费视频观看| 欧美一级在线亚洲天堂| 国产精品成人久久久久| 9色国产精品| 亚洲一区在线视频| 国产精品久久久久9999高清| 一区二区三区蜜桃网| 亚洲一区二区三区四区五区黄 | 欧美日韩情趣电影| 一本久道久久综合婷婷鲸鱼| 中文网丁香综合网| 一级成人国产| 欧美专区中文字幕| 一区二区三区日韩精品视频| 亚洲精品色婷婷福利天堂| 欧美激情视频在线播放| 亚洲乱码一区二区| 亚洲综合日韩在线| 国产性做久久久久久| 久久久精品午夜少妇| 欧美激情一区二区在线| 99精品久久| 国产酒店精品激情| 久久综合色8888| 日韩视频在线观看国产| 香蕉久久精品日日躁夜夜躁| 国产精品一区免费观看| 亚洲欧洲精品一区二区三区不卡| 猛男gaygay欧美视频| 亚洲欧洲偷拍精品| 欧美日韩成人一区二区三区| 亚洲午夜在线观看| 久久视频国产精品免费视频在线 | 国产精品二区在线观看| 亚洲黄网站在线观看| 久久久久久夜| 欧美黑人在线播放| 久久久久久久久久看片| 麻豆精品视频在线| 久热国产精品| 国产精品成人一区二区三区夜夜夜 | 亚洲国产91精品在线观看| 国产精品国产三级国产aⅴ入口| 国产精品成人播放| 亚洲国产精品久久精品怡红院| 国产欧美日韩综合一区在线观看| 亚洲激情视频网站| 欧美 日韩 国产一区二区在线视频| 亚洲中字在线| 亚洲黄色一区| 亚洲欧美日本在线| 欧美激情综合亚洲一二区| 欧美日韩成人精品| 国产精品欧美风情| 亚洲一区欧美| 99国产精品视频免费观看一公开| 一区二区三区精密机械公司| 欧美深夜影院| 欧美精品91| 一区二区三区在线免费视频| 久久爱另类一区二区小说| 99国产精品久久久久老师| 国产精品久久久久久亚洲调教 | 一区二区国产在线观看| 亚洲一区二区三区免费观看| 亚洲欧美成人一区二区三区| 一本色道**综合亚洲精品蜜桃冫 | 久久精品一区二区三区四区| 激情另类综合|