一、概念
1、概念
TCC又称补偿事务。其核心思想是:“针对每个操作都要注册一个与其对应的确认和补偿(撤销操作)”。它分为三个操作:
Try阶段:主要是对业务系统做检测及资源预留。
Confirm阶段:确认执行业务操作。
Cancel阶段:取消执行业务操作。
TCC对应 Try、Confirm、Cancel 三种操作可以理解成关系型数据库事务的三种操作:DML、Commit、Rollback。
在一个跨应用的业务操作中
Try:Try操作是先把多个应用中的业务资源预留和锁定住,为后续的确认打下基础,类似的,DML操作要锁定数据库记录行,持有数据库资源。
Confirm:Confirm操作是在Try操作中涉及的所有应用均成功之后进行确认,使用预留的业务资源,和Commit类似;
Cancel:Cancel则是当Try操作中涉及的所有应用没有全部成功,需要将已成功的应用进行取消(即Rollback回滚)。其中Confirm和Cancel操作是一对反向业务操作。
TCC的具体原理图如:

美团Java研发二面:简历上写熟悉分布式事务?拿讲讲TCC的原理吧
从图中我们可以明显看到Confirm和Cancel操作是一对反向业务操作 即要try返回成功执行Confirm,要么try返回失败执行Cancel操作。
分布式事务协调者:分布式事务协调者管理控制整个业务活动,包括记录维护TCC全局事务的事务状态和每个从业务服务的子事务状态,并在业务活动提交时确认所有的TCC型
操作的confirm操作,在业务活动取消时调用所有TCC型操作的cancel操作。
二、举例
例子:A服务转30块钱、B服务转50块钱,一起到C服务上。
Try:尝试执行业务。完成所有业务检查(一致性):检查A、B、C的帐户状态是否正常,帐户A的余额是否不少于30元,帐

本文介绍了TCC(Try-Confirm-Cancel)分布式事务的原理,包括其概念、操作流程、举例说明以及与2PC的区别。TCC在业务层面实现最终一致性,避免长时间持有资源锁,提高性能,但开发成本较高,要求Confirm和Cancel接口幂等。
最低0.47元/天 解锁文章
1463

被折叠的 条评论
为什么被折叠?



