• <option id="cacee"><noscript id="cacee"></noscript></option>
  • <table id="cacee"><noscript id="cacee"></noscript></table>
  • <td id="cacee"></td>
  • <option id="cacee"></option>
  • <table id="cacee"></table>
  • <option id="cacee"><option id="cacee"></option></option>
  • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
    <option id="cacee"><option id="cacee"></option></option>
     找回密碼
     立即注冊

    掃一掃,登錄網站

    首頁 百科 查看內容
    • 6168
    • 0
    • 分享到

    井然有序,就得等到沒有分區--分布式系統

    2018-6-4 22:47

    來源: 火球財經

    什么是CAP定理?


    分布式系統中,必然無法同時滿足一致性、可用性和分區容忍性。

    分布式系統指一組電腦連成的網絡。

    一致性(Consistency,簡稱C)指同一時刻全網數據完全一致,相當于軍訓隊伍整齊劃一,越整齊一致性就越高。

    可用性(Availability,簡稱A)一部分節點更新數據后,分布式系統能基于最新數據響應用戶讀寫請求。排頭兵挪動后,沒跟上的隊伍走樣越小、排齊耗時越少,可用性就越高。

    分區容忍性(Partition Tolerance,簡稱P)只有兩個可選參數:不容忍和容忍。

    不容忍分區好比你一個人在word里打字,無需穿行網絡,一臺電腦全盤搞定;容忍分區就是分布式系統,至少有兩臺計算機聯機組成,比如你保存word文檔的瞬間,如果我的電腦沒和你交互,就讀不到你剛寫的文字。

    CAP定理意思是:C、A、P三者最多得二。

    具體來說:分布式系統必然容忍分區(P),所以一致性(C)與可用性(A)注定互斥。如果你想左擁右抱C和A,那就別指望分布式系統,只能用單機版的中心化方式(不容忍分區,無P)。

    但是,分布式系統中C和A的不可兼得,與中文語境下魚和熊掌的不可兼得不同。CAP定理是說:一條隊伍永遠存在可能不齊的瞬間。這看著像句廢話,但只有理解這點,才能避免對CAP原理最習以為常的誤解:現在不齊,所以永遠無法整齊。

    你不是教官腦中的提線木偶,不會根據教官意念自動排齊。排頭兵一個噴嚏把自己打出去半步,二號兵才能開始反應,跟出瞄齊,而他脖子位置的變化向三號兵發出指令:來,跟上。

    最后才輪到你,怎么可能快?所有人的反應時間之外,還要加上挪步用時,于是耗時必然大于零。

    映射到分布式系統:如果想要嚴格一致的數據,那分布式系統就沒法用了,因為你無法確保使用數據的瞬間,網絡中其他節點不會更新數據;如果你想用相對新的數據,那就得候著。

    所以,分布式系統天生就慢。

    這種慢,更像是遲鈍,原因很簡單:分布式系統范圍一大,節點間的通信耗時就長。

    如果你想獲得可靠的最新信息,就得等所有節點匯集出最新數據,這樣能保住一致性、放棄可用性。可如果你說全網這么多節點,等到什么時候才能一致?CAP原理告訴你:別等了,你就放棄點一致性,先用著吧,否則你啥也用不了。


    2000年加州大學伯克利分校計算機教授布魯爾提出了CAP的三選二猜想,兩年后被麻省理工學院的兩位教授基爾伯特和林奇證明。

    他們的反證法讓證明過程出奇地簡單:

    假設存在一個算法同時滿足一致性、可用性和分區容忍性,那么在兩個節點的網絡中,存儲的信息分為不相關的非空集合{G和G'},假設G和G'間沒有通信,那么,一個節點讀的操作將無法訪問另一節點稍早前寫的結果。

    類比一個你熟悉的場景:

    媽媽和兒子一起把兩只蛋關進冰箱,媽媽回房看電視,兒子一餓之下把蛋全煮了扒光吃盡,此時爸爸在房里問媽媽:冰箱里還有多少蛋?

    媽媽關上房門的剎那,本來共享的雞蛋余額數據就發生了分區。

    如果媽媽追求嚴格一致性,那她應該跑去冰箱檢查余額后再答復爸爸,可媽媽追起劇來特別專注,所以直接回答:還有兩個。這個回復沒有基于準確的最新余額,但為了可用,放棄了一致。

    可這并不影響爸爸第二天就去超市買蛋,因為不管零個蛋還是兩個蛋,都不夠全家吃。

    所以,一致性并非不可放棄,只是需要權衡。放棄追求一致性,就能少打斷一次電視劇情,少跑一個來回所增加的便利,如果大于因為蛋數認定不一致帶來的不便,那不一致就不一致吧。

    這是很簡單的取舍,但正如“去中心”常被人們誤解為“去掉所有中心”一樣,人們也常常誤讀CAP定理中“三者只能居其二”的含義:

    CAP定理的確告訴我們:分布式系統中抓走可用性就意味著放手一致性,但并不說明用戶想要的一致性被沖進了馬桶,再也撈不回來。真實情況是,我們可以在短時間內追回些一致性,就像經過嚴格訓練的隊伍可以比普通隊伍用更短的時間排齊一樣。

    很可惜,即使我們只用一剎那的時間就能追回先前所有的不一致,我們也沒有辦法追回這一剎那本身所產生的不一致,這是分布式系統命中注定的無奈。

    但這只是CAP定理在理論上的陳辭,實際場景中我們需要關注的是如何在C、A之間權衡利弊,最終獲得最大的經濟收益。在這方面,銀行業貢獻給我們兩個案例:

    版權申明:本內容來自于互聯網,屬第三方匯集推薦平臺。本文的版權歸原作者所有,文章言論不代表鏈門戶的觀點,鏈門戶不承擔任何法律責任。如有侵權請聯系QQ:3341927519進行反饋。
    相關新聞
    發表評論

    請先 注冊/登錄 后參與評論

      回頂部
    • <option id="cacee"><noscript id="cacee"></noscript></option>
    • <table id="cacee"><noscript id="cacee"></noscript></table>
    • <td id="cacee"></td>
    • <option id="cacee"></option>
    • <table id="cacee"></table>
    • <option id="cacee"><option id="cacee"></option></option>
    • <table id="cacee"><source id="cacee"></source></table><td id="cacee"><rt id="cacee"></rt></td>
      <option id="cacee"><option id="cacee"></option></option>
      妖精视频