分布式事務(wù)

作者:清風(fēng)

鏈接:https://www.zhihu.com/question/45413135/answer/115487086

來源:知乎

著作權(quán)歸作者所有,轉(zhuǎn)載請聯(lián)系作者獲得授權(quán)。

分布式系統(tǒng)架構(gòu)中,分布式事務(wù)是一個繞不過去的挑戰(zhàn)!微服務(wù)架構(gòu)本質(zhì)上就是分布式服務(wù)化架構(gòu),微服務(wù)架構(gòu)的流行,讓分布式事務(wù)問題日益突出!尤其是在訂單業(yè)務(wù)、資金業(yè)務(wù)等系統(tǒng)核心業(yè)務(wù)流程中,一定要有可靠的分布式事務(wù)解決方案來保證業(yè)務(wù)數(shù)據(jù)的可靠性和準確性。

目前比較多的解決方案有幾個:

一、結(jié)合MQ消息中間件實現(xiàn)的可靠消息最終一致性

二、TCC補償性事務(wù)解決方案

三、最大努力通知型方案

第一種方案:可靠消息最終一致性,需要業(yè)務(wù)系統(tǒng)結(jié)合MQ消息中間件實現(xiàn),在實現(xiàn)過程中需要保證消息的成功發(fā)送及成功消費。即需要通過業(yè)務(wù)系統(tǒng)控制MQ的消息狀態(tài)

第二種方案:TCC補償性,分為三個階段TRYING-CONFIRMING-CANCELING。每個階段做不同的處理。

TRYING階段主要是對業(yè)務(wù)系統(tǒng)進行檢測及資源預(yù)留

CONFIRMING階段是做業(yè)務(wù)提交,通過TRYING階段執(zhí)行成功后,再執(zhí)行該階段。默認如果TRYING階段執(zhí)行成功,CONFIRMING就一定能成功。

CANCELING階段是回對業(yè)務(wù)做回滾,在TRYING階段中,如果存在分支事務(wù)TRYING失敗,則需要調(diào)用CANCELING將已預(yù)留的資源進行釋放。

第三種方案:最大努力通知xing型,這種方案主要用在與第三方系統(tǒng)通訊時,比如:調(diào)用微信或支付寶支付后的支付結(jié)果通知。這種方案也是結(jié)合MQ進行實現(xiàn),例如:通過MQ發(fā)送http請求,設(shè)置最大通知次數(shù)。達到通知次數(shù)后即不再通知。

http://www.roncoo.com/article/detail/124243

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容