分佈式事務TX-LCN學習(一)

 

分佈式事務背景

       顯然單體應用下本地事務在微服務的時代下不可避免的成爲問題,事務的ACID特性在分佈式環境下無法得到保證,當下微服務必然面臨服務間調用帶來的數據一致性問題,尤其在金融領域要求非常高!

分佈式事務思路與主流解決方案

參考文章:分佈式事務解決思路

上述文章對當前流行的幾種解決思路進行了陳述,大家可以學習一下。

       目前這段時間,稍微研究學習了下分佈式事務解決方案。暫且以tx-lcn這個框架進行一些學習,其中主要是它的三種模式,LCN模式 TCC模式 TXC模式。下面記錄下,使用的過程以及一些注意事項。

TX-LCN框架的學習實踐

TX-LCN框架相關:
github:https://github.com/codingapi/tx-lcn
官方網址:codingapi.com
框架作者出的一些學習講解視頻:講解學習視頻

通過對上述資料的學習,會有比較深刻的認識,包括框架原理,幾種模式的介紹,TM配置,TC依賴客戶端開發,樣例工程等比較詳細,這裏不贅述官網內容。

這是我的dubbo demo工程可以參考:https://gitee.com/kevin1992/opensource-learn.git

實踐中問題記錄

0.tm服務可以直接install tx-lcn的tm模塊,修改application.properties,tm的啓動依賴redis

1.tx-lcn版本爲5.0.2,支持的dubbo版本爲2.6.5,再往上2.7.x就不支持了,否則運行會報錯RpcContext setAttachments出錯!

2.dubbo 2.6.x版本maven依賴如下,groupId與2.7.x不同,2.7.x爲org.apache.dubbo:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>dubbo</artifactId>
    <version>2.6.5</version>
</dependency>

並且需要,2.7.x不需要也可以啓動:

<dependency>
    <groupId>com.alibaba.spring</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>${spring-context-support.version}</version>
</dependency>

3.txlcn-tm中斷,重啓tm服務後,微服務未自動註冊發現,待研究!
4.LCN的模式實質是代理數據庫連接,佔用資源時間較長,直至tm通知完成提交結束爲止釋放;
5.嘗試dubbo負載均衡導致的問題,官方提供的方案是 重寫了四種負載策略,誰註冊事務組,就繼續來調誰。
例如:

@Reference(timeout = 30000, loadbalance = "txlcn_random")
private DictApi dictApi;

TX-LCN未來發展

       目前的5.0.2版本也已經是一年前的版本了,支持的dubbo在2.6.5,spring cloud應該也是在1.5.x,所以比較新的應用還是要等框架的持續發展,否則是需要自己調整的。不過,作爲學習分佈式事務解決的方案是非常值得的,解決的思路也非常清晰。我也會持續關注TX-LCN,學習其中的精髓。

       LCN的模式還是相對簡單,並且代碼侵入幾乎爲零,適合中小型的項目。TCC和TXC的模式後續實踐補充。

       LCN的6.0版本也在開發中,dev6.0的分支大家可以切出來看一下,這是實現原理
我也會持續關注tx-lcn發展!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章