今天介绍分布式事务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,敬请期待!