分布式事務(wù)的CAP理論

前言

通過前面的研究咙崎,我們了解了分布式系統(tǒng)的基本概念桩盲。與本地事務(wù)不同胳喷,分布式系統(tǒng)之所以被稱為分布式系統(tǒng)湃番,是因?yàn)樘峁┓?wù)的多個(gè)節(jié)點(diǎn)分布在不同的機(jī)器上,通過網(wǎng)絡(luò)相互作用吭露。由于網(wǎng)絡(luò)問題吠撮,整個(gè)系統(tǒng)無(wú)法提供服務(wù)。網(wǎng)絡(luò)因素成為分布式交易考慮的標(biāo)準(zhǔn)之一讲竿。因此泥兰,分布式事務(wù)需要進(jìn)一步的理論基礎(chǔ)。接下來题禀,讓我們學(xué)習(xí)分布式事務(wù)的cap理論鞋诗。

在解釋分布式事務(wù)控制解決方案之前,我們需要學(xué)習(xí)一些基本理論投剥,并通過理論知識(shí)指導(dǎo)我們確定分布式事務(wù)控制的目標(biāo)师脂,從而幫助我們理解每個(gè)解決方案。


1江锨、 CAP理論

CAP是consistency、availability和partition tolerance的縮寫糕篇,分別表示一致性啄育、可用性和分區(qū)容忍性。

為了便于理解CAP理論拌消,我們使用電子商務(wù)系統(tǒng)中的一些業(yè)務(wù)場(chǎng)景來理解CAP挑豌,如下圖所示,這是商品信息管理的執(zhí)行過程:



執(zhí)行過程如下:

(1) 商品請(qǐng)求主數(shù)據(jù)庫(kù)寫入商品信息(添加商品墩崩、修改商品氓英、刪除商品);

(2) 主數(shù)據(jù)庫(kù)成功寫入對(duì)商品和服務(wù)的響應(yīng)鹦筹;

(3) 商品服務(wù)請(qǐng)求從數(shù)據(jù)庫(kù)中讀取商品信息铝阐;


1.1 C - 均勻性

均勻性是寫操作后的讀操作可以讀取到最新的數(shù)據(jù)狀態(tài),當(dāng)數(shù)據(jù)分布在多個(gè)節(jié)點(diǎn)時(shí)铐拐,從任意節(jié)點(diǎn)讀取到的數(shù)據(jù)都是最新的狀態(tài)徘键。

上圖中,商品信息的讀寫要滿足均勻性就是要實(shí)現(xiàn)如下目標(biāo):

(1) 如果貨物和服務(wù)成功寫入主數(shù)據(jù)庫(kù)遍蟋,新數(shù)據(jù)將從從數(shù)據(jù)庫(kù)中查詢成功吹害。

(2) 如果商品服務(wù)無(wú)法寫入主數(shù)據(jù)庫(kù),則無(wú)法向從數(shù)據(jù)庫(kù)查詢新數(shù)據(jù)虚青。

如何實(shí)現(xiàn)一致性它呀?

(1) 寫入主數(shù)據(jù)庫(kù)后,需要將數(shù)據(jù)同步到從數(shù)據(jù)庫(kù)。

(2) 寫入主數(shù)據(jù)庫(kù)后纵穿,在同步到從數(shù)據(jù)庫(kù)期間鎖定從數(shù)據(jù)庫(kù)烟号,同步完成后解除鎖定,避免新數(shù)據(jù)庫(kù)寫入成功后從數(shù)據(jù)庫(kù)查詢舊數(shù)據(jù)政恍。

分布式一致性的特點(diǎn):

(1) 由于數(shù)據(jù)同步的過程汪拥,相應(yīng)的寫入操作將被延遲。

(2)為了保證數(shù)據(jù)一致性會(huì)對(duì)資源暫時(shí)鎖定篙耗,待數(shù)據(jù)同步完成釋放鎖定資源迫筑。

(3) 如果節(jié)點(diǎn)請(qǐng)求數(shù)據(jù)同步失敗,它將返回錯(cuò)誤信息宗弯,并且不會(huì)返回舊信息脯燃。


1.2 A-可用性

可用性意味著任何事務(wù)操作都可以獲得相應(yīng)的結(jié)果,而無(wú)需響應(yīng)超時(shí)或響應(yīng)錯(cuò)誤蒙保。

