FESCAR:阿里重磅開(kāi)源分布式事務(wù)解決方案
FESCAR名字的由來(lái):Fast & EaSy Commit And Rollback
- 
    
FESCAR是啥?
 
被用在微服務(wù)架構(gòu)中的高性能分布式事務(wù)解決方案。
- 
    
微服務(wù)中的分布式事務(wù)問(wèn)題
 
讓我們想象一個(gè)傳統(tǒng)的應(yīng)用,由3個(gè)模塊構(gòu)成,并且這三個(gè)模塊使用同一個(gè)數(shù)據(jù)源。很明顯,數(shù)據(jù)一致性由數(shù)據(jù)庫(kù)提供的本地事務(wù)就能搞定。
然而,一切美好都被在微服務(wù)架構(gòu)中被打破。3個(gè)模塊變成了3個(gè)服務(wù),每個(gè)服務(wù)有獨(dú)立的數(shù)據(jù)源(參考https://microservices.io/patterns/data/database-per-service.html)。每個(gè)服務(wù)的數(shù)據(jù)一致性由本地事務(wù)保證,但是跨服務(wù)的業(yè)務(wù)呢?如下圖所示,某個(gè)業(yè)務(wù)既需要操作庫(kù)存(Storage),又需要操作訂單(Order),還需要操作賬戶(Account)。
- 
    
FESCAR怎么做?
 
首先,如果定義分布式事務(wù)?我們認(rèn)為一個(gè)分布式事務(wù)是由多個(gè)分支事務(wù)組成的全局事務(wù),通常來(lái)說(shuō),分支事務(wù)就是本地事務(wù)。
FESCAR有三個(gè)基本組件:
- 
    
Transaction Coordinator(TC):事務(wù)協(xié)調(diào)器,維護(hù)著全局事務(wù)和分支事務(wù)的狀態(tài), 它來(lái)決定全局的提交還是回滾。
 - 
    
Transaction Manager(TM): 事務(wù)管理器,定義全局事務(wù)的范圍:開(kāi)始一個(gè)全局事務(wù),提交或者回滾一個(gè)全局事務(wù)。
 - 
    
Resource Manager(RM): 資源管理器,管理分支事務(wù)處理的資源,與TC通信以注冊(cè)分支事務(wù)并報(bào)告分支事務(wù)的狀態(tài),并驅(qū)動(dòng)分支事務(wù)提交或回滾.
 
一個(gè)典型的FESCAR維護(hù)的分布式事務(wù)的生命周期如下:
- 
    
TM向TC請(qǐng)求開(kāi)啟一個(gè)全局事務(wù),TC生成一個(gè)XID,一個(gè)表示全局事務(wù)的***ID;
 - 
    
通過(guò)微服務(wù)的調(diào)用鏈,XID被廣播出去(圖中綠色線路);
 - 
    
RM向TC注冊(cè)一個(gè)屬于XID表示的分布式事務(wù)下的本地事務(wù)(紅色箭頭);
 - 
    
TM向TC詢(xún)問(wèn)是提交還是回滾XID表示的全局事務(wù);
 - 
    
TC驅(qū)動(dòng)XID表示的全局事務(wù)下的所有分支事務(wù),完成提交或者回滾動(dòng)作。
 
如下圖所示:
參考:https://github.com/alibaba/fescar





















 
 
 













 
 
 
 