分布式事務(wù)-seata

一:分享下 對阿里的seata 分布式事務(wù)中間件的理解
????? 非分布式系統(tǒng)的業(yè)務(wù)模式如下圖:
??????

傳統(tǒng)購物流程事務(wù)

購物流程:訂單-->支付-->物流 三個(gè)模塊都是連接同一數(shù)據(jù)庫。把三個(gè)模塊都放在同一個(gè)事務(wù)中,就可以保證業(yè)務(wù)的原子性。

分布式架構(gòu)中的購物流程如下圖:

分布式購物流程事務(wù)

訂單,交易,物流 這三個(gè)模塊分別擁有自己的數(shù)據(jù)庫。所以無法把三個(gè)模塊放在同一個(gè)數(shù)據(jù)庫事務(wù)中。
那seata 是如何來解決分布式事務(wù)的呢?看下圖

seata 示意圖

先來聲明幾個(gè)名詞:
a.事務(wù)管理者
b.事務(wù)發(fā)送者
c.XID(用來標(biāo)記節(jié)點(diǎn)事務(wù)歸屬于那個(gè)全局事務(wù))
這3個(gè)名詞并不完全和seata吻合,只是我的理解。

描述下購物流程。seata 的事務(wù)處理流程:
整個(gè)購物流程? 首先發(fā)起于 訂單模塊:
購物各個(gè)模塊中引入seata 的客戶端用于向事務(wù)管理者發(fā)送信息。
訂單:事務(wù)發(fā)送者-->創(chuàng)建全局事務(wù)(生成XID)-->向事務(wù)管理者發(fā)送本地事務(wù)-->等待
交易:? 事務(wù)發(fā)送者-->向事務(wù)管理者發(fā)送歸屬于XID的本地事務(wù)-->等待
物流:? 事務(wù)發(fā)送者-->向事務(wù)管理者發(fā)送歸屬于XID的本地事務(wù)-->等待
物流:事務(wù)發(fā)送者-->向事務(wù)管理者申請?zhí)峤换蚧貪L全局事務(wù)-->等待
事務(wù)管理者: 檢查這個(gè)全局事務(wù)鏈上的每個(gè)節(jié)點(diǎn)事務(wù)狀態(tài)-->如果有1個(gè)需要回滾的事務(wù),那就全體回滾,否則就提交--> 通知所有節(jié)點(diǎn)事務(wù)提交或回滾。
訂單,交易,物流 根據(jù)接收到的通知,進(jìn)行本地事務(wù)的 提交或回滾。

這樣就保證了所有節(jié)點(diǎn)事務(wù)都是統(tǒng)一的。
最后獻(xiàn)上seata 官網(wǎng)鏈接:seata 分布式事務(wù)
對seata 講解的非常詳細(xì)的視頻:seata 講解視頻

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

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