在上圖中辕棚,為了讀取商品信息以滿足可用性,實(shí)現(xiàn)了以下目標(biāo):

(1) 從數(shù)據(jù)庫(kù)接收查詢請(qǐng)求可以立即響應(yīng)數(shù)據(jù)查詢結(jié)果邓厕。

(2) 來自數(shù)據(jù)庫(kù)的查詢不允許響應(yīng)超時(shí)或響應(yīng)錯(cuò)誤逝嚎。


如何實(shí)現(xiàn)可用性?

(1) 寫入主數(shù)據(jù)庫(kù)會(huì)將數(shù)據(jù)同步到從數(shù)據(jù)庫(kù)详恼。

(2) 因?yàn)橐_保從數(shù)據(jù)庫(kù)的可用性补君,所以無(wú)法鎖定從數(shù)據(jù)庫(kù)中的資源。

(3) 如果實(shí)時(shí)數(shù)據(jù)尚未同步昧互,則還應(yīng)從數(shù)據(jù)庫(kù)返回要查詢的數(shù)據(jù)挽铁。即使舊數(shù)據(jù)不可用,也可以根據(jù)約定返回默認(rèn)消息敞掘,但不能返回錯(cuò)誤或相應(yīng)的超時(shí)叽掘。

分布式系統(tǒng)可用性特點(diǎn):

(1) 所有請(qǐng)求都有響應(yīng),并且不會(huì)出現(xiàn)響應(yīng)超時(shí)或響應(yīng)錯(cuò)誤玖雁。


1.3 P-分區(qū)容忍性

通常分布式系統(tǒng)的各個(gè)節(jié)點(diǎn)部署在不同的子網(wǎng)更扁,這就是網(wǎng)絡(luò)分區(qū),不可避免的會(huì)出現(xiàn)由于網(wǎng)絡(luò)問題而導(dǎo)致節(jié)點(diǎn)之間通信失敗茄菊,此時(shí)仍可對(duì)外提供服務(wù)疯潭,這叫分區(qū)容忍性。

上圖中面殖,商品信息讀寫要滿足分區(qū)容忍性就是要實(shí)現(xiàn)如下目標(biāo):

(1) 主數(shù)據(jù)與從數(shù)據(jù)同步失敗不影響讀寫操作竖哩。

(2) 如果一個(gè)節(jié)點(diǎn)掛斷,另一個(gè)節(jié)點(diǎn)提供的外部服務(wù)將不受影響脊僚。

如何實(shí)現(xiàn)分區(qū)容忍性相叁?

(1) 嘗試使用異步而不是同步操作遵绰,例如,使用異步方法將主數(shù)據(jù)庫(kù)中的數(shù)據(jù)同步到從數(shù)據(jù)庫(kù)中增淹,這樣節(jié)點(diǎn)就可以有效地實(shí)現(xiàn)松耦合椿访。

(2) 從數(shù)據(jù)庫(kù)節(jié)點(diǎn)添加,其中一個(gè)節(jié)點(diǎn)掛起其他節(jié)點(diǎn)以提供服務(wù)虑润。

分布式分區(qū)容忍性的特點(diǎn):

(1)分區(qū)容忍性是分布式系統(tǒng)具備的基本能力成玫。


2、 CAP結(jié)合模式

在所有分布式事務(wù)場(chǎng)景中拳喻,由于C和a不能在P的前提下共存哭当,因此不會(huì)同時(shí)出現(xiàn)cap特性。

下圖滿足了P即表示實(shí)現(xiàn)了分區(qū)容忍性:


分區(qū)容忍的含義:

(1) 主數(shù)據(jù)庫(kù)將數(shù)據(jù)從網(wǎng)絡(luò)同步到從數(shù)據(jù)庫(kù)冗澈∏湛保可以認(rèn)為主從數(shù)據(jù)庫(kù)部署在不同的分區(qū)上,通過網(wǎng)絡(luò)進(jìn)行交互亚亲。

(2) 當(dāng)主從數(shù)據(jù)庫(kù)之間的網(wǎng)絡(luò)出現(xiàn)問題時(shí)彻采,主從數(shù)據(jù)庫(kù)提供的服務(wù)不受影響。

