分布式事务 Seata TCC模式

TCC原理

TCC 与 Seara AT 事务一样都是两阶段事务, 它与AT事务的主要区别为:

  • TCC 对业务代码侵入严重
    每个阶段的数据操作都要自己进行编码来实现,事务框架无法自动处理。
  • TCC 效率更高
    不必对数据加全局锁,允许多个事务同时操作数据。

a

 第一阶段 Try:

以账户服务为例, 当下订单时要扣减用户账户金额:

a

假如用户购买100元商品,就要扣减100元

TCC 事务就要首先对这100元的扣减金额进行预留,或者说是先冻结这100元

 a

第二阶段 Confirm

如果第一阶段能够顺利完成,那么说明“扣减金额”业务(分支业务)最终肯定是可以成功的。

当全局事务提交时,TC会可控制当前分支事务进行提交,如果提交失败,TC会反复尝试,知道成功为止。

当全局事务时,就可以使用冻结的金额来最终实现业务数据操作:

a

第二阶段 Cancel

如果全局事务回滚,就把冻结的金额进行解冻,恢复到以前的状态,TC 会控制当前分支事务回滚,如果回滚失败,TC会反复尝试,直到回滚完成终止。

 a

多个事务并发的情况

多个TCC全局事务允许并发,它们执行扣减金额时,只需要冻结各自的金额即可:

a

 Seata TCC事务模式

Seata 支持TCC 事务模式,与 AT 模式相同,也需要以下组件来支持全局事务的控制:

  • TC 事务协调器
  • TM 事务管理器
  • RM 资源管理器

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值