spring boot 分布式事务解决方案LCN

本文介绍了Spring Boot中使用LCN进行分布式事务管理的原理和实践,包括事务控制原理、调用时序图,详细阐述了服务端设置、客户端配置、测试代码以及在正常和异常情况下的事务处理效果。相较于SAGA,LCN提供了更便捷的补偿方法封装。
摘要由CSDN通过智能技术生成

对比LCN和saga(华为apache孵化器项目) ,LCN使用代理连接池封装补偿方法,saga需要手工写补偿方法,相对来说LCN使用更加方便。


参考官方地址:

https://github.com/codingapi/tx-lcn/wiki/TxManager%E5%90%AF%E5%8A%A8%E8%AF%B4%E6%98%8E

1.    原理

1.     事务控制原理

LCN事务控制原理是由事务模块TxClient下的代理连接池与TxManager的协调配合完成的事务协调控制。

TxClient的代理连接池实现了javax.sql.DataSource接口,并重写了close方法,事务模块在提交关闭以后TxClient连接池将执行"假关闭"操作,等待TxManager协调完成事务以后在关闭连接。

2.     调用时序图

1.     正常

2.     异常

2.    服务端

tx-manager 4.1.0

3.    客户端

1.     pom添加依赖

    <properties>

        <lcn.last.version>4.1.0</lcn.last.version>

    </properties>

        <dependency>

            <groupId>org.mybatis.spring.boot</groupId>

            <artifactId>mybatis-spring-boot-starter</artifactId>

            <version>1.1.1</version>

        </dependency>

        <dependency>

            <groupId>com.codingapi</groupId>

            <artifactId>transaction-springcloud</artifactId>

            <version>${lcn.last.version}</version>

            <exclusions>

                <exclusion>

                   <groupId>org.slf4j</groupId>

                   <artifactId>*</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

        <dependency>

            <groupId>com.codingapi</groupId>

            <artifactId>tx-plugins-db</artifactId>

            <version>${lcn.last.version}</version>

            <exclusions>

                <exclusion>

                   <groupId>org.slf4j</groupId>

                   <artifactId>*</artifactId>

                </exclusion>

            </exclusions>

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值