分布式系統(tǒng)之 CAP 理論和 Base 理論

內(nèi)容整理自 邴越分布式技術(shù)原理與實(shí)戰(zhàn)45講事期,『一塊錢(qián)上車(chē)傳送門(mén)』轧房。持續(xù)學(xué)習(xí),遇見(jiàn)更好的自己湿刽!

一的烁、 分布式系統(tǒng)

1. 集中式系統(tǒng)的性能問(wèn)題

畢竟單臺(tái)機(jī)器的性能有限,集中式架構(gòu)的性能問(wèn)題主要包含:

  • 可用性不高叭爱,容易出現(xiàn)點(diǎn)單故障
  • 可擴(kuò)展性不高撮躁,水平擴(kuò)展系統(tǒng)容量的難度較大
  • 可維護(hù)性低漱病,業(yè)務(wù)系統(tǒng)間的耦合程度大
  • 成本高买雾,高配置機(jī)器成本和低配置機(jī)器的成本并不是線性關(guān)系
2. 分布式系統(tǒng)的好處

分布式系統(tǒng)的核心是 可擴(kuò)展性,通過(guò)多臺(tái)機(jī)器的合作來(lái)完成單臺(tái)機(jī)器無(wú)法完成的任務(wù)杨帽。好處是:

  • 成本低漓穿,可以由多臺(tái)一般配置的機(jī)器協(xié)同合作,來(lái)完成需要高配置機(jī)器才能完成的工作注盈。
  • 可用性高晃危,多臺(tái)機(jī)器同時(shí)出故障的幾率要小于單臺(tái)機(jī)器出故障的幾率。
  • 可擴(kuò)展性高,理想情況下僚饭,只需要水平增加機(jī)器就可以線性增加系統(tǒng)容量
3. 分布式系統(tǒng)常見(jiàn)問(wèn)題

由于分布式系統(tǒng)由多臺(tái)機(jī)器協(xié)同合作來(lái)提供服務(wù)震叮,雖然避免了 單點(diǎn)故障,提高了可用性鳍鸵,但也存在一些問(wèn)題:

  • 多臺(tái)機(jī)器間的通信:
    • 時(shí)序性
    • 網(wǎng)絡(luò)可用性
  • 多臺(tái)機(jī)器間的數(shù)據(jù):
    • 狀態(tài)的一致性
    • 同步的實(shí)時(shí)性

二苇瓣、 CAP理論

1. 結(jié)論

CAP 理論指出,一個(gè)分布式系統(tǒng)只能同時(shí)滿足以下兩點(diǎn):

  • Consistency 一致性:所有機(jī)器同時(shí)看到相同的數(shù)據(jù)
  • Availability 可用性:任何時(shí)候偿乖,讀寫(xiě)都是成功的
  • Partition Tolerance 分區(qū)容忍性:部分機(jī)器通信延遲击罪、失敗或者故障時(shí),系統(tǒng)還可以繼續(xù)提供一致贪薪、可用的服務(wù)
2. 結(jié)論反證

假設(shè)能夠同時(shí)保證 CAP媳禁,因?yàn)?P 的存在,則一定存在部分機(jī)器間無(wú)法通信的情況画切,那么則一定無(wú)法保證所有機(jī)器之間的一致性竣稽。

3. CP 和 AP

由于 P 是一定的,分布式系統(tǒng)可分為:

  • CP:犧牲一些可用性霍弹,來(lái)保證更好的一致性丧枪。如:ZooKeeper,用來(lái)解決分布式系統(tǒng)中多臺(tái)機(jī)器的協(xié)調(diào)和一致性問(wèn)題庞萍。
  • AP:犧牲一些一致性拧烦,來(lái)保證更好的可用性。如:Eureka钝计,用來(lái)在微服務(wù)系統(tǒng)中提供服務(wù)的注冊(cè)和查詢功能恋博。

三、 Base 理論

1. 一致性分類(lèi)

一致性分類(lèi):

  • 強(qiáng)一致性:多臺(tái)機(jī)器的狀態(tài)私恬,一致且實(shí)時(shí)债沮。
  • 弱一致性:多臺(tái)機(jī)器的狀態(tài),在用戶能夠接受的時(shí)間范圍內(nèi)本鸣,能達(dá)到 最終一致疫衩。細(xì)分:
    • 因果一致性,如:會(huì)話一致性
    • 單調(diào)讀一致性
    • 單調(diào)寫(xiě)一致性
2. 因果一致性舉例

因果一致性是指荣德,有因果關(guān)系的操作在順序上能夠得到保證闷煤。即:機(jī)器 A 完成了對(duì)某數(shù)據(jù)的更新,然后告知了機(jī)器 B涮瞻,機(jī)器 B 必須能夠讀取到機(jī)器 A 更新后的數(shù)據(jù)鲤拿,如果機(jī)器 B 也要更新那個(gè)數(shù)據(jù),必須在機(jī)器 A 的更新結(jié)果上進(jìn)行更新署咽。

比如微信:你發(fā)了一個(gè)朋友圈近顷,你的朋友進(jìn)行了評(píng)論,評(píng)論動(dòng)作由 A 機(jī)器來(lái)完成。此后窒升,你又對(duì)朋友的評(píng)論進(jìn)行了回復(fù)缀遍,回復(fù)動(dòng)作由 B 機(jī)器來(lái)完成。這時(shí)的 評(píng)論回復(fù) 就有因果關(guān)系饱须,執(zhí)行順序必須得到保證瑟由。

