分布式事务TCC

1.TCC事务其实是try-confirm-cancel的简称,将事务的步骤分为三步,属于柔性事务,因为2PC同步阻塞的缘故,就产生了效率高的TCC.

2.TCC可以解决跨库的数据一致性问题,常用于,电商库存扣减业务

  • Try操作作为一阶段,负责资源的检查和预留
  • Confirm操作作为二阶段提交操作,执行真正的业务
  • Cancel是预留资源的取消;

3.补偿性事务

在2PC中,资源会被一直的上锁,但是在TCC中不会一直上锁,TCC会预扣所需的资源,如果try过程成功,就完成扣减资源的过程,但是如果失败,就会通过事务日志,将预扣的资源补偿回去,达到最终一致的效果。

4.2PC和TCC的区别

  • 2PC是资源层面的事务,但是TCC是业务层是事务,是能感知到的
  • 2PC在进行事务的过程中,整个过程都会上锁,属于强一致性,但是TCC是补偿性事务,不会一直上锁,属于最终一致性。
  • 2PC因为会一直占用锁,所以是同步阻塞,性能较差。TCC不会占用锁,是异步阻塞,性能较好

5.注意事项

5.1允许空回滚

在TCC事务的过程中,如果出现网络波动,导致try请求的包丢失,则会造成超时异常,但是就算这样,TCC仍然会通过事务日志回滚到事务执行之前

5.2 防悬挂设置

在高并发请求中,网络拥挤等场景,都会造成try请求操作长时间未到达数据库,所以,会执行而简短的rollback操作,但是就在执行了rollback之后,try请求到达数据库,事务管理器收到了响应,造成了 rollback操作比try请求先执行的事情,所以,在执行 rollback操作之后要拒绝一切try操作。

 5.3 幂等控制

无论是网络数据包重传,还是异常事务的补偿执行,都会导致TCC服务的Try、Confirm或者Cancel操作被重复执行;用户在实现TCC服务时,需要考虑幂等控制,即Try、Confirm、Cancel 执行次和执行多次的业务结果是一样的;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雨会停rain

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值