分布式TCC事务相关问题
阅读原文时间:2023年08月11日阅读:1

TCC分别是Try,Confirm,Cancel,分为三阶段。

  1. 第一阶段Try:业务检查及资源预留,尝试事务操作但不提交。
  2. 第二阶段Confirm:事务操作提交。
  3. 第三阶段Cancel:如果Try阶段发现事务操作无法完成 或者 Confirm阶段出现错误,会撤销已经完成的操作,回滚到事务。

涉及到幂等性,悬挂

幂等性:分布式环境下,用户对于统一操作,无论是发起一次请求还是多次请求,最终的执行结果是一样的。

* 例如:用户A给B转账100元,无论点击确认键多少次确认键,都只是转100元;页面重复刷新等。

* 解决方案:数据加锁、每个事务加上token,处理后token失效,重复提交就拒绝处理。

悬挂:Try阶段由于网络拥堵等原因超时触发了Canel阶段,之后收到了Try阶段的数据包,可能导致数据不一致。

* 解决方案:记录事务的id并加上是否回滚了的标志,每次try之前检查是否已经被标识为回滚成功,如果被标记回滚成功则不进行try操作。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器