分布式事务

在单体应用中,事务是一件事:begin → 操作 → commit,数据库保证 ACID。但在分布式架构下,一笔业务操作横跨多个服务、多个数据库,甚至多个存储系统——下单服务要扣库存,账户服务要扣余额,物流服务要创建运单。任何一步失败,都需要其他所有步骤一起回滚。

这就是分布式事务的核心挑战:跨越边界的 ACID 如何实现?

2PC(两阶段提交)是最直观的方案,但协调者宕机会导致资源永远被锁定。3PC 试图用超时机制解决这个问题,但仍然无法完全避免数据不一致。TCC(Try-Confirm-Cancel)把补偿逻辑交给业务方,在灵活性上更进一步。Saga 放弃了 ACID 中的 C(隔离性),用一系列本地事务和正向/逆向补偿来模拟长事务。

本模块将系统讲解这四种分布式事务方案,以及 Seata 等框架的 AT 模式如何通过「 undo log」实现无侵入的分布式事务。