分布式事务之 LCN框架的原理和使用(二)

今天介绍分布式事务LCN框架:它属于三段提交3PC 是对2PC的优化,原理如图:
 
1、LCN 并不生产事务, LCN 只是本地事务的协调工 TX-LCN 定位于一款事务协调性框架,框架其本身并不操作事务,而是基于对事务的协调从而达到事务一致性的效果。TX-LCN 由两大模块组成 , TxClient TxManager , TxClient 作为模块的依赖框架,提供 TX-LCN 的标准支持, TxManager 作为分布式事务的控制方。事务发起方或者参与反都由 TxClient 端来控制。 原理图如下:

图的内容大致分三步:
A. 创建事务组
是指在事务发起方开始执行业务代码之前先调用 TxManager 创建事务组对象,然后拿到事务标示 GroupId 的过程。
B. 加入事务组
添加事务组是指参与方在执行完业务方法以后,将该模块的事务信息通知给 TxManager 的操作。
C. 通知事务组
是指在发起方执行完业务代码以后,将发起方执行结果状态通知给 TxManager,TxManager 将根据事务最终状态和事务组的信息
来通知相应的参与模块提交或回滚事务,并返回结果给事务发起方。
 
2、开始实战,事务管理器的微服务引入jar
<dependency>
    <groupId>com.codingapi.txlcn</groupId>
    <artifactId>txlcn-tm</artifactId>
    <version>5.0.2.RELEASE</version>
</dependency>

3、启动类注解配置:@EnableTransactionManagerServer

3、客户端微服务jar包的引入:

<!--lcn事务-->
<dependency>
    <groupId>com.codingapi.txlcn</groupId>
    <artifactId>txlcn-tc</artifactId>
    <version>5.0.2.RELEASE</version>
</dependency>
<dependency>
    <groupId>com.codingapi.txlcn</groupId>
    <artifactId>txlcn-txmsg-netty</artifactId>
    <version>5.0.2.RELEASE</version>
</dependency>

3、客户端微服务(多个)相关的业务接口都加上注解 @LcnTransaction,

启动调用接口后发现groupId相同,数据库操作保持了原子性,证明了分布式事务的成功!大家自己测试一下思路会更加清晰,
下一篇我们分析阿里的分布式框架Seata,敬请期待!

猜你喜欢

转载自blog.csdn.net/nandao158/article/details/108549950
今日推荐