粗读tx-lcn

1、通过DataSourceAspect这个类代理了Connection

2.1、通过TransactionAspect这个类,对含TxTransaction注解的方法进行代理。

2.2、通过TxManagerInterceptor设置请求头tx-group。然后在AspectBeforeServiceImpl这个类对代理进行处理。这里是tx-client的核心,采用了适配器的设计模式,根据不同的条件返回不同类,用来处理分布式事务,这些类都实现了相同接口TransactionServer。

2.2.1、当判断txGroupId为空,且注解满足分布式事务开始条件时,这里返回类TxStartTransactionServerImpl,这里是分布式事务的开始。在这里通过

txManagerService.createTransactionGroup(groupId);

向tx-manager发起分布式事务申请,然后继续运行被代理的方法。

2.2.2、运行到下一个分布式子事务时,在代理方法执行完后,会通过

TxGroup resTxGroup = txManagerService.addTransactionGroup(txGroupId, kid, isHasIsGroup, methodStr);

向tx-manager发起加入分布式事务组。

2.2.3、当整个分布式方法都执行完后,回到TxStartTransactionServerImpl这里。这里向tx-manager发起关闭分布式事务组请求。

2.2.4、当tx-manager收到关闭事务组请求后,判断是否需要提交事务。当判断为是时,这里将创建多个向客户端发起提交事务任务,并采用栅栏CountDownLatchHelper的多线程方式来执行这些任务。当所有请求都得到回复后,返回给分布式开始的客户端,告知分布式是否完成,以及是否需要补偿。整个tx-client和tx-manager的交互都是使用netty,并且客户端共用一个连接。

3、tx-manager自身和客户端的交互实现上也是采用了适配器模式,根据收到的不同信息采用不同的处理类,这些处理类都实现了相同接口IActionService。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值