從零開始學Seata(Fescar)-簡介

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個基本組件:

  1. ·事務協調器(TC):維護全局和分支事務的狀態,驅動全局提交或回滾。
  2. ·事務管理器(TM):定義全局事務的範圍:開始全局事務,提交或回滾全局事務。
  3. ·資源管理器(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,選型切記這一點。

 

文章結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章