【深入淺出Seata原理及實戰】「入門基礎專題」帶你透析認識Seata分佈式事務服務的原理和流程(1)

分佈式事務的背景

隨着業務的不斷髮展,單體架構已經無法滿足我們的需求,分佈式微服務架構逐漸成爲大型互聯網平臺的首選,但所有使用分佈式微服務架構的應用都必須面臨一個十分棘手的問題,那就是“分佈式事務”問題。

在分佈式微服務架構中,幾乎所有業務操作都需要多個服務協作才能完成。對於其中的某個服務而言,它的數據一致性可以交由其自身數據庫事務來保證,但從整個分佈式微服務架構來看,其全局數據的一致性卻是無法保證的。

Seata是什麼?

Seata 是一個分佈式事務處理框架,也是一款開源的分佈式事務解決方案,由阿里巴巴和螞蟻金服共同開源的分佈式事務解決方案,能夠在微服務架構下提供高性能且簡單易用的分佈式事務服務,致力於提供高性能和簡單易用的分佈式事務服務。

Seata相關資料

Seata的發展歷程

阿里巴巴作爲國內最早一批進行應用分佈式(微服務化)改造的企業,很早就遇到微服務架構下的分佈式事務問題,阿里巴巴對於分佈式事務問題先後發佈了以下解決方案:

  • 2014 年,阿里中間件團隊發佈 TXC(Taobao Transaction Constructor),爲集團內應用提供分佈式事務服務。

  • 2016 年,TXC 在經過產品化改造後,以 GTS(Global Transaction Service) 的身份登陸阿里雲,成爲當時業界唯一一款雲上分佈式事務產品。在阿雲裏的公有云、專有云解決方案中,開始服務於衆多外部客戶。

  • 2019 年起,基於 TXC 和 GTS 的技術積累,阿里中間件團隊發起了開源項目 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社區一起建設這個分佈式事務解決方案。

  • 2019 年 fescar 被重命名爲了seata(simple extensiable autonomous transaction architecture)。

TXC、GTS、Fescar以及seata一脈相承,爲解決微服務架構下的分佈式事務問題交出了一份與衆不同的答卷。

事務相關概念

  • 事務:由一組操作構成的可靠、獨立的工作單元,事務具備 ACID 的特性,即原子性、一致性、隔離性和持久性。

分佈式事務的相關概念

分佈式事務的基本原則可以理解成一個包含了若干個分支事務的全局事務

分佈式事務主要涉及以下概念

  • 本地事務:本地事務由本地資源管理器(通常指數據庫管理系統 DBMS,例如 MySQL、Oracle 等)管理,嚴格地支持 ACID 特性,高效可靠。
  • 全局事務:全局事務指的是一次性操作多個資源管理器完成的事務,由一組分支事務組成。
  • 分支事務:在分佈式事務中,就是一個受全局事務管轄和協調的本地事務。

注意:本地事務不具備分佈式事務的處理能力,隔離的最小單位受限於資源管理器,即本地事務只能對自己數據庫的操作進行控制,對於其他數據庫的操作則無能爲力

全局事務

全局事務的職責是協調其管轄的各個分支事務達成一致,要麼一起成功提交,要麼一起失敗回滾。此外,通常分支事務本身就是一個滿足 ACID特性的本地事務。

Seata的運作原理

Seata對分佈式事務的協調和控制,主要是通過XID和3個核心組件實現的。

XID

XID是全局事務唯一標識,可以在服務的調用鏈路中傳遞,綁定到服務的事務上下文中

核心組件

Seata定義了3個核心組件

  • TC(Transaction Coordinator):事務協調器,它是事務的協調者(這裏指的是 Seata服務器),主要負責維護全局事務和分支事務的狀態,驅動全局事務提交或回滾

  • TM(Transaction Manager):事務管理器,它是事務的發起者,負責定義全局事務的範圍,並根據TC維護的全局事務和分支事務狀態,做出開始事務、提交事務、回滾事務的決議

  • RM(Resource Manager):資源管理器,它是資源的管理者(這裏可以將其理解爲各服務使用的數據庫)。它負責管理分支事務上的資源,向TC註冊分支事務,彙報分支事務狀態,驅動分支事務的提交或回滾。

以上三個組件相互協作,TC 以 Seata 服務器(Server)形式獨立部署,TM 和 RM 則是以 Seata Client的形式集成在微服務中運行。

Seata的運行流程

Seata 的整體工作流程如下

  1. TM向TC申請開啓一個全局事務,全局事務創建成功後,TC會針對這個全局事務生成一個全局唯一的XID;
  2. XID 通過服務的調用鏈傳遞到其他服務;
  3. RM向TC註冊一個分支事務,並將其納入XID對應全局事務的管轄;
  4. TM根據TC收集的各個分支事務的執行結果,向TC發起全局事務提交或回滾決議;
  5. TC調度XID下管轄的所有分支事務完成提交或回滾操作。

Seata的事務模式

目前Seata爲用戶提供了 AT、TCC、SAGA 和 XA 事務模式,爲用戶打造一站式的分佈式解決方案,可以快速有效地對分佈式事務進行控制。

在這四種事務模式中使用最多,最方便的就是 AT 模式。與其他事務模式相比,AT 模式可以應對大多數的業務場景,且基本可以做到無業務入侵,開發人員能夠有更多的精力關注於業務邏輯開發。

Seata最後結論

接下來會針對於Seata的每種事務模式進行實戰指南。

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