TCC(补偿事务)
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`
了解TCC(补偿事务模式)
TCC(Try-Confirm-Cancel)是一种分布式事务解决方案,它是基于补偿机制的两阶段提交的变种。TCC解决方案适用于分布式系统,其中标准的两阶段提交(2PC)协议可能因为其同步锁定资源而导致吞吐量降低。
三个关键阶段
TCC的每个事务都分为三个阶段:
1. Try 阶段
预留资源:验证业务操作的可行性,并预留必要的业务资源。
2. Confirm 阶段
确认事务:如果所有服务的Try操作都成功,那么执行Confirm操作提交事务,使所有之前预留的资源得以真正使用。
3. Cancel 阶段
取消事务:如果在Try阶段任何一个服务失败,触发Cancel操作,取消所有之前的预留动作,释放已占用资源。
TCC与传统两阶段提交(2PC)的比较
优势:
资源锁定时间短:资源在Try阶段仅被预留,并不真正锁定,减少了系统资源锁定的时间。
灵活性高:通过业务层来控制事务,可以根据业务的需要定制化补偿逻辑。
缺点:
实现复杂度高:每个业务操作都需要实现Try, Confirm, Cancel三个操作。
一致性窗口问题:在Confirm阶段之前的时间窗口内,系统数据处于不一致状态。
实际应用
由于其灵活性和对资源锁定时间的减少,TCC模式在电子商务、金融行业等要求高并发处理能力的分布式系统中被广泛应用。例如,处理支付交易、订单创建、库存管理等场景。
结论
TCC事务模式是解决分布式系统中事务问题的有效方式之一,它通过分步执行和补偿机制来确保整个分布式系统的一致性和高效。尽管实现上较为复杂,但它提供了强大的灵活性来处理复杂的业务场景。
在设计分布式事务时,考虑使用TCC模式可以是一个非常有益的选择,特别是在需要高吞吐量和灵活性的系统中。然而,它也需要仔细地设计事务的各个阶段,确保系统在面对各种失败情况时仍然能够正确地进行补偿操作。
最后更新于