云計(jì)算
背景
ACID
原子性(Atomicity)
一致性(Consistency)
隔離性(Isolation)
持久性(Durability)
CAP
一致性:在分布式系統(tǒng)中的所有數(shù)據(jù)備份,在同一時(shí)刻是否同樣的值。
可用性:在集群中一部分節(jié)點(diǎn)故障后,集群整體是否還能響應(yīng)客戶端的讀寫請(qǐng)求。
分區(qū)容忍性:以實(shí)際效果而言,分區(qū)相當(dāng)于對(duì)通信的時(shí)限要求。系統(tǒng)如果不能在時(shí)限內(nèi)達(dá)成數(shù)據(jù)一致性,就意味著發(fā)生了分區(qū)的情況,必須就當(dāng)前操作在C和A之間做出選擇。
BASE理論
我們無法做到強(qiáng)一致,但每個(gè)應(yīng)用都可以根據(jù)自身的業(yè)務(wù)特點(diǎn),采用適當(dāng)?shù)姆绞絹硎瓜到y(tǒng)達(dá)到最終一致性。
解決方案
兩階段提交(2PC)
階段一
?階段二
情況1:當(dāng)所有參與者均反饋 yes,提交事務(wù)
情況2:當(dāng)有一個(gè)參與者反饋 no,回滾事務(wù)
問題
性能問題:所有參與者在事務(wù)提交階段處于同步阻塞狀態(tài),占用系統(tǒng)資源,容易導(dǎo)致性能瓶頸。
可靠性問題:如果協(xié)調(diào)者存在單點(diǎn)故障問題,或出現(xiàn)故障,提供者將一直處于鎖定狀態(tài)。
?數(shù)據(jù)一致性問題:在階段 2 中,如果出現(xiàn)協(xié)調(diào)者和參與者都掛了的情況,有可能導(dǎo)致數(shù)據(jù)不一致。
優(yōu)點(diǎn):盡量保證了數(shù)據(jù)的強(qiáng)一致,適合對(duì)數(shù)據(jù)強(qiáng)一致要求很高的關(guān)鍵領(lǐng)域。(其實(shí)也不能100%保證強(qiáng)一致)。
缺點(diǎn):實(shí)現(xiàn)復(fù)雜,犧牲了可用性,對(duì)性能影響較大,不適合高并發(fā)高性能場(chǎng)景。
三階段提交(3PC)
階段一
階段二
情況1:所有參與者均反饋 yes,協(xié)調(diào)者預(yù)執(zhí)行事務(wù)
情況2:只要有一個(gè)參與者反饋 no,或者等待超時(shí)后協(xié)調(diào)者尚無法收到所有提供者的反饋,即中斷事務(wù)
階段三
情況 1:所有參與者均反饋 ack 響應(yīng),執(zhí)行真正的事務(wù)提交
情況2:只要有一個(gè)參與者反饋 no,或者等待超時(shí)后協(xié)調(diào)組尚無法收到所有提供者的反饋,即回滾事務(wù)。
優(yōu)點(diǎn):相比二階段提交,三階段提交降低了阻塞范圍,在等待超時(shí)后協(xié)調(diào)者或參與者會(huì)中斷事務(wù)。避免了協(xié)調(diào)者單點(diǎn)問題。階段 3 中協(xié)調(diào)者出現(xiàn)問題時(shí),參與者會(huì)繼續(xù)提交事務(wù)。
缺點(diǎn):數(shù)據(jù)不一致問題依然存在,當(dāng)在參與者收到 preCommit 請(qǐng)求后等待 do commite 指令時(shí),此時(shí)如果協(xié)調(diào)者請(qǐng)求中斷事務(wù),而協(xié)調(diào)者無法與參與者正常通信,會(huì)導(dǎo)致參與者繼續(xù)提交事務(wù),造成數(shù)據(jù)不一致。
補(bǔ)償事務(wù)(TCC)
條件:
處理流程:
優(yōu)點(diǎn):
缺點(diǎn):TCC 的 Try、Confirm 和 Cancel 操作功能要按具體業(yè)務(wù)來實(shí)現(xiàn),業(yè)務(wù)耦合度較高,提高了開發(fā)成本。
本地消息表(消息隊(duì)列)
條件:?
服務(wù)消費(fèi)者需要?jiǎng)?chuàng)建一張消息表,用來記錄消息狀態(tài)。
服務(wù)消費(fèi)者和提供者需要支持冪等。
需要補(bǔ)償邏輯。
每個(gè)節(jié)點(diǎn)上起定時(shí)線程,檢查未處理完成或發(fā)出失敗的消息,重新發(fā)出消息,即重試機(jī)制和冪等性機(jī)制。
處理流程:
優(yōu)點(diǎn):從應(yīng)用設(shè)計(jì)開發(fā)的角度實(shí)現(xiàn)了消息數(shù)據(jù)的可靠性,消息數(shù)據(jù)的可靠性不依賴于消息中間件,弱化了對(duì) MQ 中間件特性的依賴。
缺點(diǎn):與具體的業(yè)務(wù)場(chǎng)景綁定,耦合性強(qiáng),不可公用。消息數(shù)據(jù)與業(yè)務(wù)數(shù)據(jù)同庫(kù),占用業(yè)務(wù)系統(tǒng)資源。業(yè)務(wù)系統(tǒng)在使用關(guān)系型數(shù)據(jù)庫(kù)的情況下,消息服務(wù)性能會(huì)受到關(guān)系型數(shù)據(jù)庫(kù)并發(fā)性能的局限。
MQ事務(wù)消息(最終一致性)
條件:
處理流程:
優(yōu)點(diǎn):
缺點(diǎn):
Sagas事務(wù)模型(最終一致性)
一、?事件/編排Choreography:沒有中央?yún)f(xié)調(diào)器(沒有單點(diǎn)風(fēng)險(xiǎn))時(shí),每個(gè)服務(wù)產(chǎn)生并聆聽其他服務(wù)的事件,并決定是否應(yīng)采取行動(dòng)。
處理流程:
優(yōu)點(diǎn):事件/編排是實(shí)現(xiàn)Saga模式的自然方式; 它很簡(jiǎn)單,容易理解,不需要太多的努力來構(gòu)建,所有參與者都是松散耦合的,因?yàn)樗麄儽舜酥g沒有直接的耦合。如果您的事務(wù)涉及2至4個(gè)步驟,則可能是非常合適的。
二、?命令/協(xié)調(diào)orchestrator:中央?yún)f(xié)調(diào)器負(fù)責(zé)集中處理事件的決策和業(yè)務(wù)邏輯排序。
優(yōu)點(diǎn):
缺點(diǎn):協(xié)調(diào)器中集中太多邏輯的風(fēng)險(xiǎn)。
當(dāng)前標(biāo)題:調(diào)研|5種分布式事務(wù)解決方案優(yōu)缺點(diǎn)對(duì)比
鏈接地址:http://chinadenli.net/article12/choedc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、響應(yīng)式網(wǎng)站、微信公眾號(hào)、品牌網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)