解析阿里GTS開(kāi)源版本fescar分布式事務(wù)
前言碎語(yǔ)
阿里重磅開(kāi)源fescar分布式事務(wù)框架、其前身是擁有多項(xiàng)專利的云分布式事務(wù)產(chǎn)品GTS、很早前阿里在推廣GTS分布式事務(wù)的時(shí)候就隱隱透露過(guò)可能會(huì)有開(kāi)源項(xiàng)目的推出,終于在社區(qū)千呼萬(wàn)喚之下fescar發(fā)布了。目前是0.1的版本,因?yàn)槊撎ビ谏虡I(yè)產(chǎn)品,社區(qū)版本要上生產(chǎn)環(huán)境可能需要在社區(qū)迭代孵化一段時(shí)間。代碼可以先拉下來(lái)研究一下,后期持續(xù)關(guān)注fescar的發(fā)展。
項(xiàng)目地址:https://github.com/alibaba/fescar
什么是FESCAR?
一種分布式事務(wù)解決方案,具有高性能和易用性的微服務(wù)架構(gòu)。
微服務(wù)中的分布式事務(wù)問(wèn)題
讓我們想象一下傳統(tǒng)的單片應(yīng)用程序。其業(yè)務(wù)由3個(gè)模塊構(gòu)成。他們使用單個(gè)本地?cái)?shù)據(jù)源。
當(dāng)然,本地交易可以保證數(shù)據(jù)的一致性。

微服務(wù)架構(gòu)發(fā)生了變化。提到的3個(gè)模塊設(shè)計(jì)為3個(gè)不同數(shù)據(jù)源之上的3個(gè)服務(wù)(模式:每個(gè)服務(wù)的數(shù)據(jù)庫(kù))。本地事務(wù)自然保證每個(gè)服務(wù)中的數(shù)據(jù)一致性。
但整個(gè)業(yè)務(wù)邏輯范圍如何呢?

FESCAR怎么做?
FESCAR只是上述問(wèn)題的解決方案。

首先,如何定義分布式事務(wù)?
我們說(shuō),分布式事務(wù)是一個(gè)全局事務(wù),由一批Branch Transation組成,通常Branch Transation只是本地事務(wù)。

FESACR有3個(gè)基本組件:
- 事務(wù)協(xié)調(diào)器(TC):維護(hù)全局和分支事務(wù)的狀態(tài),驅(qū)動(dòng)全局提交或回滾。
- Transaction Manager(TM):定義全局事務(wù)的范圍:開(kāi)始全局事務(wù),提交或回滾全局事務(wù)。
- 資源管理器(RM):管理分支事務(wù)的資源,與TC通信以注冊(cè)分支事務(wù)和報(bào)告分支事務(wù)的狀態(tài),并驅(qū)動(dòng)分支事務(wù)提交或回滾。

FESCAR管理分布式事務(wù)的典型生命周期:
- TM要求TC開(kāi)始新的全球交易。TC生成表示全局事務(wù)的XID。
- XID通過(guò)微服務(wù)的調(diào)用鏈傳播。
- RM將本地事務(wù)注冊(cè)為XID到TC的相應(yīng)全局事務(wù)的分支。
- TM要求TC提交或回滾XID的相應(yīng)全局事務(wù)。
- TC在XID的相應(yīng)全局事務(wù)下驅(qū)動(dòng)所有分支事務(wù)以完成分支提交或rollbaking。

有關(guān)原理和設(shè)計(jì)的更多詳細(xì)信息,請(qǐng)?jiān)L問(wèn)FESCAR維基頁(yè)面。
歷史
- TXC:淘寶交易構(gòu)造函數(shù)。阿里巴巴中間件團(tuán)隊(duì)自2014年起啟動(dòng)該項(xiàng)目,以滿足應(yīng)用程序架構(gòu)從單一服務(wù)變?yōu)槲⒎?wù)所導(dǎo)致的直接交易問(wèn)題。
- GTS:全球交易服務(wù)。TXC作為Aliyun中間件產(chǎn)品,新名稱GTS自2016年起發(fā)布。
- FESCAR:我們從2019年開(kāi)始基于TXC / GTS開(kāi)源開(kāi)源項(xiàng)目FESCAR,以便與社區(qū)密切合作。
以上就是解析阿里GTS開(kāi)源版本fescar分布式事務(wù)的詳細(xì)內(nèi)容,更多關(guān)于阿里GTS開(kāi)源版本fescar分布式事務(wù)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring Cloud Eureka 服務(wù)上下線監(jiān)控的實(shí)現(xiàn)
這篇文章主要介紹了Spring Cloud Eureka 服務(wù)上下線監(jiān)控的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Spring Boot2與Spring Boot3的區(qū)別小結(jié)
SpringBoot2和SpringBoot3之間有一些重要的區(qū)別,本文就來(lái)探討SpringBoot2和SpringBoot3之間的區(qū)別,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10
Java switch 語(yǔ)句如何使用 String 參數(shù)
這篇文章主要介紹了Java switch 語(yǔ)句如何使用 String 參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06
mybatis-plus 擴(kuò)展批量新增的實(shí)現(xiàn)
本文主要介紹了mybatis-plus 擴(kuò)展批量新增的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
深入理解Java基礎(chǔ)之try-with-resource語(yǔ)法糖
這篇文章主要介紹了深入理解Java基礎(chǔ)之try-with-resource語(yǔ)法糖,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-02-02
使用Java DOM解析器修改XML文件內(nèi)容的操作方法
在Java中,XML文件的解析和修改可以通過(guò)多種方法實(shí)現(xiàn),其中DOM(Document Object Model)是一種常用的方式,在本文中,我們將介紹如何使用Java DOM解析器修改XML文件中的內(nèi)容,并給出一個(gè)具體的示例,需要的朋友可以參考下2024-08-08
詳解如何在Spring Boot啟動(dòng)后執(zhí)行指定代碼
這篇文章主要介紹了在Spring Boot啟動(dòng)后執(zhí)行指定代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06

