TCC 模式
最近更新时间: 2025-02-18 16:02:00
概述
TCC(Try - Confirm/Cancel)指户根据自己的业务场景实现 Try(初步操作)、Confirm(确认操作) 和 Cancel(取消操作)三种操作,TCC 是目前被广泛应用的一种分布式事务模式。
TCC 模式中,资源管理器(RM)可对跨数据库、跨服务的资源进行管理,使得对多个数据库的访问和对不同业务的操作转变为一个原子操作,从而解决了复杂场景下事务的一致性问题。且 TCC 模式中无全局行锁,每次操作对于数据库而言都属于本地操作,结束操作则事务结束,数据库资源释放,相比传统的 2PC 方案性能显著提升。
TCC 执行流程
TCC 事务中的三个重要角色:
- TM(TransactionManager):事务管理器
- RM(Resource Manager):资源管理器
- TC(Transaction Coordinator):事务协调器
TCC 事务执行流程如下:
- 事务发起者的 TM 向 TC 申请开启一个全局事务,得到主事务 ID。
- TM 将主事务 ID 传给需要调用的各微服务中。
- 各微服务中的 RM 利用得到的主事务 ID 向 TC 注册分支事务 ID,将其纳入主事务 ID 的管辖。
- RM 完成自身业务逻辑(即完成 TCC 中的 Try 阶段)。
- 发起者的 TM 向 TC 确认执行 Confirm/Cancel,取决于全局事务 Try 阶段的结果。
- TC 通知各 TM 执行 Confirm/Cancel。
- 各服务的 RM 执行 Confirm/Cancel。
- 各服务的 TM 上报给 TC 执行 Confirm/Cancel 的结果。
DTF 的 TCC 优势
相比于传统的 TCC 模式,DTF 的 TCC有以下优势:
性能优化
- DTF 对 TC 的处理逻辑进行优化,通过优化主事务、分支事务的状态机制,减少了超过80%每次主事务、分支事务对数据库的操作次数。
- DTF 对 TC 集群的数据库操作进行了优化,移除了 TC 中全部本地事务操作,用代码逻辑保证一致性,大幅提升性能。
TC 集群高可用
- TC 部分宕机时,TC 会自动尝试另一协调器节点,保障业务正常运行。
- TC 采用无状态节点,可以快速故障恢复。在 TC 冷启动时,可以从数据库恢复上下文。
- 当 TC 集群的数据库出现异常时,可自动切换备用数据库。
- 即使 TC 完全宕机,也不会导致丢失事务或导致事务不一致。TC 此时会阻止新事务的注册,并在恢复后保障进行中事务的一致性。