CAP為什么不能兼得

原文鏈接 : http://www.bugclosed.com/post/9

什么是CAP

所謂CAP原則,是指在分布式系統(tǒng)中Consistency(一致性)、 Availability(可用性)古话、Partition tolerance(分區(qū)容錯(cuò)性)三者不能同時(shí)得到。

  • 一致性:在分布式系統(tǒng)中,一個(gè)數(shù)據(jù)存在多個(gè)副本的情況下梗夸,各個(gè)副本的值是否一致。
  • 可用性:當(dāng)系統(tǒng)收到一個(gè)請(qǐng)求后号醉,在一定時(shí)間之內(nèi)反症,總是可以反饋一個(gè)結(jié)果給用戶(hù),無(wú)論成功還是失敗畔派。
  • 分區(qū)容錯(cuò)性:當(dāng)網(wǎng)絡(luò)出現(xiàn)分割后铅碍,系統(tǒng)仍然可以提供服務(wù)。

CAP拆解

在當(dāng)今的基礎(chǔ)網(wǎng)絡(luò)中父虑,存在不同的網(wǎng)絡(luò)運(yùn)營(yíng)商该酗,不同地域,不同的骨干線(xiàn)路等情況士嚎。比如在CDN廠(chǎng)商會(huì)按照運(yùn)營(yíng)商和地域?qū)⒄麄€(gè)網(wǎng)絡(luò)分成不同的“覆蓋”呜魄,每個(gè)“覆蓋”可以作為一個(gè)獨(dú)立的服務(wù)節(jié)點(diǎn)提供覆蓋內(nèi)的用戶(hù)訪(fǎng)問(wèn)。為了進(jìn)行細(xì)分拆解莱衩,可以將“覆蓋”看做分區(qū)隔離性中的“區(qū)”;

CA

假設(shè)不考慮分區(qū)(P)的情況下爵嗅,只有一個(gè)分區(qū)(副本),副本的一致性自不必說(shuō)笨蚁,自然是一致的睹晒;可用性方面趟庄,一個(gè)節(jié)點(diǎn)的寫(xiě)入不需要同步到其他節(jié)點(diǎn),可以高效完成伪很。如果增加多個(gè)分區(qū)(提高分區(qū)容錯(cuò)性)戚啥,數(shù)據(jù)的寫(xiě)入需要同步到多個(gè)節(jié)點(diǎn)(強(qiáng)一致性,所有節(jié)點(diǎn)同步成功后再返回用戶(hù))锉试,增加了同步時(shí)間和同步失敗的可能性猫十,降低了可用性;如果采用弱一致性呆盖,即寫(xiě)入操作在主節(jié)點(diǎn)成功后即返回用戶(hù)結(jié)果拖云,再通過(guò)異步方式同步到多個(gè)分區(qū),那么會(huì)增加同步失敗和數(shù)據(jù)丟失的幾率应又,降低了一致性宙项。

CP

假設(shè)不考慮可用性(A)的情況下,多個(gè)分區(qū)之間可以采用強(qiáng)一致性的機(jī)制株扛,保證數(shù)據(jù)的高度一致性(要么都成功要么都失斢瓤稹)。比如某個(gè)分區(qū)出現(xiàn)了故障或者分隔席里,分區(qū)沒(méi)有了響應(yīng)叔磷,由于放棄了可用性,所以可以無(wú)限等待并不斷重試直到網(wǎng)絡(luò)恢復(fù)奖磁,分區(qū)可用后將副本數(shù)據(jù)同步到所有節(jié)點(diǎn)改基。

AP

假設(shè)不考慮一致性(C)的情況下,多個(gè)分區(qū)和副本可以提供高可用性咖为。分區(qū)越多秕狰,用戶(hù)越能就近訪(fǎng)問(wèn),提供響應(yīng)速度躁染;放棄了一致性后鸣哀,副本的寫(xiě)入操作可以寫(xiě)入主節(jié)點(diǎn)成功后即可返回成功,獲得搞可用性吞彤,然后通過(guò)異步的方式將副本同步到多個(gè)分區(qū)節(jié)點(diǎn)上我衬。

