fescar分布式事務(wù)是什么?這個問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
成都創(chuàng)新互聯(lián)專注于瑪納斯網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供瑪納斯?fàn)I銷型網(wǎng)站建設(shè),瑪納斯網(wǎng)站制作、瑪納斯網(wǎng)頁設(shè)計、瑪納斯網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造瑪納斯網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供瑪納斯網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
1、fescar分布式事務(wù)(概覽)
1.1. 概述
Fescar 是 阿里巴巴 開源的 分布式事務(wù)中間件,以 高效 并且對業(yè)務(wù)0 侵入 的方式,解決 微服務(wù) 場景下面臨的分布式事務(wù)問題。
1.2. Fescar 的發(fā)展歷程
2014 年,阿里中間件團隊發(fā)布 TXC(Taobao Transaction Constructor),為集團內(nèi)應(yīng)用提供分布式事務(wù)服務(wù)。
2016 年,TXC 經(jīng)過產(chǎn)品化改造,以 GTS(Global Transaction Service) 的身份登陸阿里云,成為當(dāng)時業(yè)界唯一一款云上分布式事務(wù)產(chǎn)品 ,在阿云里的公有云、專有云解決方案中,開始服務(wù)于眾多外部客戶。
2019 年起,基于 TXC 和 GTS 的技術(shù)積累,阿里中間件團隊發(fā)起了開源項目 Fescar(Fast & EaSy Commit And Rollback, FESCAR),和社區(qū)一起建設(shè)這個分布式事務(wù)解決方案。
1.3. 設(shè)計初衷
對業(yè)務(wù)無侵入
高性能
1.4. 原理和設(shè)計
1.4.1. 設(shè)計概念圖
Transaction Coordinator (TC): 事務(wù)協(xié)調(diào)器,維護全局事務(wù)的運行狀態(tài),負(fù)責(zé)協(xié)調(diào)并驅(qū)動全局事務(wù)的提交或回滾。
Transaction Manager (TM): 控制全局事務(wù)的邊界,負(fù)責(zé)開啟一個全局事務(wù),并最終發(fā)起全局提交或全局回滾的決議。
Resource Manager (RM): 控制分支事務(wù),負(fù)責(zé)分支注冊、狀態(tài)匯報,并接收事務(wù)協(xié)調(diào)器的指令,驅(qū)動分支(本地)事務(wù)的提交和回滾。
XA 方案的 RM 實際上是在數(shù)據(jù)庫層,RM 本質(zhì)上就是數(shù)據(jù)庫自身(通過提供支持 XA 的驅(qū)動程序來供應(yīng)用使用)。
而 Fescar 的 RM 是以二方包的形式作為中間件層部署在應(yīng)用程序這一側(cè)的,不依賴與數(shù)據(jù)庫本身對協(xié)議的支持,當(dāng)然也不需要數(shù)據(jù)庫支持 XA 協(xié)議。這點對于微服務(wù)化的架構(gòu)來說是非常重要的:應(yīng)用層不需要為本地事務(wù)和分布式事務(wù)兩類不同場景來適配兩套不同的數(shù)據(jù)庫驅(qū)動。
這個設(shè)計,剝離了分布式事務(wù)方案對數(shù)據(jù)庫在 協(xié)議支持上的要求
XA 的 2PC 過程
無論 Phase2 的決議是 commit 還是 rollback,事務(wù)性資源的鎖都要保持到 Phase2 完成才釋放。
設(shè)想一個正常運行的業(yè)務(wù),大概率是 90% 以上的事務(wù)最終應(yīng)該是成功提交的,我們是否可以在 Phase1 就將本地事務(wù)提交呢?這樣 90% 以上的情況下,可以省去 Phase2 持鎖的時間,整體提高效率。
分支事務(wù)中數(shù)據(jù)的 本地鎖由本地事務(wù)管理,在分支事務(wù) Phase1 結(jié)束時釋放。
同時,隨著本地事務(wù)結(jié)束,連接也得以釋放。
分支事務(wù)中數(shù)據(jù)的 全局鎖在事務(wù)協(xié)調(diào)器側(cè)管理,在決議 Phase2 全局提交時,全局鎖馬上可以釋放。只有在決議全局回滾的情況下,全局鎖才被持有至分支的 Phase2 結(jié)束。
這個設(shè)計,極大地減少了分支事務(wù)對資源(數(shù)據(jù)和連接)的鎖定時間,給整體并發(fā)和吞吐的提升提供了基礎(chǔ)。
首先,應(yīng)用需要使用 Fescar 的 JDBC 數(shù)據(jù)源代理,也就是 Fescar 的 RM
Fescar 的 JDBC 數(shù)據(jù)源代理通過對業(yè)務(wù) SQL 的解析,把業(yè)務(wù)數(shù)據(jù)在更新前后的數(shù)據(jù)鏡像組織成回滾日志,利用 本地事務(wù)的 ACID 特性,將業(yè)務(wù)數(shù)據(jù)的更新和回滾日志的寫入在同一個 本地事務(wù) 中提交。
這樣,可以保證:任何提交的業(yè)務(wù)數(shù)據(jù)的更新一定有相應(yīng)的回滾日志存在
如果決議是全局提交,此時分支事務(wù)此時已經(jīng)完成提交,不需要同步協(xié)調(diào)處理(只需要異步清理回滾日志),Phase2 可以非??焖俚赝瓿伞?/p>
如果決議是全局回滾,RM 收到協(xié)調(diào)器發(fā)來的回滾請求,通過 XID 和 Branch ID 找到相應(yīng)的回滾日志記錄,通過回滾記錄生成反向的更新 SQL 并執(zhí)行,以完成分支的回滾。
XID 是一個全局事務(wù)的唯一標(biāo)識,事務(wù)傳播機制要做的就是把 XID 在服務(wù)調(diào)用鏈路中傳遞下去,并綁定到服務(wù)的事務(wù)上下文中,這樣,服務(wù)鏈路中的數(shù)據(jù)庫更新操作,就都會向該 XID 代表的全局事務(wù)注冊分支,納入同一個全局事務(wù)的管轄。
基于這個機制,F(xiàn)escar 是可以支持任何微服務(wù) RPC 框架的。只要在特定框架中找到可以透明傳播 XID 的機制即可,比如,Dubbo 的 Filter + RpcContext。
作為全局事務(wù)一部分的分支事務(wù),除本身的業(yè)務(wù)邏輯外,都包含 4 個與協(xié)調(diào)器交互的行為:
分支注冊: 在分支事務(wù)的數(shù)據(jù)操作進行之前,需要向協(xié)調(diào)器注冊,把即將進行的分支事務(wù)數(shù)據(jù)操作,納入一個已經(jīng)開啟的全局事務(wù)的管理中去,在分支注冊成功后,才可以進行數(shù)據(jù)操作。
狀態(tài)上報: 在分支事務(wù)的數(shù)據(jù)操作完成后,需要向事務(wù)協(xié)調(diào)器上報其執(zhí)行結(jié)果。
分支提交:響應(yīng)協(xié)調(diào)器發(fā)出的分支事務(wù)提交的請求,完成分支提交。
分支回滾:響應(yīng)協(xié)調(diào)器發(fā)出的分支事務(wù)回滾的請求,完成分支回滾。
業(yè)務(wù)邏輯不需要關(guān)注事務(wù)機制,分支與全局事務(wù)的交互過程自動進行
業(yè)務(wù)邏輯需要被分解為 Prepare/Commit/Rollback 3 部分,形成一個 MT 分支,加入全局事務(wù)。
因為 AT 和 MT 模式的分支從根本上行為模式是一致的,所以可以完全兼容,即,一個全局事務(wù)中,可以同時存在 AT 和 MT 的分支。這樣就可以達(dá)到全面覆蓋業(yè)務(wù)場景的目的:AT 模式可以支持的,使用 AT 模式;AT 模式暫時支持不了的,用 MT 模式來替代。另外,自然的,MT 模式管理的非事務(wù)性資源也可以和支持事務(wù)的關(guān)系型數(shù)據(jù)庫資源一起,納入同一個分布式事務(wù)的管理中。
v0.1.0
微服務(wù)框架支持: Dubbo
數(shù)據(jù)庫支持: MySQL
基于 Spring AOP 的 Annotation
事務(wù)協(xié)調(diào)器: 單機版本
v0.5.x
微服務(wù)框架支持: Spring Cloud
MT 模式
支持 TCC 模式事務(wù)的適配
動態(tài)配置和服務(wù)發(fā)現(xiàn)
事務(wù)協(xié)調(diào)器: 高可用集群版本
v0.8.x
Metrics
控制臺: 監(jiān)控/部署/升級/擴縮容
v1.0.0
General Availability: 生產(chǎn)環(huán)境適用
v1.5.x
數(shù)據(jù)庫支持: Oracle/PostgreSQL/OceanBase
不依賴 Spring AOP 的 Annotation
熱點數(shù)據(jù)的優(yōu)化處理機制
RocketMQ 事務(wù)消息納入全局事務(wù)管理
NOSQL 納入全局事務(wù)管理的適配機制
支持 HBase
支持 redis
v2.0.0
支持 XA
當(dāng)然,項目迭代演進的過程,我們最重視的是社區(qū)的聲音,路線圖會和社區(qū)充分交流及時進行調(diào)整。
1.6. 總結(jié)
??看完概覽,我一口鮮血噴出來,明明說好的支持任何微服務(wù)RPC框架,我現(xiàn)在要在適合SpringCloud的分布式事務(wù)解決方案中挑選個,你告訴我預(yù)計下下下下個版本會集成SpringCloud,路過的大神,推薦個吧
1.7. github開源地址
https://github.com/alibaba/fescar/
感謝各位的閱讀!看完上述內(nèi)容,你們對fescar分布式事務(wù)是什么大概了解了嗎?希望文章內(nèi)容對大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。