Seata:簡單可擴展的自主事務架構

Seata: Simple Extensible Autonomous Transaction Architecture

Seata:簡單可擴展的自主事務架構

本文來自於:https://github.com/seata/seata

Seata有不錯的中文文檔,不過,其github主頁上的簡介並沒有中文版。翻譯下,也爲自己做個備忘

目錄

一、Seata是什麼?

二、微服務中的 分佈式事務問題

三、但,在 整個業務邏輯範圍內,如何保證 數據一致性

四、Seata怎麼做的?

五、Seata的歷史

1. 螞蟻金服(Ant Financial)

2. 阿里巴巴(Alibaba)

3. Seata社區(Seata Community)


一、Seata是什麼?

Seata是分佈式事務解決方案,它擁有較高性能,且在微服務架構下易於使用

 

二、微服務中的 分佈式事務問題

假設我們有一個傳統的單體(monolithic)應用,其業務有3個模塊組成,這3個模塊使用單一一個本地數據源。

很自然的,本地事務(local transaction)保證了數據一致性。

 

在微服務架構下,事情就不一樣啦。在微服務架構下,前面提到的3個模塊被設計成3個服務,每個服務都建立在自己獨有的數據源上(微服務模式:每個服務一個數據庫)。對於每個服務本身,數據一致性依然還是由本地事務保證

 

三、但,在 整個業務邏輯範圍內,如何保證 數據一致性

 

四、Seata怎麼做的?

Seata正是爲上述問題而生的解決方案

 

首先,如何定義 分佈式事務?

分佈式事務(distributed transaction) 是 由一批 分支事務(branch transaction)構成的 全局事務(global transaction),通常,分支事務就是普通的本地事務(local transaction)

 

Seata中有3個基本組件:

事務管理者(TM, transaction manager):定義全局事務的範圍:開啓全局事務、commit或rollback全局事務

事務協調者(TC, transaction coordinator):維護全局事務和分支事務的狀態,驅動 全局事務commit或rollback

資源管理者(RM, resource manager):管理 分支事務所用到的 資源。向TC註冊分支事務,向TC彙報分支事務的狀態,驅動 分支事務commit或rollback

 

Seata管理的分佈式事務的典型生命週期如下:

  1. TM 要求 TC 開啓全局事務。TC生成代表着全局事務的 XID
  2. XID 在 微服務的調用鏈中 被傳播
  3. RM 向 TC 進行註冊,將 本地事務 註冊爲 全局事務XID 的分支事務
  4. TM 要求 TC commit或rollback 全局事務XID
  5. TC 驅動 全局事務XID下的每一個分支事務,讓每一個分支事務 完成自己的 commit或rollback

 

更多Seata設計原理和細節,請參照Seata wiki page:https://github.com/seata/seata/wiki

 

五、Seata的歷史

1. 螞蟻金服(Ant Financial)

  • XTS:擴展事務服務(Extended Transaction Service)。從2007年開始,螞蟻金服中間件團隊開發了 分佈式事務中間件,該中間件在螞蟻金服被廣泛使用,解決了 跨數據庫和跨服務 的數據一致性問題
  • DTX:分佈式事務擴展(Distributed Transaction Extended)。從2013年開始,XTS更名爲DTX 並在 螞蟻金服雲 發佈

 

2. 阿里巴巴(Alibaba)

  • TXC:淘寶事務構建器(Taobao Transaction Constructor)。從2014年開始,爲了解決 從單體應用架構(monolithic)向微服務應用架構 轉變所帶來的 分佈式事務問題,阿里巴巴中間件團隊開始了該項目
  • GTS:全局事務服務(Global Transaction Service)。從2016年開始,TXC更名爲GTS,作爲阿里雲中間件產品發佈
  • Fescar:爲了後續可以和社區更緊密合作,從2019年開始,基於TXC/GTS我們發佈了開源項目Fescar

 

3. Seata社區(Seata Community)

Seata:簡單可擴展的自主事務架構(Simple Extensible Autonomous Transaction Architecture)。螞蟻金服加入了Fescar,這使得Fescar成爲 分佈式事務 的更中立和開放的社區,Fescar被命名爲Seata

 

Enjoy

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