Files
wangchunxiang c2453d6434 chore(project): 添加项目配置文件和忽略规则
- 添加 Babel 配置文件支持 ES6+ 语法转换
- 添加 ESLint 忽略规则和配置文件
- 添加 Git 忽略规则文件
- 添加 Travis CI 配置文件
- 添加 1.4.2 版本变更日志文件
- 添加 Helm 图表辅助模板文件
- 添加 Helm 忽略规则文件
2026-03-27 17:36:48 +08:00
..

TCC

TCC 简介

在2PC两阶段提交协议中事务管理器分两阶段协调资源管理资源管理器对外提供了3个操作分别是一阶段的准备操作二阶段的提交操作和回滚操作

TCC服务作为一种事务资源遵循两阶段提交协议由业务层面自定义需要用户根据业务逻辑编码实现其包含Try、Confirm 和 Cancel 3个操作其中Try操作对应分布式事务一阶段的准备Confirm操作对应分布式事务二阶段提交Cancel对应分布式事务二阶段回滚

  • Try

资源的检查和预留;

  • Confirm

使用预留的资源完成真正的业务操作要求Try成功Confirm 一定要能成功;

  • Cancel

释放预留资源;

TCC的3个方法均由用户根据业务场景编码实现并对外发布成微服务供事务管理器调用事务管理器在一阶段调用TCC的Try方法在二阶段提交时调用Confirm方法在二阶段回滚时调用Cancel方法。

TCC实现

1、TCC微服务

TCC服务由用户编码实现并对外发布成微服务目前支持3种形式的TCC微服务分别是

  • SofaRpc 服务

用户将实现的TCC操作对外发布成 SofaRpc 服务事务管理器通过订阅SofaRpc服务来协调TCC资源

  • Dubbo 服务

将TCC发布成dubbo服务事务管理器订阅dubbo服务来协调TCC资源

  • Local TCC

本地普通的TCC Bean非远程服务事务管理器通过本地方法调用来协调TCC 资源;

2、TCC资源动态代理

对TCC服务进行动态代理GlobalTransactionScanner中当扫描到TCC 服务的 reference会对其进行动态代理

TCC 动态代理的主要功能是生成TCC运行时上下文、透传业务参数、注册分支事务记录

模块说明

seata-tcc 包含TCC主要代码

  • interceptorTCC 动态代理;

  • remotingTCC微服务扫描、RPC协议解析、TCC资源注册

  • TccResourceManager、RMHandlerTCC TCC资源管理器

其他说明:

本此为了区分AT、TCC 2种资源类型在客户端和服务端通信的接口中均添加了 BranchType 参数;