| 为什么分布式事务难 | 跨节点没有全局锁与全局时钟,网络还会超时或丢包 |
| 2PC 两阶段提交 | Prepare 全票通过才 Commit,同步阻塞、协调者单点、Prepare 后宕机数据不一致 |
| 3PC | 在 2PC 前加 CanCommit 缩短阻塞窗口,但引入了新的不一致场景,工程上少用 |
| TCC | Try 预留资源 → Confirm 确认 → Cancel 回滚;业务侵入强、隔离性最好 |
| 空回滚 / 悬挂 / 幂等 | TCC 的三大坑:Cancel 先于 Try 到达、Try 迟到于 Cancel 之后、重复调用 |
| Saga | 长事务 = 多个本地事务 + 补偿操作;编排式(集中状态机)或协同式(事件驱动) |
| Saga 的隔离性 | 无隔离,需靠语义锁或状态机防止中间态被读到 |
| 本地消息表 | 业务与消息同库同事务落表,再由定时任务投递,简单可靠但有一致性延迟 |
| 事务消息 | RocketMQ 半消息 + 回查机制,把「确认投递」交给 MQ 保证 |
| 最大努力通知 | 反复重试直到成功或放弃,适用于对账、通知类弱一致场景 |
| 可靠消息最终一致 | 「本地事务 + 消息」是互联网最主流的方案,核心是保证消息不丢不重 |
| Seata 四种模式 | AT(自动补偿、无侵入)、TCC、Saga、XA;AT 靠 undo log 反向补偿 |
| 柔性事务 | 放弃强隔离、用重试与补偿达成最终一致的一类事务的统称 |
| 什么时候不用分布式事务 | 能把事务收进单库就收进去,或改成异步 + 对账,往往比引入框架更稳 |
| 对账 Reconciliation | 定时比对双方流水,把不一致暴露并修复——最终一致性系统的必备兜底 |