分布式事务处理之TCC模型

TCC模型

一、什么是TCC模型

TCC是try confirm cancel的单词首字母缩写,是一个类似2pc理论的柔性分布式事务处理的解决方案

ps:

1.什么是分布式事务处理?

  分布式系统是把一个应用系统拆分解到各个块进行独立运行部署,当我们的部署服务在各个区块执行的时候,需要服务与服务之间进行远程协作完成事务的操作,这种通过网络连接完成分布式系统的事务处理任务的事务,称为分布式事务。

2.什么是2pc理论?

  2pc是指两阶段提交协议,就是把整个事务流程分为两个部分,一部分是准备阶段(Prepare)另一部分是提交阶段(Commit)

  原理:

  准备阶段:开始,事务的管理者会给每个参与者发送Prepare的消息,并写入本地数据日志,但是此时事务并没有提交。

  提交阶段:当事务管理器收到参与者执行失败、或者执行超时了的信号时,事务管理器会直接给每个参与者发送回滚信号(RollBack);否则,事务管理器将对每个参与者发送提交的消息;参与者则根据事务管理器的指示进行提交信息或者进行回滚操作,并且在最后阶段要释放之前占有的资源。

二、TCC模型核心

如图:

分布式事务处理之TCC模型

 

 Try操作:对业务进行检查,比如检查数据库资源是否充足,然后在业务隔离层隔离业务活动需要的资源;

Confirm操作:这个操作的前提是Try操作成功执行,这一步是执行业务,并且无需检查资源情况,直接使用Try操作隔离预留的资源;

Cancel操作:执行这个操作是因为Try操作失败,释放掉Try操作预留的资源;

三、TCC模型原理

TCC模型主要分为三个部分:主服务、从服务和全局事务管理器

分布式事务处理之TCC模型

 

 

原理:

  服务与服务之间通过请求/响应的同步通信机制进行交互;

  主服务是提供对外接口,接收客户端请求,并且发起一个全局的业务活动并编排所有的事务参与者;

  从服务是全局事务的参与者,提供Try、Confirm、Cancel三个接口,通过调用这些接口来使从服务的事务完成;

  全局事务管理器是整个分布式事务的协调者,记录着全局事务管理的执行日志和事务状态,在Try操作阶段完成后根据成功与否调动Confirm或者Cancel接口,全局事务管理器是一个单独的服务。

四、TCC模型异常处理

通常有三种异常处理:空回滚、幂等、悬挂

  空回滚:在没有执行Try 操作的情况下,调用 Cancel 操作,Cancel 方法需要识别出这是一个空回滚,然后直接返回成功;

  主要是因为分支事务所在的服务异常或网络异常,进而使调用记录为失败;也就是说,如果执行了Try操作就正常进行回滚,如果没有执行Try操作,那就是执行空回滚;执行了Try操作事务日志里会存在记录,Cancel操作可以根据有无记录判断是否为空回滚。

  幂挂:确保 Confirm提交重试机制不会引发数据不一致,要求 TCC  Try、Confirm 和 Cancel 接口保证幂等,这样不会重复使用或者释放资源。

  悬挂: 就是Cancel 操作比 Try 操作先执行;

  在全局事务管理器调用分支事务 的Try 操作时,是先注册分支事务,再执行全局事务管理器调用,如果此时全局事务管理器调用的网络发生拥堵,通常全局事务管理器调用是有超时时间的,全局事务管理器超时以后,就会回滚该分布式事务,可能回滚完成之后,全局事务管理器请求才到达参与者真正执行,而一个 Try 方法预留的业务资源,只有该分布式事务才能使用,则Try操作留出来的资源无法被利用造成悬挂。

 

 

上一篇:(C#版)使用TCC分布式事务改造现有下单流程(一)


下一篇:筛质数