(3) 如果一個(gè)節(jié)點(diǎn)掛斷捌归,另一個(gè)節(jié)點(diǎn)提供的服務(wù)將不受影響肛响。

如果要實(shí)現(xiàn)C則必須保證數(shù)據(jù)一致性,在數(shù)據(jù)同步的時(shí)候?yàn)榉乐瓜驈臄?shù)據(jù)庫(kù)查詢的不一致則需要從數(shù)據(jù)庫(kù)鎖定陨溅,待完成同步之后解鎖终惑,如果同步失敗從數(shù)據(jù)庫(kù)要返回錯(cuò)誤信息或超時(shí)信息。

如果要實(shí)現(xiàn)门扇,則必須確保數(shù)據(jù)可用性。您可以隨時(shí)從數(shù)據(jù)庫(kù)查詢數(shù)據(jù)偿渡,并且不能返回錯(cuò)誤信息或超時(shí)信息

通過分析臼寄,在滿足P的前提下,C與a之間存在矛盾溜宽。

因此吉拳,在分布式事務(wù)處理的生產(chǎn)中,需要根據(jù)需要確定cap的哪兩個(gè)方面是滿足的适揉。




1.1 CA結(jié)合

CA結(jié)合就是保證一致性和可用性留攒,放棄區(qū)域公差,即不進(jìn)行分區(qū)嫉嘀,不考慮由于網(wǎng)絡(luò)不通或節(jié)點(diǎn)掛掉的問題炼邀。那么系統(tǒng)將不是一個(gè)標(biāo)準(zhǔn)的分布式系統(tǒng),我們最常用的關(guān)系型數(shù)據(jù)庫(kù)就滿足了CA剪侮。


1.2 CP結(jié)合

CP結(jié)合就是保證一致性和分區(qū)容忍性拭宁,放棄可用性。Zookerper就是追求強(qiáng)一致性,放棄了可用性杰标,還有跨行轉(zhuǎn)賬兵怯,一次轉(zhuǎn)賬請(qǐng)求要等待雙方銀行系統(tǒng)都完成整個(gè)事務(wù)才能完成。

1.3 AP結(jié)合

AP結(jié)合就是保證可用性和分區(qū)容忍性腔剂,放棄一致性媒区。這是分布式系統(tǒng)設(shè)計(jì)時(shí)的選擇。


三掸犬、總結(jié)

通過上面我們學(xué)習(xí)了CAP的基礎(chǔ)理論知識(shí)袜漩,CAP是一個(gè)已經(jīng)證實(shí)的理論:一個(gè)分布式系統(tǒng)做多只能滿足CAP中的兩項(xiàng),為達(dá)到良好的響應(yīng)性能來提高用戶體驗(yàn)登渣,因此一般會(huì)做出如下選擇:保證A和P噪服,舍棄C強(qiáng)一致性,保證最終一致性胜茧。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粘优,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子呻顽,更是在濱河造成了極大的恐慌雹顺,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廊遍,死亡現(xiàn)場(chǎng)離奇詭異嬉愧,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)喉前,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門没酣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卵迂,你說我怎么就攤上這事裕便。” “怎么了见咒?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵偿衰,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我改览,道長(zhǎng)下翎,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任宝当,我火速辦了婚禮视事,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘今妄。我一直安慰自己郑口,他們只是感情好鸳碧,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著犬性,像睡著了一般瞻离。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上乒裆,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天套利,我揣著相機(jī)與錄音,去河邊找鬼鹤耍。 笑死肉迫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的稿黄。 我是一名探鬼主播喊衫,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼杆怕!你這毒婦竟也來了族购?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤陵珍,失蹤者是張志新(化名)和其女友劉穎寝杖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體互纯,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瑟幕,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了留潦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片只盹。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖兔院,靈堂內(nèi)的尸體忽然破棺而出鹿霸,到底是詐尸還是另有隱情,我是刑警寧澤秆乳,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站钻哩,受9級(jí)特大地震影響屹堰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜街氢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一扯键、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珊肃,春花似錦荣刑、人聲如沸馅笙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)董习。三九已至,卻和暖如春爱只,著一層夾襖步出監(jiān)牢的瞬間皿淋,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工恬试, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留窝趣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓训柴,卻偏偏與公主長(zhǎng)得像哑舒,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幻馁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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