CAP定理

最近發(fā)生了比較多的大事情

  1. 很遺憾浴鸿,之前的測試小姐姐被組織給分配走了,以后就是別人的測試小姐姐了
  2. 最近成功忽悠到某個開發(fā)小姐姐一起寫文檔蔬顾,所以新的文檔都會先在github上合作開發(fā)郊供,等到定稿之后再發(fā)布出來

附:原文鏈接

目錄

  1. CAP定理
  2. 可用性
  3. 分區(qū)容忍性
    3.1 分區(qū)
    3.2 分布式系統(tǒng)為什么不能同時選擇CA
  4. 一致性
    4.1 ACID
    4.2 為什么不一致
  5. BASE理論

1. CAP定理

一個分布式系統(tǒng)不可能同事滿足一致性(Consistency),可用性(Availability)和分區(qū)容忍性(Partition tolerance),最多只能同時滿足兩個

一致性:數(shù)據(jù)在多個副本之間保持一致。這很好理解,你在同一時間從集群的任意一個節(jié)點進行讀寫操作,結(jié)果都應(yīng)該一樣

可用性:每一個請求都應(yīng)該在一定時間內(nèi)獲得明確響應(yīng)瞎惫。服務(wù)一直可以對請求返回相應(yīng),而且是正常響應(yīng)時間

分區(qū)容忍性:大多數(shù)分布式系統(tǒng)都分布在多個子網(wǎng)絡(luò)译株。每個子網(wǎng)絡(luò)就叫做一個區(qū)(partition)瓜喇。分區(qū)容錯的意思是,區(qū)間通信可能失敗歉糜,失敗的情況下仍然能夠提供服務(wù)乘寒。

2. 可用性(Availability)

??可用性有兩個指標(biāo)

  1. 明確響應(yīng):所有可能的響應(yīng)結(jié)果都應(yīng)該在契約中有明確定義,不應(yīng)該出現(xiàn)協(xié)議之外的響應(yīng)或異常
  2. 一定時間:所有的請求都應(yīng)該在一定時間內(nèi)返回匪补,不能讓請求方一直等待

??對于一個本地調(diào)用來說伞辛,請求結(jié)果通常只有兩種狀態(tài):成功和失敗。但是引入了網(wǎng)絡(luò)之后夯缺,除了成功和失敗之外始锚,還會產(chǎn)生超時,這時候是無法確定請求到底是成功還是失敗的喳逛。

3. 分區(qū)容忍性(Partition tolerance)

3.1 分區(qū)

??首先分區(qū)如何產(chǎn)生?因為網(wǎng)絡(luò)棵里、硬件或軟件的原因润文,導(dǎo)致兩個節(jié)點之間的消息不能正常投遞姐呐。那么不能被正常訪問到的節(jié)點和其它節(jié)點就形成了不同的分區(qū)。
比如典蝌,一臺服務(wù)器放在中國曙砂,另一臺服務(wù)器放在美國,這就是兩個區(qū)骏掀,它們之間可能無法通信鸠澈。

3.2 分布式系統(tǒng)為什么不能同時選擇CA

??基于網(wǎng)絡(luò)的不可靠性,分區(qū)必然是會發(fā)生的截驮。當(dāng)分區(qū)發(fā)生的時候笑陈,你或者失去一致性(因為允許分別更新分區(qū)兩邊)或者失去可用性(因為你檢測到錯誤,關(guān)閉系統(tǒng)葵袭,直到分區(qū)消失)
如果不要求P(不允許分區(qū))涵妥,則C(強一致性)和A(可用性)是可以保證的。但放棄P的同時也就意味著放棄了系統(tǒng)的擴展性坡锡,也就是分布式節(jié)點受限蓬网,沒辦法部署子節(jié)點,這是違背分布式系統(tǒng)設(shè)計的初衷的鹉勒。

4. 一致性(Consistency)

4.1 ACID

??一致性要求我們在同一時間在系統(tǒng)任何一個節(jié)點進行的讀寫操作都能得到一致的結(jié)果帆锋。關(guān)系型數(shù)據(jù)庫通常會談到ACID特性,滿足ACID特性的數(shù)據(jù)庫都通過事務(wù)機制來達到一致性

  • A: Atomicity禽额,原子性
  • C : Consistency锯厢, 一 致性
  • I: Isolation,隔離性绵疲。
  • D: Durability哲鸳,持久性。

4.2 為什么不一致

??分布式系統(tǒng)為了解決大數(shù)據(jù)盔憨、高并發(fā)徙菠、復(fù)雜業(yè)務(wù)邏輯的問題,會對服務(wù)進行水平擴展或垂直拆分

  • 水平擴展:將一個節(jié)點擴展為多個節(jié)點郁岩,那么這些節(jié)點之間的數(shù)據(jù)就可能會產(chǎn)生不一致
  • 垂直拆分:將一個業(yè)務(wù)拆分成多個職責(zé)單一的模塊進行合作婿奔,那么這些模塊之間的數(shù)據(jù)和狀態(tài)也就有可能產(chǎn)生不一致

??我們?nèi)匀豢梢酝ㄟ^分布式事務(wù)來盡量保證一致性,但那將會付出更大的代價

5. BASE理論

