赞
踩
TCC的作用主要是解决跨服务调用场景下的分布式事务问题,TCC是Try-Confirm-Cancel的简称:
TCC事务机制相对于传统XA事务机制,其特征在于它依赖资源管理器对XA的支持,而是通过对(由业务系统提供的)业务逻辑的调度来实现分布式事务。
在阶段一:
XA 事务中,各个资源管理器准备各自事务分支,也就是准备提交资源的更新操作(insert,delete 或 update等),而在 TCC 中,是主业务活动请求 (try) 各个从业务服务预留资源
在阶段二:
XA 根据第一阶段每个资源管理器是否都 prepare 成功,判断是提交还是回滚。
TCC中,如果第一阶段所有业务资源都预留成功,那么 Confirm 各个从业务服务,否则 Cancel 所有从业务服务的资源预留请求;Try 阶段成功后,如果因为网络波动导致各个参与者超时,则需要重试。这就要求 Confirm 操作必须是幂等的。Try 操作主要是为了 保证业务操作的前置条件都得到满足。然后在 Confirm 阶段,因为前置条件都满足了,不断重试直至成功就行了。
但万一 Confirm 重试还是失败了呢?这就会导致数据不一致了,因为有的从业务 Confirm 成功已经执行了资源操作。所以 TCC 模式也不能百分百保证一致性。但 TCC 事务为我们屏蔽了大多数异常导致的数据不一致,一般情况下,进行 Confirm 或 Cancel 操作时产生异常的概率极小极小,我们可以先记录错误日志,后续使用定时任务修复数据或直接人工修复数据所以对于一些强一致性系统,我们还是会使用TCC事务来保证多个服务之间的数据一致性。
优点:
缺点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。