正文
我们先套一个业务场景进去,如下图所示
那页面点了支付按钮,调用支付服务,那我们后台要实现下面三个步骤
[1] 订单服务-修改订单状态
[2] 账户服务-扣减金钱
[3] 库存服务-扣减库存
达到事务的效果,要么一起成功,要么一起失败!就要采取TCC分布式事务方案!
概念
TCC的全称是(Try-Confirm-Cancel)。如下图所示
ps:TCC又可以被称为两阶段补偿事务,第一阶段try只是预留资源,第二阶段要明确的告诉服务提供者,这个资源你到底要不要,对应第二阶段的confirm/cancel,用来清除第一阶段的影响,所以叫补偿型事务。
再打个比方,说TCC太高大上是吧,讲RM中的prepare、commit、rollback接口,总知道吧。可以类比的这么理解