Seata AT模式分布式事物控制(二)

1. Seata AT

Seata AT模式一种无侵入的分布式事务解决方案

1.1 Seata AT基本原理

Seata AT 事务分两个阶段来管理全局事务:
第一阶段: 执行各分支事务
第二阶段: 控制全局事务最终提交或回滚

1.2 业务场景

1.订单服务保存订单
2.订单服务调用库存服务, 减少商品库存
3.订单服务调用账户服务, 扣减用户金额
AT事物控制三者同时成功, 或者同时失败

1.3 执行各分支事物

TM: 事物管理器,控制全局事物
RM: 资源管理器,控制本地事物
TC: 事物协调器, 就是Seata服务

第一阶段: 启动各分支本地事物订单,库存,账户

  1. 订单
    • 在执行订单业务之前,先启动TM,TM向TC申请开启全局事物
    • 全局事物开启会生成一个事物id,xid,TC返回事物id到TM
    • 这样全局事物就开启了
    • 然后启动RM开启本地事物,接收到TM发送的xid,完成订单业务
    • RM管理本地事物通过xid将本地事物纳入全局事物管理,将事物执行结果发送到TC
    • TC向TM发送事物状态
  2. 库存
    • RM使用xid,向TC注册,将本地事物纳入全局事物管理
    • 执行本地事物,将事物状态发送给TC, TC将状态发送给TM完成当前事物
  3. 账户
    • RM使用xid,向TC注册,将本地事物纳入全局事物管理
    • 执行本地事物,将事物状态发送给TC, TC将状态发送给TM

至此三个分支本地事物都完成

第二阶段: 控制全局事物,完成分布式事物提交

  1. TM收集了所有的分支事物成功状态,向TC发送全局事物提交请求
  2. TC向所有的RM发送提交操作指令, 完成最终提交

到此,全局事务全部提交完成!

第二阶段: 控制全局事物最终回滚-失败

假设分支事物执行过程中, 如果有一个分支事物失败 , 失败状态上报TC, TC发送状态给TM,
TM会决定全局事物失败, 向TC发送全局事物回滚
TC向所有的RM发送事物回滚请求,RM完成最终回滚操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值