FESCAR:阿里重磅開源分佈式事務解決方案

收藏待读

FESCAR:阿里重磅開源分佈式事務解決方案

FESCAR名字的由來:Fast & EaSy Commit And Rollback

  • FESCAR是啥?

被用在微服務架構中的高性能分佈式事務解決方案。

  • 微服務中的分佈式事務問題

讓我們想像一個傳統的應用,由3個模塊構成,並且這三個模塊使用同一個數據源。很明顯,數據一致性由數據庫提供的本地事務就能搞定。

FESCAR:阿里重磅開源分佈式事務解決方案
local transaction

然而,一切美好都被在微服務架構中被打破。3個模塊變成了3個服務,每個服務有獨立的數據源(參考https://microservices.io/patterns/data/database-per-service.html)。每個服務的數據一致性由本地事務保證,但是跨服務的業務呢?如下圖所示,某個業務既需要操作庫存(Storage),又需要操作訂單(Order),還需要操作賬戶(Account)。

FESCAR:阿里重磅開源分佈式事務解決方案
distribution transaction
  • FESCAR怎麼做?

FESCAR:阿里重磅開源分佈式事務解決方案
distribution transaction

首先,如果定義分佈式事務?我們認為一個分佈式事務是由多個分支事務組成的全局事務,通常來說,分支事務就是本地事務。

FESCAR:阿里重磅開源分佈式事務解決方案
define distribution transaction

FESCAR有三個基本組件:

  • Transaction Coordinator(TC):事務協調器,維護着全局事務和分支事務的狀態, 它來決定全局的提交還是回滾。

  • Transaction Manager(TM): 事務管理器,定義全局事務的範圍:開始一個全局事務,提交或者回滾一個全局事務。

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

FESCAR:阿里重磅開源分佈式事務解決方案
FESCAR 3 components

一個典型的FESCAR維護的分佈式事務的生命周期如下:

  1. TM向TC請求開啟一個全局事務,TC生成一個XID,一個表示全局事務的唯一ID;

  2. 通過微服務的調用鏈,XID被廣播出去(圖中綠色線路);

  3. RM向TC註冊一個屬於XID表示的分佈式事務下的本地事務(紅色箭頭);

  4. TM向TC詢問是提交還是回滾XID表示的全局事務;

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

如下圖所示:

FESCAR:阿里重磅開源分佈式事務解決方案
lifecycle

參考:https://github.com/alibaba/fescar

FESCAR:阿里重磅開源分佈式事務解決方案

原文 :

相關閱讀

免责声明:本文内容来源于mp.weixin.qq.com,已注明原文出处和链接,文章观点不代表立场,如若侵犯到您的权益,或涉不实谣言,敬请向我们提出检举。