一个业务动作要同时写多个库/多个服务时,单机 ACID 失效了。分布式事务就是要在「跨节点」的前提下,尽量靠近「要么全成、要么全败」的语义——同时付出性能与复杂度的代价。
1. 先问三句话,再谈方案
很多所谓的「分布式事务」其实是设计问题的症状。动手前先自问:
- 能不能改成单库本地事务? 把强关联的数据放在同一个库,是成本最低的解法。
- 能不能改成异步最终一致? 只要业务允许「短暂不一致、稍后收敛」,就不需要强一致的分布式事务。
- 一致性要求到底是多强? 是「绝对不超卖」,还是「最终不超卖、允许短时误差」?
2026/10/11大约 7 分钟