一、分布式事务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传给了另外一个服务



