栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 云计算 > 云平台

Java基础之《分布式事务(5)—TCC事务原理》

云平台 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础之《分布式事务(5)—TCC事务原理》

一、分布式事务confirm的底层原理

1、try阶段
try阶段注册事务组

2、confirm阶段
由事务管理器调用confirm方法

二、分布式事务try异常处理

1、如果try出现异常,则会执行cancel方法

因为它通过事务组,trans_id来找到要执行什么cancel方法

2、它是怎么触发异常的
也是AOP切面编程

三、分布式事务confirm异常处理

1、confirm异常

使用定时任务来重试,ScheduledThreadPoolExecutor线程池

2、解决办法
如果遇到一直重试,只能把bug解决了。confirm异常不可能回滚,回滚没用的,只能重试

四、TCC分布式事务日志原理

1、status
0:开始执行try
1:try阶段完成
2:confirm阶段
3:cancel阶段

2、role
1:发起者
2:消费者
3:提供者
4:本地调用
5:内嵌RPC调用
6:SpringCloud

3、订单服务
第一步:try阶段,事务管理器工作
插入订单
事务管理器----> insert into hmily_order_service(...)

说明:
invocation
是try的参数二进制数据,作用是传给confirm,cancel
status
状态是0
role
角色是1

第二步:confirm阶段,事务管理器工作
update hmily_order_service set status = 2 where trans_id = '11368578258580245705'

第三步:分布式事务整体成功后,删除数据
delete from hmily_order_service where trans_id = '11368578258580245705'

4、库存服务
第一步:try阶段,事务管理器工作
insert into hmily_inventory_service(...)

说明:
status
状态是0
role
角色是3

第二步:confirm的事务管理器工作
update hmily_inventory_service set status = 1 where trans_id = '11368578258580245705'
update hmily_inventory_service set status = 2 where trans_id = '11368578258580245705'
status先设置为1,再设置为2

第三步:分布式事务整体成功后,再删除日志
delete from hmily_inventory_service where trans_id = '11368578258580245705'

5、服务器启动的时候,自动创建数据表结构,例如hmily_order_service

五、TCC分布式事务网络通讯原理

1、订单服务里生成了trans_id,是怎么传给库存服务的
通过反射invoker和拦截器interceptor的原理,将全局事务ID传给了另外一个服务
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/895829.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号