微服务一致性不再有免费午餐
本文深入探讨了微服务架构中数据一致性面临的挑战,指出传统分布式事务(如两阶段提交)在微服务环境下不再可行。作者分析了最终一致性、Saga模式等替代方案,并强调开发者必须正视一致性问题,主动进行架构设计权衡,而非期待免费午餐式的解决方案。
背景速读
- 微服务架构将一个大应用拆成多个独立小服务,每个服务有自己的数据库。这样做的好处是灵活、可独立部署,但坏处是:当一笔业务操作需要更新多个服务的数据时,很难保证所有数据同时一致。
- 传统单体应用依赖关系型数据库的 ACID 事务保证"要么全做要么全不做";但在跨服务的分布式环境下,ACID 事务代价极高甚至不可行,业界长期依赖 Saga 模式或最终一致性(Eventually Consistent)来妥协。
- 本文标题的"Free Lunch"指的是过去几年行业默认的假设——只要接受最终一致性,就可以低成本地搭建可靠的跨服务流程。作者认为这种"免费午餐"已经结束,即最终一致性在越来越多的场景下不再够用,必须回到更严格的一致性保证上,但代价是显著增加的系统复杂度和性能开销。
- 文章出现在分布式系统"从云原生回滚到单体"的讨论周期中——2023–2025 年很多团队发现微服务带来的分布式一致性问题比预想的更难解决,开始重新评估架构权衡。