CAP理論

CAP理論

為什么需要CAP理論

開發(fā)分布式系統(tǒng)時,我們需要根據(jù)業(yè)務(wù)特點酥宴,設(shè)計合適的分區(qū)容錯一致性模型您觉,以實現(xiàn)集群能力拙寡。這個問題的棘手點在于:當(dāng)系統(tǒng)發(fā)生分區(qū)錯誤時琳水,應(yīng)該如何保障系統(tǒng)穩(wěn)定運行般堆,不影響業(yè)務(wù)。而CAP理論可以解決這個問題淮摔。

CAP理論是一個很好的思考框架始赎,它對分布式系統(tǒng)的特性做了高度抽象和橙,將其抽象成一致性造垛、可用性分區(qū)容錯性,并對特性之間的沖突做了總結(jié)五辽,即CAP不可能三角。一旦掌握它奔脐,我們就能根據(jù)業(yè)務(wù)特點吁讨,自然而然地設(shè)計出合適的分區(qū)容錯一致性模型。

什么是CAP理論

概念

在一個分布式系統(tǒng)(互相連接并共享數(shù)據(jù)的節(jié)點的集合)中建丧,當(dāng)涉及讀寫操作時,只能保證

一致性翎朱、可用性和分區(qū)容錯性中的兩個,另一個必須被犧牲争舞。

適用場景

CAP理論探討的是

  • 節(jié)點互聯(lián)和共享數(shù)據(jù)的分布式系統(tǒng)。如果分布式系統(tǒng)的節(jié)點沒有互聯(lián)竞川,或沒有共享數(shù)據(jù)叁熔,那就不是CAP理論討論的范圍委乌。不過荣回,這個條件是天然滿足的。畢竟心软,節(jié)點互聯(lián)和共享數(shù)據(jù)的分布式系統(tǒng)才會有數(shù)據(jù)一致性問題著蛙。

  • CAP理論探討的是數(shù)據(jù)的讀寫操作算利,不是分布式系統(tǒng)的所有功能。也就是效拭,CAP理論針對的是數(shù)據(jù),不是整個系統(tǒng)缎患。因為一個系統(tǒng)可能有多份數(shù)據(jù)

CAP三個指標(biāo)

CAP 理論對分布式系統(tǒng)的特性做了高度抽象挤渔,形成了三個指標(biāo):

  • 一致性:對客戶端的每次讀取操作,不管訪問的是哪個節(jié)點嫉父,返回的都是同一份最新的數(shù)據(jù),否則讀取失敗绕辖。一致性強(qiáng)調(diào)各節(jié)點間的數(shù)據(jù)一致擂红。也就是說仪际,在客戶端看來昵骤,集群和單機(jī)在數(shù)據(jù)一致性上是一樣的。
  • 可用性:對客戶端的任何請求变秦,訪問非故障節(jié)點時,都能返回合理的響應(yīng)(不是錯誤或者超時)伦连,但不保證是同一份最新數(shù)據(jù)。可用性強(qiáng)調(diào)服務(wù)可用惑淳,但不保證數(shù)據(jù)的一致饺窿。
  • 分區(qū)容錯性:當(dāng)出現(xiàn)網(wǎng)絡(luò)分區(qū)[1]時歧焦,系統(tǒng)可以繼續(xù)提供服務(wù)。網(wǎng)絡(luò)分區(qū)可能是因為消息丟失向瓷,高延遲,連接中斷等等猖任。分區(qū)容錯性強(qiáng)調(diào)系統(tǒng)對分區(qū)故障的容錯性瓷耙。

CAP不可能三角

CAP 不可能三角指,對于一個分布式系統(tǒng)來說搁痛,一致性可用性分區(qū)容錯性三者不可兼得鸡典,只能選擇其中兩個。

