分布式事務(wù)——TX-LCN
1、?分布式事務(wù)是什么?
在分布式系統(tǒng)中,事務(wù)參與者在不同的分布式節(jié)點(diǎn)上(節(jié)點(diǎn)可以操作同一個(gè)數(shù)據(jù)源也可以操作的是不同的數(shù)據(jù)源),這些情況產(chǎn)生的事務(wù)都叫做分布式事務(wù)。
注意:參與者不在同一個(gè)節(jié)點(diǎn)(項(xiàng)目)中,才能叫做分布式事務(wù)。如果所有參數(shù)者都在一個(gè)項(xiàng)目中,這時(shí)叫做本地事務(wù)。
例如:
項(xiàng)目A實(shí)現(xiàn)Tb_item表新增、項(xiàng)目B實(shí)現(xiàn)tb_item_param新增,現(xiàn)在需要實(shí)現(xiàn)商品新增,需要把項(xiàng)目A和項(xiàng)目B兩個(gè)項(xiàng)目新增的方法組成一個(gè)事務(wù),這個(gè)事務(wù)就是分布式事務(wù)。此情況是都操作同一個(gè)數(shù)據(jù)源MySQL
例如:
兩個(gè)項(xiàng)目,其中一個(gè)向MySQL做新增,另一個(gè)需要向Redis或MongoDB執(zhí)行新增,希望執(zhí)行MySQL或Redis或MongoDB時(shí)如果出現(xiàn)異常進(jìn)行事務(wù)回滾,這種情況也成為分布式事務(wù)。此情況是操作不同的數(shù)據(jù)源。
一、?TX-LCN概述

1?簡(jiǎn)介
LCN框架在2017年6月發(fā)布第一個(gè)版本,目前最新已經(jīng)達(dá)到5.0版本。
LCN早期設(shè)計(jì)時(shí),1.0版本和2.0版本設(shè)計(jì)步驟如下:
1)鎖定事務(wù)單元(Lock)
2)確認(rèn)事務(wù)模塊狀態(tài)(Confirm)
3)通知事務(wù)(Notify)
取各自首字母后名稱為L(zhǎng)CN。
LCN框架從5.0開始兼容了LCN、TCC、TXC三種事務(wù)模式,為了和LCN框架區(qū)分,從5.0開始把LCN框架更名為:TX-LCN分布式事務(wù)框架。
1?TX-LCN原理
TX-LCN由兩大模塊組成,TxClient、TxManager。
TxClient作為模塊的依賴框架,提供了TX-LCN的標(biāo)準(zhǔn)支持,事務(wù)發(fā)起方和參與方都屬于TxClient。TxManager作為分布式事務(wù)的控制方,控制整個(gè)事務(wù)。
?
1.1?原理中核心內(nèi)容
1.1.1?創(chuàng)建事務(wù)組
是指在事務(wù)發(fā)起方開始執(zhí)行業(yè)務(wù)代碼之前先調(diào)用TxManager創(chuàng)建事務(wù)組對(duì)象,然后拿到事務(wù)標(biāo)識(shí)GroupId的過程。
1.1.2?加入事務(wù)組
添加事務(wù)組是指參與方在執(zhí)行完業(yè)務(wù)方法以后,將該模塊的事務(wù)信息通知給TxManager的操作。
1.1.3?通知事務(wù)組
是指在發(fā)起方執(zhí)行完業(yè)務(wù)代碼以后,將發(fā)起方執(zhí)行結(jié)果狀態(tài)通知給TxManager,TxManager將根據(jù)事務(wù)最終狀態(tài)和事務(wù)組的信息來通知相應(yīng)的參與模塊提交或回滾事務(wù),并返回結(jié)果給事務(wù)發(fā)起方。
二、?TX-LCN事務(wù)模式

Tx-LCN 5.0開始支持三種事務(wù)模式,分別是:LCN、TCC、TXC模式。
1.2?原理介紹
?LCN模式是通過代理JDBC中Connection的方式實(shí)現(xiàn)對(duì)本地事務(wù)的操作,然后在由TxManager統(tǒng)一協(xié)調(diào)控制事務(wù)。當(dāng)本地事務(wù)提交回滾或者關(guān)閉連接時(shí)將會(huì)執(zhí)行假操作,該代理的連接將由LCN連接池管理。
1.3?模式特點(diǎn)
l?該模式對(duì)代碼的嵌入性為低。
l?該模式僅限于本地存在連接對(duì)象且可通過連接對(duì)象控制事務(wù)的模塊。
l?該模式下的事務(wù)提交與回滾是由本地事務(wù)方控制,對(duì)于數(shù)據(jù)一致性上有較高的保障。
l?該模式缺陷在于代理的連接需要隨事務(wù)發(fā)起方一共釋放連接,增加了連接占用的時(shí)間。
總結(jié):LCN模式適合能用JDBC連接的所有支持事務(wù)的數(shù)據(jù)庫(kù),且對(duì)資源要求不高的系統(tǒng)。

看完文章時(shí)還一頭霧水?那就通過視頻來解答你的疑惑吧~