📦 开源仓库: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。