TCC事务
- TCC即Try Confirm Cancel,它属于补偿型分布式事务。TCC实现分布式事务一共有三个步骤:
-
Try:尝试执行的业务
- 这个过程并未执行业务,只是完成所有业务的一致性检查,并预留好执行所需的全部资源
-
Confirm:确认执行业务
- 确认执行的操作,不做任何业务检查,只使用Try阶段预留的业务资源。通常情况下,采用TCC则认为Confirm阶段是不会出错的。即:是要Try成功,Confirm一定成功。若Confirm阶段真的出错了,需引重试机制或人工处理。
-
Cancel:取消待执行的业务
-
取消Try阶段预留的业务资源。通常情况下,采用TCC则认为Cancel阶段也是一定成功的。若Cancel阶段真的不错了,需引入重试机制或人工处理。
-
TCC两阶段提交与XA两阶段提交的区别是:
- XA是资源层面的分布式事务,强一致性,在两阶段提交的整个过程中,一直会持有资源的锁。
- TCC是业务层面的分布式事务,最终一致性,不会一直持有资源的锁。
TCC事务的优缺点
- 优点:把数据库层的二阶段提交上提到了应用层来使用,规避了数据库层的2PC性能低下的问题。
- 缺点:TCC的Try,Confirm,Cancel操作功能需业务提供,开发成本高。