ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

分布式事务处理之TCC模型

2021-10-24 15:03:45  阅读:399  来源: 互联网

标签:事务 管理器 事务处理 Try 操作 全局 TCC 分布式


TCC模型

一、什么是TCC模型

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

ps:

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

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

2.什么是2pc理论?

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

  原理:

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

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

二、TCC模型核心

如图:

 

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

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

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

三、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操作留出来的资源无法被利用造成悬挂。

 

 

标签:事务,管理器,事务处理,Try,操作,全局,TCC,分布式
来源: https://www.cnblogs.com/demon-/p/15451056.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有