springcloud集成分佈式事務框架Fescar

目錄:1.什麼是fescar? 2.結合官方文檔的快速使用  3.demo實例

 

1.什麼是fescar?

Fescar(Fast & Easy Commit and Rollback)是一個用於微服務架構的分佈式事務解決方案,它的特點是高性能且易於使用,旨在實現簡單並快速的事務提交與回滾。

Fescar的演變歷史:

  • TXC:Taobao Transaction Constructor,阿里巴巴中間件團隊自 2014 年起啓動該項目,以滿足應用程序架構從單一服務變爲微服務所導致的分佈式事務問題。

  • GTS:Global Transaction Service,2016 年 TXC 作爲阿里中間件的產品,更名爲 GTS 發佈。

  • FESCAR:2019 年開始基於 TXC/GTS 開源 FESCAR。

微服務架構中的分佈式事務問題:

從傳統的單體應用說起,假設一個單體應用的業務由 3 個模塊構成,三者使用單個本地數據源。

這樣的話本地事務很自然就可以保證數據一致性。

但是在微服務架構中就不這麼簡單了,這 3 個模塊被設計爲 3 個不同數據源之上的 3 個服務,每個服務對應一個數據庫。

本地事務當然也可以保證每個服務中的數據一致性,但是擴展到整個應用、整個業務邏輯範圍來看,情況如何呢?

FESCAR 就是用於解決上述微服務架構中的事務問題的解決方案。

如下圖所示,分佈式事務是一個全局事務(Global Transaction),由一批分支事務(Branch Transation)組成,通常分支事務只是本地事務。

FESCAR 中有三大基本組件:

  • Transaction Coordinator(TC):維護全局和分支事務的狀態,驅動全局事務提交與回滾。

  • Transaction Manager(TM):定義全局事務的範圍:開始、提交或回滾全局事務。

  • Resource Manager(RM):管理分支事務處理的資源,與 TC 通信以註冊分支事務並報告分支事務的狀態,並驅動分支事務提交或回滾。

FESCAR 管理分佈式事務的典型生命週期:

  1. TM 要求 TC 開始新的全局事務,TC 生成表示全局事務的 XID。

  2. XID 通過微服務的調用鏈傳播。

  3. RM 在 TC 中將本地事務註冊爲 XID 的相應全局事務的分支。

  4. TM 要求 TC 提交或回滾 XID 的相應全局事務。

  5. TC 驅動 XID 的相應全局事務下的所有分支事務,完成分支提交或回滾。

 

2.結合官方文檔的快速使用?\

官方下載:

官方下載地址:https://github.com/seata/seata

點擊Quick Start

按照文檔,下載seata-server: https://github.com/seata/seata/releases ,創建數據庫數據

點擊步驟5的seata-samples

找到自己需要的demo進行參考

因爲我是集成到springcloud中,所以主要參考這兩個demo進行代碼修改

 

3.demo實例

自己寫的一個demo:  https://github.com/xiao-Ray/fescar_demo

項目目錄結構:

 目錄中的fescar-server是從官網下載,配置註冊中心爲本地eureka地址

事務組:

複製fescar-server到電腦,啓動seata-server.bat。

將file.conf和registry.conf拷貝到每個module中,啓動服務就會添加到事務組中。

添加seata的依賴,版本建議選擇官方最新的。

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-alibaba-seata</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>
<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>0.9.0</version>
</dependency>

附件有一份自己用來測試的數據庫sql,有些服務連接的是不同的數據庫,大家使用的時候自己注意就好了。

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