開發者福音:阿里開源了分布式事務解決方案 FESCAR

尋夢新聞LINE@每日推播熱門推薦文章,趣聞不漏接❤️

加入LINE好友

分布式事務已經成為微服務落地最大的阻礙,也是非常具有挑戰性的一個技術難題。1 微服務的發展

微服務倡導將複雜的單體應用拆分為若干個功能簡單、松耦合的服務,這樣可以降低開發難度、增強擴展性、便於敏捷開發。當前被越來越多的開發者推崇,很多互聯網行業巨頭、開源社區等都開始了微服務的討論和實踐。Hailo有160個不同服務構成,NetFlix有大約600個服務。國內方面,阿里巴巴、騰訊、360、京東、58同城等很多互聯網公司都進行了微服務化實踐。當前微服務的開發框架也非常多,比較著名的有Dubbo、SpringCloud、thrift 、grpc等。2 微服務落地存在的問題

雖然微服務現在如火如荼,但對其實踐其實仍處於探索階段。很多中小型互聯網公司,鑒於經驗、技術實力等問題,微服務落地比較困難。如著名架構師Chris Richardson所言,目前存在的主要困難有如下幾方面:

1)單體應用拆分為分布式系統後,進程間的通訊機制和故障處理措施變的更加複雜。

2)系統微服務化後,一個看似簡單的功能,內部可能需要調用多個服務並操作多個數據庫做到,服務調用的分布式事務問題變的非常突出。

3)微服務數量眾多,其測試、部署、監控等都變的更加困難。

隨著RPC框架的成熟,第一個問題已經逐漸得到解決。例如dubbo可以支持多種通訊協議,springcloud可以非常好的支持restful調用。對於第三個問題,隨著docker、devops技術的發展以及各公有雲paas平台自動化運維工具的推出,微服務的測試、部署與運維會變得越來越容易。

而對於第二個問題,現在還沒有通用方案很好的解決微服務產生的事務問題。分布式事務已經成為微服務落地最大的阻礙,也是最具挑戰性的一個技術難題。 為此,阿里巴巴提出了分布式事務解決方案—-GTS。該方案中提到的GTS是全新一代解決微服務問題的分布式事務互聯網中間件。

2019年1月9日,阿里分布式事務框架GTS開源了一個免費社區版Fescar,看到了這個消息內心非常的激動!在微服務系統中,分布式事務一直是痛點,也是難點。社區里也有一些開源的分布式解決方案的框架,比如ByteTCC、LCN,但是這些框架沒有一個權威的組織在維護,或多或少大家都有點不敢用。阿里開源的分布式事務解決框架Fescar會不會一統分布式事務江湖,大家拭目以待!

我們現在來看看什麼是FESCAR。Fescar項目地址:

https://github.com/alibaba/fescar

什麼是FESCAR?

一種分布式事務解決方案,具有高性能和易用性的微服務架構。

微服務中的分布式事務問題

讓我們想像一下傳統的單片應用程序。其業務由3個模塊構成。他們使用單個本地數據源。

當然,本地事務將保證數據的一致性。

微服務架構的情況發生了變化。上面提到的3個模塊被設計為3個不同數據源之上的3個服務(模式:每個服務的數據庫)。本地事務自然保證每個服務中的數據一致性。

但整個業務邏輯範圍如何呢?

FESCAR怎麼做?

FESCAR只是上述問題的解決方案。

首先,如何定義分布式事務?

我們說,分布式事務是一個全局事務,由一批分支事務組成,通常分支事務只是本地事務。

FESCAR有3個基本組件:

事務協調器(TC):維護全局和分支事務的狀態,驅動全局提交或回滾。

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

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

FESCAR管理分布式事務的典型生命周期:

TM要求TC開始新的全球交易。TC生成表示全局事務的XID。

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

RM將本地事務註冊為XID到TC的相應全局事務的分支。

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

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

About 尋夢園
尋夢園是台灣最大的聊天室及交友社群網站。 致力於發展能夠讓會員們彼此互動、盡情分享自我的平台。 擁有數百間不同的聊天室 ,讓您隨時隨地都能找到志同道合的好友!