??在分區(qū)容忍性這一節(jié)已經(jīng)分析過了问慎,分區(qū)是不可避免的萍摊,所以我們需要在C和A之間進行取舍,當(dāng)然這種取舍也并不是非此即彼的如叼,我們可以在這兩者之間找到一個平衡

BASE理論
  • BA: Basically Available冰木,基本可用 。基本可用是指在出現(xiàn)故障時踊沸,可以損失一部分非核心流程的可用性來保證系統(tǒng)基本可用
  • S: Soft State歇终,軟狀態(tài)。允許狀態(tài)在一段時間內(nèi)不同步逼龟。
  • E: Eventually Consistent评凝,最終一致。你不能讓系統(tǒng)永遠(yuǎn)處于軟狀態(tài)腺律,所以在一定的時間窗口內(nèi)奕短, 最終數(shù)據(jù)達成一致即可。

??BASE理論是在CAP定理下在一致性可用性之間進行博弈的結(jié)果匀钧。不要求強一致性翎碑,而是根據(jù)自身的業(yè)務(wù)特點,采用適當(dāng)?shù)姆绞絹硎瓜到y(tǒng)達到最終一致性

??最終一致性強調(diào)的是系統(tǒng)中所有的數(shù)據(jù)副本榴捡,在經(jīng)過一段時間的同步后杈女,最終能夠達到一個一致的狀態(tài)。因此吊圾,最終一致性的本質(zhì)是需要系統(tǒng)保證最終數(shù)據(jù)能夠達到一致达椰,而不需要實時保證系統(tǒng)數(shù)據(jù)的強一致性

??事實上,最終一致性并不是只有那些大型分布式系統(tǒng)才設(shè)計的特性项乒,許多現(xiàn)代的關(guān)系型數(shù)據(jù)庫都采用了最終一致性模型啰劲。在現(xiàn)代關(guān)系型數(shù)據(jù)庫中,大多都會采用同步和異步方式來實現(xiàn)主備數(shù)據(jù)復(fù)制技術(shù)檀何。在同步方式中蝇裤,數(shù)據(jù)的復(fù)制通常是更新事務(wù)的一部分,因此在事務(wù)完成后频鉴,主備數(shù)據(jù)庫的數(shù)據(jù)就會達到一致栓辜。而在異步方式中,備庫的更新往往存在延時垛孔,這取決于事務(wù)日志在主備數(shù)據(jù)庫之間傳輸?shù)臅r間長短藕甩,如果傳輸時間過長或者甚至在日志傳輸過程中出現(xiàn)異常導(dǎo)致無法及時將事務(wù)應(yīng)用到備庫上,那么顯然周荐,從備庫中讀取的的數(shù)據(jù)將是舊的狭莱,因此就出現(xiàn)了不一致的情況。當(dāng)然概作,無論是采用多次重試還是認(rèn)為數(shù)據(jù)訂正腋妙,關(guān)系型數(shù)據(jù)庫還是能搞保證最終數(shù)據(jù)達到一致——這就是系統(tǒng)提供最終一致性保證的經(jīng)典案例。

TIPS

什么是4個9

系統(tǒng)可用性=系統(tǒng)可用時間/(系統(tǒng)可用時間+系統(tǒng)故障時間) 比如說你有一個系統(tǒng)讯榕,在過去一年里總共有24小時的時間因為各種故障導(dǎo)致不能對外提供服務(wù)骤素,那么可用性就是364/365=99.73% emmm...這就叫兩個9

通俗叫法 可用性級別 年度停機時間
2個9 99% 87.6小時
3個9 99.9% 8.8小時
4個9 99.99% 53分鐘
5個9 99.999% 5分鐘

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末垃僚,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子规辱,更是在濱河造成了極大的恐慌,老刑警劉巖栽燕,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罕袋,死亡現(xiàn)場離奇詭異,居然都是意外死亡碍岔,警方通過查閱死者的電腦和手機浴讯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔼啦,“玉大人榆纽,你說我怎么就攤上這事∧笾” “怎么了奈籽?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鸵赫。 經(jīng)常有香客問我衣屏,道長,這世上最難降的妖魔是什么辩棒? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任狼忱,我火速辦了婚禮,結(jié)果婚禮上一睁,老公的妹妹穿的比我還像新娘钻弄。我一直安慰自己,他們只是感情好者吁,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布窘俺。 她就那樣靜靜地躺著,像睡著了一般砚偶。 火紅的嫁衣襯著肌膚如雪批销。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天染坯,我揣著相機與錄音均芽,去河邊找鬼。 笑死单鹿,一個胖子當(dāng)著我的面吹牛掀宋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劲妙,長吁一口氣:“原來是場噩夢啊……” “哼湃鹊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起镣奋,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤币呵,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后侨颈,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體余赢,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年哈垢,在試婚紗的時候發(fā)現(xiàn)自己被綠了妻柒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡耘分,死狀恐怖举塔,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情求泰,我是刑警寧澤央渣,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站拜秧,受9級特大地震影響痹屹,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜枉氮,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一志衍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧聊替,春花似錦楼肪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至泣港,卻和暖如春暂殖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背当纱。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工呛每, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坡氯。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓晨横,卻偏偏與公主長得像洋腮,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子手形,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354