如何使用CAP理論

  • 分區(qū)容錯性(P)必選彻况。分布式系統(tǒng)一定有網(wǎng)絡(luò)交互。只要有網(wǎng)絡(luò)交互症汹,就一定會出現(xiàn)消息丟失等網(wǎng)絡(luò)故障。這種狀況我們必須接受,還必須保證系統(tǒng)正常運行咬展。
  • 當(dāng)發(fā)生網(wǎng)絡(luò)分區(qū)時,要么選擇一致性(C)涮总,保證數(shù)據(jù)的絕對一致;要么選擇可用性(A)瀑梗,保證服務(wù)可用裳扯。
    • 當(dāng)選擇了一致性(C)時抛丽,即采用CP模型饰豺,如果發(fā)生網(wǎng)絡(luò)分區(qū),集群拒絕客戶端的寫請求冤吨,因為服務(wù)法保證所有節(jié)點間的數(shù)據(jù)一致饶套。
    • 當(dāng)選擇了可用性(A)時垒探,即采用AP模型,如果發(fā)生網(wǎng)絡(luò)分區(qū)圾叼,集群仍然接受客戶端的讀、寫請求褐奥,但是節(jié)點返回的可能不是最新的數(shù)據(jù)。
  • 不存在網(wǎng)絡(luò)分區(qū)的情況下儿倒,即系統(tǒng)正常運行的情況下,一致性(C) 和可用性( A) 要能夠同時保證夫否。

實戰(zhàn)

如何為系統(tǒng)設(shè)計分區(qū)容錯一致性模型叫胁?

  • CAP理論針對的是數(shù)據(jù)凰慈,而不是系統(tǒng)驼鹅;一個系統(tǒng)有多種數(shù)據(jù)。所以输钩,一個系統(tǒng)有多種分區(qū)容錯一致性模型。
  • 分區(qū)容錯性(P)必選姻氨。在發(fā)生分區(qū)故障時,系統(tǒng)必須還能正常運行肴焊。
  • 當(dāng)發(fā)生網(wǎng)絡(luò)分區(qū)功戚,選擇一致性還是可用性,取決于:數(shù)據(jù)不一致對系統(tǒng)有沒有影響啸臀?我們能容忍這種影響嗎?如果可以,選擇可用性顽馋,否則一致性。

  1. 網(wǎng)絡(luò)分區(qū)指的是網(wǎng)絡(luò)故障將整個網(wǎng)絡(luò)分為多個子網(wǎng)絡(luò)寸谜,子網(wǎng)絡(luò)間不互通属桦,但是子網(wǎng)絡(luò)內(nèi)的節(jié)點間是互通的熊痴。 ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末果善,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子巾陕,更是在濱河造成了極大的恐慌纪他,老刑警劉巖鄙煤,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件梯刚,死亡現(xiàn)場離奇詭異,居然都是意外死亡亡资,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門锥腻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來植康,“玉大人展懈,你說我怎么就攤上這事〈嫜拢” “怎么了?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵冗栗,是天一觀的道長。 經(jīng)常有香客問我隅居,道長,這世上最難降的妖魔是什么胎源? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮乘寒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘佑钾。我一直安慰自己烦粒,他們只是感情好休溶,可當(dāng)我...
    茶點故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布撒遣。 她就那樣靜靜地躺著,像睡著了一般禾进。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泻云,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天狐蜕,我揣著相機(jī)與錄音,去河邊找鬼层释。 笑死,一個胖子當(dāng)著我的面吹牛贡羔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乖寒,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼磅轻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起聋溜,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摹量,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缨称,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡祝迂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了型雳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡沿量,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出朴则,到底是詐尸還是另有隱情,我是刑警寧澤乌妒,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布外邓,位于F島的核電站,受9級特大地震影響损话,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜丧枪,卻給世界環(huán)境...
    茶點故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豪诲。 院中可真熱鬧挂绰,春花似錦服赎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至隧土,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間曹傀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工嗜价, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人幕庐。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓异剥,卻偏偏與公主長得像瑟由,于是被迫代替她去往敵國和親届吁。 傳聞我的和親對象是個殘疾皇子错妖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,876評論 2 361