服务拆分-绞杀者模式
2021-11-10 本文已影响0人
大哥你先走
绞杀者模式
1 定义
老系统向新系统迁移时,可采用将老系统的部分功能使用新应用或服务替换的方式逐步进行。当老系统全部的功能被替换后,新系统就完成了对老系统的替代,从而老系统被”绞杀“,老系统可以关闭或者下线。这种逐步替换老系统功能到新系统的应用或服务上,逐步完成老系统替换的模式,称之为”绞杀者“模式。简而言之,”绞杀者“模式就是一步一步的对老系统进行替换,直至老系统的所有功能都被替换。
2 上下文和问题
随着时间的推移,老系统的架构和技术变得过时,继续向老系统添加功能可能进一步增加系统的复杂性,使得老系统的维护演进变得更加困难。一步到位的替换老系统是一项艰巨的任务,通常采用小步快走的方式逐步使用新系统或服务替换老系统的功能,在替换的过程中老系统还要支持尚未被替换的功能。同时运行两个不同的系统,客户端需要知道功能的位置(老系统or新系统),这个是系统演进过程中需要解决的技术问题。
3 解决方案
采用新系统或服务增量替换老系统特定功能的方法,可以解决老系统向新系统全面迁移过程中遇到的问题。使用该方法时,可以创建一个外观(Facade)层(网关)拦截客户端请求,外观层负责将请求路由到正确的位置(老系统or新系统),客户端不感知系统内部的变化,使用和原来一样的API。
系统演进过程.png随着时间的推移,老系统的功能逐步被新系统或新服务替代,当老系统的全部功能被替代后,老系统被”绞杀“,可以关闭下线。
4 优点
- 最小化系统迁移的风险;
- 系统迁移的节奏更加灵活;
- 用户无感知。
5 问题
- 需要谨慎的处理被老系统和新系统同时使用的服务和存储,需要确保这些服务和存储能够被新系统访问;
- 迁移过程中增加一个Facade服务用于拦截路由请求;
- 如果新系统需要对接其他老系统,新增加的Facade服务可以继续保留完成适配任务;
- Facade服务提供的能力需要保持和系统迁移进度一致;
- 确保Facade层不存在单点故障不会成为系统的瓶颈。
6 应用场景
老系统渐进迁移到新系统,老系统体系结构演进时使用这种模式。