知识卡片

TCC的Try阶段本质是锁定前置条件

普通读书笔记卡

内容

TCC是应用层两阶段提交,解决跨服务一致性。Try阶段唯一职责是把接下来一定会成功的前置条件锁死(扣钱方锁定金额,加钱方检查账户合法),只要Try全部通过,Confirm/Cancel就必然能执行成功,可放心不断重试。这要求Confirm和Cancel必须实现成幂等操作。发散:TCC精髓是把”是否失败”的不确定性提前到Try阶段问清楚,后续步骤简化为确定成功只需幂等重试。

参考来源

- 位置:第10章《事务一致性》10.2.3节「TCC」(源文件:_epub-src/text/part0048.html) - 结论依据:原文明确说明TCC的Try阶段做资源检查和资源锁定为阶段2做准备(如转账场景中扣钱方的Try是锁定金额,加钱方的Try是检查账号合法性),Confirm/Cancel失败则由TCC框架不断重试,这要求两者必须是幂等操作,直接支持卡片论述。 - 原始内容:"准备阶段:调用方调用所有服务方提供的Try接口,该阶段各调用方做资源检查和资源锁定,为接下来的阶段2做准备……不管是Confirm失败了,还是Cancel失败了,都不断重试。这就要求Confirm和Cancel都必须是幂等操作……对应的'扣钱'的Try操作就是'锁定',对应的'加钱'的Try操作就是检查账号合法性。"