在經歷了25個release之後,Seata於2019年底冬至日前一天21日發布了v1.0.0版本,大家普遍的印象是1.0.0版本的面世,意味著比較穩定,其實Seata在0.4.2版本之後就可以上生產環境。
題圖 from pixabay
什麼是分布式事務
分布式事務就是指事務的參與者、支持事務的伺服器、資源伺服器以及事務管理器分別位於不同的分布式系統的不同節點之上。簡單的說,就是一次大的操作由不同的小操作組成,這些小的操作分布在不同的伺服器上,且屬於不同的應用,分布式事務需要保證這些小操作要麼全部成功,要麼全部失敗。本質上來說,分布式事務就是為了保證不同資料庫的數據一致性。非單體的應用程式必須會涉及到分布式服務問題。
常見解決方案
- 兩階段提交(2PC, Two-phase Commit)方案
- 事件隊列方案
- TCC 補償模式
- 緩存數據最終一致性
這裡僅講講Seata,其它方案,網絡上有相當多的資源來闡述,這裡不做過多介紹。
Seata是什麼
Seata 是一款開源的分布式事務解決方案,致力於在微服務架構下提供高性能和簡單易用的分布式事務服務。
在 Seata 開源之前,Seata 對應的內部版本在阿里經濟體內部一直扮演著分布式一致性中間件的角色,幫助經濟體平穩的度過歷年的雙11,對各BU業務進行了有力的支撐。經過多年沉澱與積累,商業化產品先後在阿里雲、金融雲進行售賣。2019.1 為了打造更加完善的技術生態和普惠技術成果,Seata 正式宣布對外開源。
Seata歷史
Seata由TXC(Taobao Transaction Constructor,阿里於2014開始著手解決分布式事務的內部框架),後更名為GTX(Global Transaction Service,阿里於2016年將TXC發布於雲服務並且改名為GTX),後又更名為Fescar(阿里於2019將GTS開源並改名為Fescar),繼續演進為Seata(Simple Extensible Autonomous Transaction Architecture,阿里將螞蟻金服框架DTX與Fescar結合併且改名為Seata),追溯其歷史還是經歷了一些起伏變化。
微服務框架支持
目前已支持 Dubbo、Spring Cloud、Sofa-RPC、Motan 和 grpc 等RPC框架,其他框架持續集成中。
模式支持
Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務模式,為用戶打造一站式的分布式解決方案。
- AT模式:提供無侵入自動補償的事務模式,目前已支持 MySQL、 Oracle 的AT模式、PostgreSQL、H2 開發中
- TCC模式:支持 TCC 模式並可與 AT 混用,靈活度更高
- SAGA 模式:為長事務提供有效的解決方案
- 高可用:支持基於資料庫存儲的集群模式,水平擴展能力強
可參考Seata官網介紹:https://seata.io/了解更多,Seata與阿里生態契合的很緊密,特別是spring-cloud-alibaba問世以來,將ali技術與spring系列融入的更加徹底。