哈喽各位同學們大家好呀,今天是開發者學院中課程“Spring Cloud微服務架構設計與開發實戰”的章節三的“阿裡巴巴開源微服務分布式事務架構 ”幹貨總結~是一起學習新課程吧!
課程連結以及圖譜位址小編已經為大家指路了,搭配學習效果更佳👇
課程名稱:阿裡巴巴開源微服務分布式事務架構
課程位址:
https://developer.aliyun.com/learning/course/60/detail/1101圖譜名稱:Alibaba Java 技術圖譜
圖譜位址:
https://developer.aliyun.com/graph/java阿裡巴巴開源微服務分布式事務架構
各位同學大家好,歡迎繼續收看Spring Cloud微服務架構實戰系列課程,這一節課我們來講一下如何去結合Spring Cloud去使用阿裡巴巴的微服務分布式架構(Seata),Seata是阿裡巴巴一個非常重要的微服務的解決方案。Seata可以認為是強勢支援不同的微服務架構中的事務性的一個機制。
- Seata微服務分布式事務架構
Spring Cloud Seata
1. Seata阿裡巴巴開源的分布式事務架構,原名Fescar
2. Simple Extensible Autonomous Transaction Architecture
3. 是一套一站式分布式事務解決方案。
4. 2007 開始,螞蟻金服自主研發分布式事務分布式事務中間件 XTS(eXtended Transaction Service),在内部廣泛應用并解決金融核心場景下跨資料庫、跨服務資料一緻性問題,最終以 DTX (Distributed Transactione Xtended)的雲産品化展現,并依托螞蟻金融雲對外輸出。
5. 與此同時,阿裡巴巴中間件團隊釋出 TXC(Taobao Transaction Constructor),為集團提供分布式事務服務,于 2016 年對 TXC 進行産品化改造,形成 GTS(Global
ransaction Service),依托阿裡雲對外輸出。
6. 前身是2019 年 1 月,阿裡巴巴中間件團隊發起了開源項目 Fescar(Fast& EaSy Commit And Rollback),和社群一起共建開源分布式事務解決方案。
7. 2019年5月兩個項目合并
8. Seata 提供了 AT、TCC、SAGA 和 XA 事務模式,為使用者打造一站式的布式解決方案。
9.
https://github.com/seata/10.支援Dubbo、Spring Cloud微服務分布式事務
微服務本身是很難去支援分布式事務,它的一個很大的弱點,原因是在于它的協定,預設使用的是AGV協定,Rs協定本身并不支援事物特性。作為企業級開發的話,有很多重要的要求,但是Spring Cloud不支援。目前些場景下會用到基于微服務下的事務機制。微服務架構中那些事物絕大部分,都是弱事務機制,并沒有實作真正意義上的事務的Sid特性。
Seata早期叫fast(fast and easy),是阿裡巴巴的集團的那兩個項目後面合并了,白了就是更簡單更好用的這樣的一個分布式事務架構。不僅支援開放的 Double,包括其他的一些事務。

阿裡Seata發展路線圖
阿裡Seata發展在不斷疊代演化過來的,在微服務架構當中,可以不斷的去切換不同的元件,還且可以不斷的去更新改造。
- Seata微服務分布式架構圖
電商交易場景(無事務分布式架構圖)
微服務架構中大部分做的都是消息補償,比如說搞個消息中間件,更新一下對面的服務或者搞個定時任務等,這種機制用的比較多。真正使用分布式事務的比較少,主要是考慮到性能問題。
模拟下場景:比如使用者要購買過程中,使用者生成了一個訂單,系統就生成訂單服務,快遞服務等,如果在搶購過程還要考慮庫存問題,比如庫存隻有5條,但是訂單購買了10條,要做判斷是否成功,這個中間可能需要不同的資料來進行判斷。還有就是資料的同步,比如同步積分,同步優惠券等一系列問題。這個在實際上微服務架構中這是很難實作的,目前阿裡的Seata開源之後,就給我們在微服務架構提供一個非常重要的解決方案。
Seata分布式事務架構圖
每個技術架構、每個方案是在特定場景下使用的,并不強迫大家去使用,我們去了解它的原理,能夠為我們以後架構設計能夠多個選擇。讓大家能夠更合理的進行技術選型,我們說很重要的原則,在做架構設計時,要綜合考慮,包括成本,需求等等問題。
- Seata微服務分布式事務架構實戰
現在架構的機制大部分是基于補償機制,它雖然模拟的早期分布式兩送出協定,但不是真正意義上,沒有強制去鎖庫,強制去搞分布式的一個所謂的概念,實際是嘗試插入資料,然後在删除的。實際上是通過邏輯上的代碼去模拟分布式事務。這樣子的一個差别。其中有一個比較重要的注意的global section,叫全局事務。這設計模式,像送出協定包括一些階梯的分布式架構,一定會有跟實物,事務的協調器,還有資料總管這些角色參與進來,這個事務屬于強事務,會嚴重影響系統性能。現在這些高等化系統絕大部分在事務這一塊的話是選擇了就是柔性事務。
代碼需要加入Seata的依賴,可以直接去但是也要考慮一個版本的相容性問題,阿裡貢獻的版本和實際Spring Cloud有存在1~2個版本的差異,需提前做測試下。
這裡面也提供了一個統一的簡化依賴包,但是也把配置放到檔案裡面,就直接去拿所有的關聯包,咱們看看代碼主要給大家是做一個擴充,Seata支援的幾種模式,都是模拟分布式事務的場景,實際項目大家使用一定要慎重,本身事務會有更多的交易通信,協調工作,還有影響到系統。
Seata 提供了 AT、TCC、SAGA 和 XA 事務模式,在使用的過程一定注意下。