什么是补偿性事务?

补偿性事务是什么:
TCC(Try Confifirm Cancel),是服务化的二阶段编程模型,采用的补偿机制:

 TCC 其实就是采用的补偿机制,其核心思想是:针对每个操作,都要注册一个与其对应的确认和补偿(撤销)操作。
它分为三个步骤:

1.Try 阶段主要是对业务系统做检测及资源预留。
2. Confifirm阶段主要是对业务系统做确认提交, Try阶段执行成功并开始执行Confifirm阶段时,默认 Confifirm阶段是不会出错的。即:只要Try成功,Confifirm一定成功。
3. Cancel阶段主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。

使用场景:

业务需要:
举个例子,假入你要向A 转账,思路大概是:
我们有一个本地方法,里面依次调用步骤:
1、首先在 Try 阶段,要先调用远程接口把 你 和 A 的钱给冻结起来。
2、在Confifirm阶段,执行远程调用的转账的操作,转账成功进行解冻.
3、如果第2步执行成功,那么转账成功,如果第二步执行失败,则调用远程冻结接口对应的解冻方法(Cancel)

技术需要:

不同组件不能在一个事务种完成,mysql+redis数据同步

优缺点:

优点:

性能提升:具体业务来实现控制资源锁的粒度变小,不会锁定整个资源
数据最终一致性:基于Confifirm和Cancel的幂等性,保证事务最终完成确认或者取消,保证数据的一致性。
可靠性:解决了 XA 协议的协调者单点故障问题,由主业务方发起并控制整个业务活动,业务活动管理器也变成多点,引入集群。

缺点:
TCC 的 Try、Confifirm 和 Cancel 操作功能要按具体业务来实现,业务耦合度较高,提高了开发成本。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值