介紹
Seata 是阿里巴巴開源的分布式事務中間件,一種分布式事務解決方案,具有高性能和易于使用的微服務架構。
1:對業務無侵入:即減少技術架構上的微服務化所帶來的分布式事務問題對業務的侵入
2:高性能:減少分布式事務解決方案所帶來的性能消耗
?
微服務中的分布式事務問題
讓我們想象一下傳統的單片應用程序。它的業務由3個模塊組成。他們使用單個本地數據源。
自然,本地事務將保證數據的一致性。
微服務架構已發生了變化。上面提到的3個模塊被設計為在3個不同數據源之上的3個服務(模式:每個服務的數據庫)。本地事務自然可以保證每個服務中的數據一致性。
但是整個業務邏輯范圍如何呢?
?
Seata怎么辦?
Seata只是上述問題的解決方案。
首先,如何定義分布式事務?
我們說,分布式事務是由一批分支事務組成的全局事務,通常分支事務只是本地事務。
?
設計
Seata中分布式事務實現方案,AT和TCC。
AT
AT模式是基于XA事務演進而來,核心是對業務無侵入,是一種改進后的兩階段提交,需要數據庫支持。
?
基本組件:
- 事務協調器(TC):事務協調器,維護全局事務的運行狀態,負責協調并驅動全局事務的提交或回滾。
- Transaction Manager(TM):?控制全局事務的邊界,負責開啟一個全局事務,并最終發起全局提交或全局回滾的決議。
- 資源管理器(RM):控制分支事務,負責分支注冊、狀態匯報,并接收事務協調器的指令,驅動分支(本地)事務的提交和回滾。
處理流程:
- TM要求TC開始新的全局事務。TC生成表示全局事務的XID。
- XID通過微服務的調用鏈傳播。
- RM將本地事務注冊為XID到TC的相應全局事務的分支。
- TM要求TC提交或回滾XID的相應全局事務。
- TC在XID的相應全局事務下驅動所有分支事務以完成分支提交或回滾。
?
?
?
?
?