TCC 模式

最近更新时间: 2024-06-12 15:06:00

概述

TCC(Try - Confirm/Cancel)指户根据自己的业务场景实现 Try(初步操作)、Confirm(确认操作) 和 Cancel(取消操作)三种操作,TCC 是目前被广泛应用的一种分布式事务模式。

TCC 模式中,资源管理器(RM)可对跨数据库、跨服务的资源进行管理,使得对多个数据库的访问和对不同业务的操作转变为一个原子操作,从而解决了复杂场景下事务的一致性问题。且 TCC 模式中无全局行锁,每次操作对于数据库而言都属于本地操作,结束操作则事务结束,数据库资源释放,相比传统的 2PC 方案性能显著提升。

TCC 执行流程

TCC 事务中的三个重要角色:

  • TM(TransactionManager):事务管理器
  • RM(Resource Manager):资源管理器
  • TC(Transaction Coordinator):事务协调器

TCC 事务执行流程如下:

  1. 事务发起者的 TM 向 TC 申请开启一个全局事务,得到主事务 ID。
  2. TM 将主事务 ID 传给需要调用的各微服务中。
  3. 各微服务中的 RM 利用得到的主事务 ID 向 TC 注册分支事务 ID,将其纳入主事务 ID 的管辖。
  4. RM 完成自身业务逻辑(即完成 TCC 中的 Try 阶段)。
  5. 发起者的 TM 向 TC 确认执行 Confirm/Cancel,取决于全局事务 Try 阶段的结果。
  6. TC 通知各 TM 执行 Confirm/Cancel。
  7. 各服务的 RM 执行 Confirm/Cancel。
  8. 各服务的 TM 上报给 TC 执行 Confirm/Cancel 的结果。

DTF 的 TCC 优势

相比于传统的 TCC 模式,DTF 的 TCC有以下优势:

性能优化

  • DTF 对 TC 的处理逻辑进行优化,通过优化主事务、分支事务的状态机制,减少了超过80%每次主事务、分支事务对数据库的操作次数。
  • DTF 对 TC 集群的数据库操作进行了优化,移除了 TC 中全部本地事务操作,用代码逻辑保证一致性,大幅提升性能。

TC 集群高可用

  • TC 部分宕机时,TC 会自动尝试另一协调器节点,保障业务正常运行。
  • TC 采用无状态节点,可以快速故障恢复。在 TC 冷启动时,可以从数据库恢复上下文。
  • 当 TC 集群的数据库出现异常时,可自动切换备用数据库。
  • 即使 TC 完全宕机,也不会导致丢失事务或导致事务不一致。TC 此时会阻止新事务的注册,并在恢复后保障进行中事务的一致性。