面试官:分布式事务怎么保证一致性?别再说 2PC 和 TCC 了——Seata AT 模式的正确打开方式
引言 面试现场,面试官抛出经典问题:"分布式事务怎么保证一致性?" 90% 的候选人脱口而出:"2PC 和 TCC。" 面试官追问:"你项目里用的哪个?" 候选人:"……了解过原理,没用过。" 这篇文章不讲理论,只讲实战。从一个转账场景出发,带你走完 2PC 的坑、TCC 的重、最后落地 Seata AT 模式——对业务零侵入,自动回滚,这才是生产环境真正在用的方案。 一、问题背景:跨服务转账 1.1 场景描述 用户 A 向用户 B 转账 100 元,涉及两个服务: 转账服务(Transfer Service) ├── 账户服务 A(Account Service A):扣减 A 的余额 └── 账户服务 B(Account Service B):增加 B 的余额 两个服务连的是不同的数据库,本地事务管不了跨库操作。 1.2 问题在哪 @Service public class TransferService { @Autowired private AccountServiceA accountServiceA; // RPC 调用 @Autowired private Acco....