TCC分别是Try,Confirm,Cancel,分为三阶段。
涉及到幂等性,悬挂
幂等性:分布式环境下,用户对于统一操作,无论是发起一次请求还是多次请求,最终的执行结果是一样的。
* 例如:用户A给B转账100元,无论点击确认键多少次确认键,都只是转100元;页面重复刷新等。
* 解决方案:数据加锁、每个事务加上token,处理后token失效,重复提交就拒绝处理。
悬挂:Try阶段由于网络拥堵等原因超时触发了Canel阶段,之后收到了Try阶段的数据包,可能导致数据不一致。
* 解决方案:记录事务的id并加上是否回滚了的标志,每次try之前检查是否已经被标识为回滚成功,如果被标记回滚成功则不进行try操作。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章