0%

seata(三)——TCC模式

TCC模式

TCC 的全称是: TryConfirmCancel

实现方式

TCC 模式

TCC模式(Try-Confirm-Cancel模式)是一种分布式事务模式,它通过将整个分布式事务拆分为三个阶段来实现:尝试阶段(Try)、确认阶段(Confirm)和取消阶段(Cancel)。在TCC模式中,业务逻辑将被分为三个方法,每个方法代表一个阶段。这三个方法会在分布式事务的不同参与方(例如不同的服务)中执行。

  • 尝试阶段(Try):在这个阶段中,参与方会尝试执行事务,并记录下执行的所有操作。如果所有参与方都能成功执行,则进入确认阶段。
  • 确认阶段(Confirm):在这个阶段中,参与方会确认执行事务。如果所有参与方都能够确认执行事务,则分布式事务被提交,否则会进入取消阶段。
  • 取消阶段(Cancel):在这个阶段中,参与方会撤销执行的所有操作,即回滚事务。

AT 模式(参考链接 TBD)基于 支持本地 ACID 事务关系型数据库

  • 一阶段 prepare 行为:在本地事务中,一并提交业务数据更新和相应回滚日志记录。
  • 二阶段 commit 行为:马上成功结束,自动 异步批量清理回滚日志。
  • 二阶段 rollback 行为:通过回滚日志,自动 生成补偿操作,完成数据回滚。

相应的,TCC 模式,不依赖于底层数据资源的事务支持:

  • 一阶段 prepare 行为:调用 自定义 的 prepare 逻辑。
  • 二阶段 commit 行为:调用 自定义 的 commit 逻辑。
  • 二阶段 rollback 行为:调用 自定义 的 rollback 逻辑。

所谓 TCC 模式,是指支持把 自定义 的分支事务纳入到全局事务的管理中。

设计

这种方案说实话几乎很少人使用,我们用的也比较少,但是也有使用的场景。因为这个事务回滚实际上是严重依赖于你自己写代码来回滚和补偿了,会造成补偿代码巨大,非常之恶心。