当前位置:首页>排行榜>并发与分布式专题 03|分布式事务怎么选?2PC/TCC/Seata 通透

并发与分布式专题 03|分布式事务怎么选?2PC/TCC/Seata 通透

  • 更新时间 2026-11-01 08:35:18
并发与分布式专题 03|分布式事务怎么选?2PC/TCC/Seata 通透
一个下单要扣库存、扣钱、发消息,跨多个服务。要么全成要么全败,怎么保证?

一、难点

单体里 @Transactional 一把锁完事;分布式下每个服务自己有库,没有全局事务。

二、2PC(两阶段提交)

  • 准备阶段:所有参与者锁资源、投票。
  • 提交阶段:协调者下令统一提交/回滚。
  • 缺点:同步阻塞、协调者单点、数据锁很久,性能差,少用。

三、TCC(补偿型)

Try(预留资源)→ Confirm(确认)/ Cancel(补偿)。业务自己写三阶段,灵活但侵入强、代码多。

四、Seata(AT 模式)

框架自动:拦截 SQL 生成前后镜像,异常时自动回滚,对业务几乎无侵入。中小型分布式系统首选。

五、怎么选

  • 强一致 + 能接受性能损耗:2PC(少)。
  • 高并发定制:TCC。
  • 一般业务:Seata AT,省心。

六、面试速记

  1. 分布式事务难点:各服务独立库,无全局锁。
  2. 2PC:两阶段,强一致但阻塞。
  3. TCC:业务补偿,灵活侵入强。
  4. Seata AT:自动回滚,几乎无侵入,首选。
  5. 大多数场景优先 Seata。

七、一句话带走

分布式事务:Seata AT 无侵入最省心,TCC 高并发可定制,2PC 强一致但阻塞。选型先看"能不能接受侵入和性能损耗"。

分布式面试

更多 Java 面试速通,关注公众号持续更新。

随机文章