分布式事务
2021年双十一,我们下单服务的分布式事务在零点流量峰值时彻底崩溃。
事后复盘:开发团队用了 2PC 做跨库扣款,库存服务超时导致全局事务回滚。结果是 2000 多笔订单超时锁定,用户体验崩塌,直接损失超过 50 万。
【架构权衡】 2PC 在生产环境里最大的问题不是协议本身,而是它对协调者的高可用和网络的容错几乎为零。一旦出现分区,事务可能永久阻塞。这个案例让我意识到:分布式事务没有银弹,选型必须基于业务对一致性的真实需求。
一、内容总览
本模块覆盖分布式事务的完整知识体系,从协议原理到工程落地:
1.1 协议基础
1.2 补偿模式
1.3 工程实践
1.4 选型决策
二、学习路径指引
第一阶段:啃透 2PC/3PC(3-5 天)
先看 2PC 协议详解 理解两阶段提交的原理和角色划分,然后看 2PC 的问题分析 搞清楚为什么生产环境踩坑无数。对比 2PC vs 3PC 理解两者的差异和各自的局限性。
【架构权衡】 2PC 的核心问题是:协调者宕机后,参与者可能永远锁定资源。3PC 通过预提交阶段降低了这种风险,但依然无法彻底解决分布式事务的一致性问题。理解这一点,才能理解为什么 TCC 和 Saga 成为主流。
第二阶段:掌握 TCC 与 Saga(5-7 天)
TCC 模式 是国内最常用的分布式事务方案,建议结合 TCC 避坑指南 和 TCC 幂等性 一起看。然后学习 Saga 模式 和 Saga 的恢复策略。
TCC 最大的坑是空回滚和事务悬挂。Try 阶段超时导致 Cancel 先执行,叫空回滚;Confirm 失败但 Cancel 没有执行,叫悬挂。没见过这两个坑的候选人,面试被问到就是送命题。
第三阶段:工程落地(持续)
生产环境里,Seata 是国内使用最广的分布式事务框架。先看 Seata AT 模式 理解它是怎么做自动补偿的,再看 Seata TCC 模式 理解如何与业务代码结合。最后看 方案选型 做出架构决策。
三、生产避坑速查
四、面试高频考点
分布式事务是面试官最爱深挖的领域,三层追问必须准备:
第一追问:2PC 的协调者宕机了怎么办?
考察候选人对 2PC 缺陷的理解。必须能说出协调者单点问题、参与者锁定资源、全局回滚失败等风险。
第二追问:TCC 的空回滚和悬挂是怎么产生的?怎么解决?
考察候选人的实战深度。必须能讲清楚 Try-Confirm-Cancel 的状态流转,以及幂等性和悬挂检测的实现。
第三追问:你们生产环境用的什么方案?为什么不用 2PC?
考察候选人的架构权衡能力。能说清楚业务对一致性的需求、选择了什么方案、为此付出了什么代价。
本模块覆盖从协议原理到生产实践的完整链路,每个知识点都来自真实架构评审和生产事故。