transaction-core 分布式事務(wù)框架
工程地址:transaction-core
- 本框架適用于spring boot+RestTemplate
術(shù)語表
GTM
GlobalTransactionManager(全局事務(wù)管理器)
Master
主人,全局事務(wù)發(fā)起者,負(fù)責(zé)發(fā)起全局事務(wù),管理直接下屬slave,進行事務(wù)決策。
Slave
隨從,全局事務(wù)跟從者,響應(yīng)上級slave或者master的決策。傳達(dá)決策給直接下屬slave。
框架介紹
本框架基于TCC模式,通過GTM進行事務(wù)管理。事務(wù)發(fā)起者作為master發(fā)起全局事務(wù)。事務(wù)中的遠(yuǎn)程調(diào)用服務(wù)端作為salve對事務(wù)做出響應(yīng)。存在多級調(diào)用的情況下,TMG只管理直接下級,形成逐級管理的結(jié)構(gòu),如下圖所示:
以上圖存在兩層調(diào)用為例進行說明,master將決策下達(dá)給一級slave,一級slave收到?jīng)Q策后執(zhí)行決策,并將決策傳給下屬的的二級slave。二級slave執(zhí)行決策并反饋響應(yīng)給一級slave,一級slave將響應(yīng)反饋給master,則整個決策執(zhí)行完畢。
兩階段提交模型
-
一階段prepare行為:
master:創(chuàng)建全局事務(wù),全局事務(wù)管理器開啟本地事務(wù)。如果存在遠(yuǎn)程調(diào)用,則全局事務(wù)管理器創(chuàng)建分支事務(wù),記錄遠(yuǎn)程調(diào)用地址。將分支事務(wù)id添加到請求header中發(fā)給slave。
slave:創(chuàng)建分支事務(wù),全局事務(wù)管理器開啟本地事務(wù)。如果存在遠(yuǎn)程調(diào)用,則全局事務(wù)管理器創(chuàng)建分支事務(wù),記錄遠(yuǎn)程調(diào)用地址。將分支事務(wù)id添加到請求header中發(fā)給slave。
-
二階段commit 行為:
master:本地事務(wù)提交,調(diào)用slave提交接口。
slave:本地事務(wù)提交,調(diào)用下級slave提交接口。
-
二階段rollback行為:
master:本地事務(wù)回滾,調(diào)用slave回滾接口。
slave:本地事務(wù)回滾,調(diào)用下級slave回滾接口。