zoukankan      html  css  js  c++  java
  • 分布式事务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发展!

  • 相关阅读:
    如何为ubuntu server 14.04 安装图形界面
    linux远程拷贝命令-scp
    Git和Github简单教程
    DotNetNuke
    Orchard
    JIRA-6.3.6安装与破解
    BugFree的安装
    webapi部署到IIS 404错误
    Mysql分组求和&LIMIT
    Mysql正则
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608345.html
Copyright © 2011-2022 走看看