近日,阿里又開源了一款產品——FESCAR!
FESCAR是什麼呢?它的全稱是Fast & Easy Commit And Rollback,根據阿里在GitHub上給出的解釋,這是一種分佈式事務解決方案,具有高性能和易用性的微服務架構。這麼說,大家可能還不能完全理解FESCAR的應用場景和背景,下面我們就用三句話來簡單描述一下:
第一句:2014年,阿里巴巴中間件團隊啓動了TXC項目,以滿足應用程序架構從單一服務變爲微服務所導致的分佈式事務問題;
第二句:2016年,TXC作爲Aliyun中間件產品更名爲GTS;
第三句:2019年,FESCAR作爲阿里分佈式事務框架GTS的免費社區版正式開源;
話到這裏,不知道大家能否感受到FESCAR金光閃閃的背景?
FESCAR如何解決分佈式事務問題?
假設某個業務共有3個模塊,在傳統的單體應用中,每個業務模塊可以使用單個的本地數據源,這樣本地事務自然就可以保證數據一致性。而在微服務架構中,業務模塊會被設計成爲3個不同數據源上的3個服務,每個服務對應一個數據庫,本地事務當然也可以保證每個服務中的數據一致性,但是擴展到整個應用、整個業務邏輯範圍來看,情況如何呢?
而FESCAR 正是解決上述微服務架構中事務問題的解決方案。
首先,分佈式事務是一個全局事務,由一批Branch Transation組成,通常Branch Transation只是本地事務。
FESCAR 中有三大基本組件:
- Transaction Coordinator(TC):維護全局和分支事務的狀態,驅動全局事務提交與回滾。
- Transaction Manager™:定義全局事務的範圍:開始、提交或回滾全局事務。
- Resource Manager(RM):管理分支事務處理的資源,與 TC通信以註冊分支事務並報告分支事務的狀態,並驅動分支事務提交或回滾。
FESCAR 管理分佈式事務的典型生命週期:
- TM 要求 TC 開始新的全局事務,TC 生成表示全局事務的 XID。
- XID 通過微服務的調用鏈傳播。
- RM 在 TC 中將本地事務註冊爲 XID 的相應全局事務的分支。
- TM 要求 TC 提交或回滾 XID 的相應全局事務。
- TC 驅動 XID 的相應全局事務下的所有分支事務,完成分支提交或回滾。
如何開始使用FESCAR?
FESCAR團隊在GitHub上也給出了使用示例。首先,需要下載發佈包並解壓縮,然後
cd bin,運行啓動腳本。該示例由Dubbo + FESCAR提供,具體的使用大家可以點擊下面鏈接,需要注意的是,數據庫必須是帶有InnoDB引擎的MySQL。
具體的使用方法可參考此鏈接:https://github.com/alibaba/fescar/wiki/Quick-Start
FESCAR是否可以商用了呢?目前FESCAR遵循的開源協議是Apache 2.0,原則上商業軟件可以任意的使用軟件代碼,而不需要開放源代碼,只需要提及代碼的原出處就可以了,但是FESCAR的提交者建議暫時不要商用,因爲FESCAR剛剛開源,還有一些功能需要完善和經過社區的驗證。
最後,筆者幫廣大開發者隔空喊話一下FESCAR的提交者,“趕快提交中文文檔啦!”