TCC(Try-Confirm-Cancel)又被称补偿事务,TCC与2PC的思想很相似,事务处理流程也很相似,但2PC是应用于在DB层面,TCC则可以理解为在应用层面的2PC,是需要我们编写业务逻辑来实现。
TCC它的核心思想是:"针对每个操作都要注册一个与其对应的确认(Try)和补偿(Cancel)"。
还拿下单扣库存解释下它的三个操作:
Try阶段:下单时通过Try操作去扣除库存预留资源。
Confirm阶段:确认执行业务操作,在只预留的资源基础上,发起购买请求。
Cancel阶段:只要涉及到的相关业务中,有一个业务方预留资源未成功,则取消所有业务资源的预留请求。
TCC的缺点:
应用侵入性强:TCC由于基于在业务层面,至使每个操作都需要有try、confirm、cancel三个接口。
开发难度大:代码开发量很大,要保证数据一致性confirm和cancel接口还必须实现幂等性。