外观主题
阅读语言

绞杀者模式 Strangler Fig —— 老系统一寸一寸换新,不做大爆炸重写

软件 本站软件 3小时前
https://yxp.hk/p/hC72Be

📦 开源仓库:learn_strangler_fig · 纯 Python 标准库 · 学习演示项目

推倒重写老系统是分布式系统里最危险的举动之一。绞杀者模式(Strangler Fig)的替代思路:在新老系统前面放一个网关,按功能一块一块把流量从老系统「绞」到新系统,直到老系统完全腾空、可以下线。就像绞杀榕缠住宿主树,一寸寸取而代之。

核心思路

  users ──► gateway ──► 100% 老系统   (阶段一)
                     ├─►  20% 新系统  (阶段二,金丝雀)
                     ├─►  50% 新系统  (阶段三)
                     └─► 100% 新系统  (阶段四,老系统退役)
  • 不搞一次性重写,每一步只迁移一小块功能
  • 出问题随时把新流量比例调回去,秒级回滚
  • 全部迁完后老系统直接退役

为什么值得学

  • 低风险:增量迁移,故障面小且可逆
  • 不停机:整个过程用户无感
  • 每一步都是真实生产验证:业务可以逐阶段确认

演示场景

按 100% 老系统 → 20% 金丝雀 → 50/50 → 100% 新系统四个阶段,观察同一请求在不同阶段的去向。

运行

python run_all.py

纯 Python 标准库,零第三方依赖,一键跑完所有演示场景后自动退出。
仓库:github.com/yxpil/learn_strangler_fig,欢迎 Star 与提 Issue。