07_TCC和2PC有什么区别

gong_yz大约 1 分钟分布式事务

TCC和2PC有什么区别

实现机制不同

首先,二者的实现机制不同,2PC使用协调者和参与者的方式来实现分布式事务,而TCC采用分阶段提交的方式。

处理方式不同

处理方式不同,2PC采用预写式日志的方式,在提交和回滚阶段需要协调者和参与者之间进行多次网络通信,整个事务处理过程较为复杂。TCC则只需要在Try、Confirm和Cancel阶段执行相应的业务逻辑。

异常处理不同

2PC需要处理网络、节点故障等异常情况,可能会导致整个事务无法提交或回滚,处理异常情况的复杂度较高。而TCC只需要处理业务异常情况,异常处理相对简单。

适用场景不同

2PC适用于对事务一致性要求较高的场景,例如银行转账等,需要保证数据致性和完整性。而TCC适用于对事务一致性要求不那么高的场景,例如电商库存扣减等,需要保证数据最终一致性即可。

最初TCC的设计是强一致性,基本上一次事务执行完之后,数据是一致的,要么都commit,要么都cancel。

但是其实在实际使用过程中,可能会采用最终一致性的思想,比如commit失败之后,进行异步重试让他尝试成功,而不是立刻cancel