分布式事务ByteTCC的学习基于springboot 1.5.22

gradle依赖

compile ("org.bytesoft:bytetcc-supports-springcloud:0.4.19")
{ exclude group: 'asm', module: 'asm' }

maven依赖

<dependency>
	<groupId>org.bytesoft</groupId>
	<artifactId>bytetcc-supports-springcloud</artifactId>
	<version>0.4.19</version>
	<exclusions>
	    <exclusion>
		    <groupId>asm</groupId>
		    <artifactId>asm</artifactId>
	    </exclusion>
</dependency>

每个需要用byteTCC功能的服务对应的数据库新增表

CREATE TABLE `bytejta` (
  `xid` varchar(32) NOT NULL,
  `gxid` varchar(40) DEFAULT NULL,
  `bxid` varchar(40) DEFAULT NULL,
  `ctime` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`xid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

TCC事务正常流程

 

A服务Try阶段失败B服务成功

A服务Try成功B服务Try失败

 

如果Confirm失败 协调器会记录Confirm错误记录到本地文件缓存,会有一个守护线程会去重试执行到成功为止,(即便服务宕机重启后也能重新执行)

 

A服务API层代码

A服务Try代码

 

A服务Cancel代码

B服务API Try代码

B服务Cancel代码

 

这个案例里没有展示Confirm的代码,因为Confirm的操作不在Cancel回滚范围内,TCC的协调器会保证Confirm的操作一定会重试最后执行成功。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值