一、绞杀者模式(Strangler Pattern)
绞杀者模式是一种渐进式替换遗留系统的策略,通过逐步迁移功能,避免“重写失败”风险,其核心思想源于澳大利亚绞杀榕的生长模式:新系统像藤蔓一样逐步包裹旧系统,最终完全替代。
1. 核心步骤
- (1)创建门面服务(Facade)
在新旧系统间部署一个代理层(如API网关或独立服务),负责请求路由。初始阶段,所有请求默认转发到旧系统。- 示例:企业微信启动任务重构中,通过启动任务管理框架逐步迁移旧逻辑,新旧代码共存。
- (2)逐步迁移功能
按模块或API粒度重写功能,将新实现注册到门面服务,并通过规则(如流量比例、用户分组)逐步将请求路由到新系统。- 案例:某金融系统通过nginx注入React前端代码,实现动静分离,新前端逐步接管旧JSP页面的数据绑定。
- (3)监控与优化
监控新系统的性能、稳定性及业务指标,确保平滑过渡。迁移完成后,旧系统可下线,门面服务逐步移除。
2. 优势与挑战
- 优势:
- 低风险:避免一次性全量迁移的中断风险,支持回滚。
- 灵活性:可优先替换高价值或高负债模块(如性能瓶颈、频繁变更功能)。
- 挑战:
- 数据一致性:新旧系统需同步数据,可能引入复杂事务管理。
- 迭代成本:长期维护新旧并行系统,需额外资源投入。
3. 典型场景
- 边缘功能替换:如邮件发送、日志记录等非核心模块。
- 核心业务重构:如订单系统升级时,通过API路由逐步迁移。