由此可見(jiàn),CAP三者確實(shí)不能同時(shí)滿(mǎn)足饰恕,只能根據(jù)具體的分布式業(yè)務(wù)場(chǎng)景做取舍和折中挠羔;比如銀行系統(tǒng)可以犧牲可用性從而保障CP,響應(yīng)慢一點(diǎn)(甚至網(wǎng)絡(luò)故障暫停服務(wù))總比賬戶(hù)資金出現(xiàn)錯(cuò)誤更優(yōu)埋嵌。而很多提供互聯(lián)網(wǎng)服務(wù)可以一定程度犧牲一致性來(lái)保障AP破加,因?yàn)榛ヂ?lián)網(wǎng)競(jìng)爭(zhēng)激烈,追求的是用戶(hù)體驗(yàn)和效率雹嗦,希望用戶(hù)隨時(shí)隨地能夠高效獲得服務(wù)范舀,而一致性則通過(guò)一系列的措施做到最終一致性即可合是。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锭环,隨后出現(xiàn)的幾起案子聪全,更是在濱河造成了極大的恐慌,老刑警劉巖辅辩,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荔烧,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡汽久,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)踊餐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)景醇,“玉大人,你說(shuō)我怎么就攤上這事吝岭∪担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵窜管,是天一觀(guān)的道長(zhǎng)散劫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)幕帆,這世上最難降的妖魔是什么获搏? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮失乾,結(jié)果婚禮上常熙,老公的妹妹穿的比我還像新娘。我一直安慰自己碱茁,他們只是感情好裸卫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著纽竣,像睡著了一般墓贿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜓氨,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天聋袋,我揣著相機(jī)與錄音,去河邊找鬼语盈。 笑死舱馅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的刀荒。 我是一名探鬼主播代嗤,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼棘钞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了干毅?” 一聲冷哼從身側(cè)響起宜猜,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎硝逢,沒(méi)想到半個(gè)月后姨拥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡渠鸽,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年叫乌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片徽缚。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡憨奸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出凿试,到底是詐尸還是另有隱情排宰,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布那婉,位于F島的核電站板甘,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏详炬。R本人自食惡果不足惜盐类,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望呛谜。 院中可真熱鬧傲醉,春花似錦、人聲如沸呻率。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)礼仗。三九已至吐咳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間元践,已是汗流浹背韭脊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留单旁,地道東北人沪羔。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親蔫饰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子琅豆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 分布式系統(tǒng)面臨的第一個(gè)問(wèn)題就是數(shù)據(jù)分布,即將數(shù)據(jù)均勻地分布到多個(gè)存儲(chǔ)節(jié)點(diǎn)篓吁。另外茫因,為了保證可靠性和可用性,需要將數(shù)據(jù)...
    olostin閱讀 4,578評(píng)論 2 26
  • CAP理論斷言任何基于網(wǎng)絡(luò)的數(shù)據(jù)共享系統(tǒng)杖剪,最多只能滿(mǎn)足數(shù)據(jù)一致性冻押、可用性、分區(qū)容忍性三要素中的兩個(gè)要素盛嘿。但是通過(guò)顯...
    他山之石頭閱讀 1,370評(píng)論 1 4
  • feisky云計(jì)算洛巢、虛擬化與Linux技術(shù)筆記posts - 1014, comments - 298, trac...
    不排版閱讀 3,855評(píng)論 0 5
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)次兆,斷路器狼渊,智...
    卡卡羅2017閱讀 134,661評(píng)論 18 139
  • 走進(jìn)大學(xué)新時(shí)代的大門(mén)之后,就意味著你要完完全全獨(dú)立自主城须,你已經(jīng)遠(yuǎn)離家長(zhǎng)蚤认,遠(yuǎn)離曾經(jīng)“熱愛(ài)”你的老師。 雖然家里每個(gè)月...
    武越閱讀 455評(píng)論 1 2