分布式事务之TCC事务模型
正文 我们先套一个业务场景进去,如下图所示 那页面点了支付按钮,调用支付服务,那我们后台要实现下面三个步骤 [1] 订单服务-修改订单状态 [2] 账户服务-扣减金钱 [3] 库存服务-扣减库存 达到事务的效果,要么一起成功,要么一起失败!就要采取TCC分布式事务方案! 概念 TCC的全称是(Try-Confirm-Cancel)。如下图所示 ps:TCC又可以被称为两阶段补偿事务,第一阶段try只是预留资源,第二阶段要明确的告诉服务提供者,这个资源你到底要不要,对应第二阶段的confirm/cancel,用来清除第一阶段的影响,所以叫补偿型事务。 再打个比方,说TCC太高大上是吧,讲RM中的prepare、commit、rollback接口,总知道吧。可以类比的这么理解 那差别在哪呢? rollback、commit、prepare,站在开发者层面是感知不到的,数据库帮你做了资源的操作! 而try、confirm、cancel,站在开发者层面是能感知到的,这三个方法的业务逻辑,即对资源的操作,开发者是要自己去实现的! 好,下面套入我们的场景,怎么做呢。比如,你的订单服务中本来只有一个接口 //修改代码状态 orderClient.updateStatus(); 都要拆为三个接口,即 orderClient.tryUpateStatus(); orderClient