TCC分布式事务详解(3大模式及实现原理)

TCC分布式事务详解(3大模式及实现原理)-mikechen

TCC分布式事务定义

TCC全称叫Try-Confirm-Cancel,翻译过来就是尝试、确认、取消,是一种用于分布式事务处理的解决方案。

 

TCC分布式事务模式

TCC模式将整个事务拆分为三个阶段:尝试(Try)、确认(Confirm)和取消(Cancel)。

TCC分布式事务详解(3大模式及实现原理)-mikechen

TCC的每个阶段对应一个操作,确保事务最终一致性。

第一步:尝试(Try)阶段

在尝试阶段,事务参与者尝试预留资源并执行业务逻辑,但是并不直接修改数据库或其他外部状态。

 

第二步:确认(Confirm)阶段

如果所有事务参与者的尝试阶段都执行成功,并且没有出现错误,那么就进入确认阶段。

在确认阶段,事务参与者真正执行对数据库和外部状态的修改,并释放之前预留的资源。

 

第三步:取消(Cancel)阶段

如果任何一个事务参与者在尝试阶段出现错误,或者在确认阶段出现错误,那么就需要进入取消阶段。

在取消阶段,事务参与者撤销之前的尝试阶段所做的操作,以保持数据的一致性。

 

TCC分布式事务原理

TCC分布式事务本质也是一种两阶段提交(2PC)的替代方案,只不过进行了改进而已。

2PC是一种阻塞性事务模型,全称是Two-phase commit,将事务拆分为两个阶段:准备(Prepare)和提交(Commit)。

两阶段提交协议(2PC),该协议是目前最常用的分布式事务解决方案之一。

如下图所示:
TCC分布式事务详解(3大模式及实现原理)-mikechen

从上图可以非常清洗的看见,整个过程分为如下2大阶段:

第一阶段: prepare 

每个参与者执行本地事务但不提交,进入 ready 状态,并通知协调者已经准 备就绪。

第二阶段:commit 

当协调者确认每个参与者都 ready 后,通知参与者进行 commit 操作,如果有 参与者 fail ,则发送 rollback 命令,各参与者做回滚。

2PC是由数据库或事务管理器提供的一种标准的分布式事务解决方案,可以通过数据库的XA接口来实现,但2PC面临着阻塞问题和单点故障的风险。

而TCC分布式事务方案其实是两阶段提交的一种改进,可以说 TCC 就是应用层的 2PC。

  • Try 操作对应2PC 的一阶段准备(Prepare)
  • Confirm 对应 2PC 的二阶段提交(Commit)
  • Cancel 对应 2PC 的二阶段回滚(Rollback)

改进后变成如下图所示:

TCC分布式事务详解(3大模式及实现原理)-mikechen

TCC分布式事务是一种补偿性事务模型,将事务拆分为三个阶段:尝试(Try)、确认(Confirm)和取消(Cancel)。

try阶段通过预留资源的方式避免了同步阻塞资源的情况,但是TCC编程需要业务自己实现try,confirm,cancle方法,对业务入侵太大,实现起来也比较复杂。

作者简介

陈睿|mikechen,10年+大厂架构经验,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注作者「mikechen」公众号,获取更多技术干货!

评论交流
    说说你的看法