3. 會(huì)話一致性舉例

會(huì)話一致性是指,在一個(gè)會(huì)話中冤寿,必須 能夠讀到剛才寫(xiě)入的數(shù)據(jù)歹苦。比如:分布式系統(tǒng)中的 session 一致性問(wèn)題。

4. Base 理論

Base 理論的核心思想是 最終一致性督怜,簡(jiǎn)單概述就是:放棄強(qiáng)一致性殴瘦,追求分區(qū)容錯(cuò)性和可用性。具體是:

  • Basically Available号杠,基本可用蚪腋。

基本可用是指,不追求 任何時(shí)候讀寫(xiě)都是成功的姨蟋,而是 系統(tǒng)能夠基本運(yùn)行屉凯,一直提供服務(wù)。例如:在一些秒殺系統(tǒng)中眼溶,當(dāng)最大 QPS 超過(guò)系統(tǒng)容量時(shí)悠砚,返回的 稍后再試,就是基本可用的一種表現(xiàn)堂飞。

  • Soft State灌旧,軟狀態(tài)。

對(duì)比數(shù)據(jù)庫(kù)中的 ACID 模型绰筛,要求操作的原子性枢泰,結(jié)果的一致性,就是一種 硬狀態(tài)铝噩。而 軟狀態(tài) 是指衡蚂,允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),并且不影響系統(tǒng)的整體可用性骏庸。比如:數(shù)據(jù)庫(kù)集群中的同步延遲問(wèn)題毛甲,我們可以接受這個(gè)延遲,多個(gè)機(jī)器間的數(shù)據(jù)短時(shí)間內(nèi)的不一致敞恋,就是一種 軟狀態(tài)丽啡。

  • Eventually Consistent谋右,最終一致硬猫。

最終一致 是指,數(shù)據(jù)不能一直是 軟狀態(tài),需要在一個(gè)能接受的時(shí)間范圍內(nèi)啸蜜,能夠達(dá)到一致性坑雅。還以數(shù)據(jù)庫(kù)集群為例,我們?cè)试S同步延遲衬横,但還是要能夠 在一定時(shí)間后裹粤,集群達(dá)到一致,而這個(gè) 遲到的一致 就稱為 最終一致蜂林。

5. Base 和 CAP 的關(guān)系

Base 是在 CAP 的基礎(chǔ)上演化而來(lái)的遥诉。CAP 指出了 一致性、可用性噪叙、分區(qū)容錯(cuò)性矮锈,這三者只能選擇兩者,Base 是一種 AP 方案睁蕾,即:在分區(qū)容錯(cuò)性一定存在的前提下苞笨,通過(guò)將強(qiáng)一致性退化為最終一致性的犧牲,來(lái)最求更好的可用性子眶。

很多分布式系統(tǒng)都在選擇 Base 理論作為架構(gòu)方式瀑凝,比如:NoSQL 和 微服務(wù),強(qiáng)調(diào)通過(guò)服務(wù)降級(jí)等方式保證基本可用臭杰,最求更高的可擴(kuò)展性粤咪,從而保證更好的可用性。而某些對(duì)數(shù)據(jù)有強(qiáng)一致性要求的應(yīng)用渴杆,如金融系統(tǒng)射窒,則應(yīng)該選擇 CP 思路的架構(gòu)方式。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末将塑,一起剝皮案震驚了整個(gè)濱河市脉顿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌点寥,老刑警劉巖艾疟,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異敢辩,居然都是意外死亡蔽莱,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)戚长,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)盗冷,“玉大人,你說(shuō)我怎么就攤上這事同廉∫翘牵” “怎么了柑司?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锅劝。 經(jīng)常有香客問(wèn)我攒驰,道長(zhǎng),這世上最難降的妖魔是什么故爵? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任玻粪,我火速辦了婚禮,結(jié)果婚禮上诬垂,老公的妹妹穿的比我還像新娘劲室。我一直安慰自己,他們只是感情好结窘,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布痹籍。 她就那樣靜靜地躺著,像睡著了一般晦鞋。 火紅的嫁衣襯著肌膚如雪蹲缠。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,036評(píng)論 1 285
  • 那天悠垛,我揣著相機(jī)與錄音线定,去河邊找鬼。 笑死确买,一個(gè)胖子當(dāng)著我的面吹牛斤讥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湾趾,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼芭商,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了搀缠?” 一聲冷哼從身側(cè)響起铛楣,我...
    開(kāi)封第一講書(shū)人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎艺普,沒(méi)想到半個(gè)月后簸州,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡歧譬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年岸浑,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瑰步。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡矢洲,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缩焦,到底是詐尸還是另有隱情读虏,我是刑警寧澤责静,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站掘譬,受9級(jí)特大地震影響泰演,放射性物質(zhì)發(fā)生泄漏呻拌。R本人自食惡果不足惜葱轩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望藐握。 院中可真熱鬧靴拱,春花似錦、人聲如沸猾普。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)初家。三九已至偎窘,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間溜在,已是汗流浹背陌知。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留掖肋,地道東北人仆葡。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像志笼,于是被迫代替她去往敵國(guó)和親沿盅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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