开发者学堂课程【全面讲解Spring Cloud Alibaba技术栈(知识精讲+项目实战)第五阶段:分布式事务解决方案-TCC】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/687/detail/11926
分布式事务解决方案-TCC
内容介绍
一、基本介绍
二、实现分布式事务的三个步骤
三、TCC 两阶段与 XA 两阶段的区别
四、TCC 事务的优缺点
一、基本介绍
第四种分布式事务解决方案称为TCC事务。TCC是三个英文单词的
缩写,分别为 Try(尝试)、Confirm(提交)、Cancel(取消),它属
于补偿型的分布式事务解决方案。
TCC 实现分布式事务一共需要三个步骤,这三个步骤分别就是这三个
单词。
二、实现分布式事务的三个步骤
1、Try:尝试待执行的业务
这个过程并未真正地执行业务,只是完成所有业务的一致性检查,并
预留好执行所需的全部资源。
2、Confirm:确认执行业务
确认执行业务操作,不做任何业务检查,只使用Try阶段预留的业
务资源。通常情况下,采用TCC则认为 Confirm 阶段是不会出错的。
即:只要Try成功,Confirm 一定成功。若 Confirm 阶段真的出错
了,需引入重试机制或人工处理。
3、Cancel:取消待执行的业务
取消 Try 阶段预留的业务资源。通常情况下,采用TCC则认为只要
Try 成功了,Cancel 阶段也是一定成功的。若 Cancel 阶段真的出
现问题,需引入重试机制或人工处理。
第一个是 Try,Try 如果全部成功,就可以执行 Confirm 了。Try如
果有失败的,就执行 Cancel。这个图其实与最初的全局事务是很相
似的。TCC 两个阶段的提交和全局事务两个阶段的提交非常相似,但
是也有一定区别。
三、TCC两阶段与XA两阶段的区别
1、XA 是资源层面的分布式事务,所谓的资源可以认为是数据库层次
的分布式事务,保证的是强一致性,在两阶段提交的整个过程中,一
直会持有资源的锁。
2、TCC 是业务层面的分布式事务,最终保持一致性就可以,不会一
直持有资源的锁。
四、TCC事务的优缺点
1、优点
把数据库层的二阶段提交上揭到了应用层来实现,规避了数据库层进
行两阶段提交的性能低下问题。而性能低下的原因就是持有数据库资
源锁的时间过长。
2、缺点
TCC 的 Try、Confirm 和 Cancel 操作功能需业务提供,也就意味着
需要自主进行代码的开发,开发成本高。
这些方案只是指导思想,还是要运用实际的产品。业界的产品的数量
不在少数,但比较流行的却不是特别多。
