Seata(Fescar)是阿裡巴巴集團在2019年1月開源的分布式事務解決方案。
本篇文章主要參考了官方網站的github的README.md,并在對其翻譯的基礎上,進行了編輯。
本文所有圖檔均來自官網。
定義
Seata(Fescar)是一種易于使用,高性能,基于Java的開源分布式事務解決方案。
官方定義原文:
Seata(Fescar) is an easy-to-use, high-performance, java based, open source distributed transaction solution.
Seata 意為:Simple Extensible Autonomous Transaction Architecture,是一套一站式分布式事務解決方案。
概述
為什麼我們需要Seata?它解決了什麼問題?
微服務中的分布式事務問題
讓我們想象一個傳統的單體應用的場景——電商購物。 其業務由3個子產品構成(庫存、訂單和賬戶),這三個子產品使用各自的本地資料源。
在業務發生過程中,本地事務将保證資料的一緻性。

如果把這個單體應用場景修改成微服務架構,會發生什麼變化呢? 上面提到的3個子產品将被設計為3個不同資料源之上的3個服務(參照Pattern: Database per service)。
雖然本地事務能保證各自服務的資料一緻性。但從整個業務邏輯角度上看,如何保證呢資料一緻性呢?
Seata如何解決這個問題?
Seata提供了一個完美解決上述問題的方法。
首先,如何定義分布式事務?
我們說,分布式事務是一個全局事務,由一批分支事務組成,通常分支事務隻是本地事務。
Seata有3個基本元件:
- ·事務協調器(TC):維護全局和分支事務的狀态,驅動全局送出或復原。
- ·事務管理器(TM):定義全局事務的範圍:開始全局事務,送出或復原全局事務。
- ·資料總管(RM):管理分支事務的資源,與TC通信以注冊分支事務和報告分支事務的狀态,并驅動分支事務送出或復原。
Seata管理分布式事務的典型生命周期:
1.TM要求TC開始新的全局事務。 TC生成表示全局事務的XID。
2.XID通過微服務的調用鍊傳播。
3.RM将本地事務注冊為XID到TC的相應全局事務的分支。
4.TM要求TC送出或復原XID的相應全局事務。
5.TC在XID的相應全局事務下驅動所有分支事務,以完成分支送出或復原。
有關原理和設計的更多詳細資訊,請通路Fescar的wiki頁面。
發展曆程
·TXC:淘寶事務構造器。 阿裡巴巴中間件團隊自2014年起啟動該項目,以解決因應用程式架構從單體應用改為微服務而導緻的分布式事務問題。
·GTS:全局事務服務。 TXC作為Aliyun中間件産品,新名稱GTS自2016年起釋出。
·Fescar:我們從2019年開始基于TXC / GTS開源開源項目Fescar,以便将來與社群密切合作。
Seata:2019年4月,更名為Seata,并調整開源計劃。
開源版本規劃
v0.1.0
- 微服務架構支援: Dubbo
- 資料庫支援: MySQL
- 基于 Spring AOP 的 Annotation
- 事務協調器: 單機版本
v0.5.x
- 微服務架構支援: Spring Cloud
- MT 模式
- 支援 TCC 模式事務的适配
- 動态配置和服務發現
- 事務協調器: 高可用叢集版本
v0.8.x
- Metrics
- 控制台: 監控/部署/更新/擴縮容
v1.0.0
- General Availability: 生産環境适用
v1.5.x
- 資料庫支援: Oracle/PostgreSQL/OceanBase
- 不依賴 Spring AOP 的 Annotation
- 熱點資料的優化處理機制
- RocketMQ 事務消息納入全局事務管理
- NoSQL 納入全局事務管理的适配機制
- 支援 HBase
- 支援 Redis
v2.0.0
- 支援 XA
當然,項目疊代演進的過程,我們最重視的是社群的聲音,路線圖會和社群充分交流及時進行調整。
目前開源程度
截至2019年2月19日相關開源程度:
內建測試覆寫率(codecov):29%
license:Apache-2.0
maven-central(maven庫目前版本):v0.2.1
綠色 部分是已經開源釋出出來的,黃色 部分是将在後續版本中由阿裡釋出出來的,藍色 部分是我們和社群共建生态部分:
- 對不同資料庫的支援,開發者可以參考 MySQL 的實作。
- 對不同微服務架構的支援,開發者可以參考 Dubbo 的實作。
- 對 MQ、NoSQL 的支援,開發者可以參考 TCC 的實作。
- 配置和服務注冊發現:開發者通過少量的工作可以接入任何可以提供這類服務的架構。
- 當然,非 藍色 的部分也非常歡迎社群參與進來,貢獻更優的解決方案。
另外,XA 作為分布式事務的标準,是一個完備的分布式事務解決方案不可或缺的,遠景的規劃中,我們一定需要把 XA 的支援加入進來。
【2019年4月9日更新】
1)、為了達到适用于更多的分布式事務業務場景的目标,螞蟻金服加入 Fescar 社群共建,在 Fescar 0.4.0 版本中加入了 TCC 模式。
2)、2019 年 5 月,Seata 将加入服務端 HA 叢集支援,從此,Seata 可以達到生産環境使用的标準。
總結
目前,屬于緊密開發過程中,暫時未提供正式版(1.0),生産環境慎用。
目前僅支援MySQL,選型切記這一點。
文章結束。