美文网首页
服务拆分-绞杀者模式

服务拆分-绞杀者模式

作者: 大哥你先走 | 来源:发表于2021-11-10 06:45 被阅读0次

绞杀者模式

1 定义

老系统向新系统迁移时,可采用将老系统的部分功能使用新应用或服务替换的方式逐步进行。当老系统全部的功能被替换后,新系统就完成了对老系统的替代,从而老系统被”绞杀“,老系统可以关闭或者下线。这种逐步替换老系统功能到新系统的应用或服务上,逐步完成老系统替换的模式,称之为”绞杀者“模式。简而言之,”绞杀者“模式就是一步一步的对老系统进行替换,直至老系统的所有功能都被替换。

2 上下文和问题

随着时间的推移,老系统的架构和技术变得过时,继续向老系统添加功能可能进一步增加系统的复杂性,使得老系统的维护演进变得更加困难。一步到位的替换老系统是一项艰巨的任务,通常采用小步快走的方式逐步使用新系统或服务替换老系统的功能,在替换的过程中老系统还要支持尚未被替换的功能。同时运行两个不同的系统,客户端需要知道功能的位置(老系统or新系统),这个是系统演进过程中需要解决的技术问题。

3 解决方案

采用新系统或服务增量替换老系统特定功能的方法,可以解决老系统向新系统全面迁移过程中遇到的问题。使用该方法时,可以创建一个外观(Facade)层(网关)拦截客户端请求,外观层负责将请求路由到正确的位置(老系统or新系统),客户端不感知系统内部的变化,使用和原来一样的API。

系统演进过程.png

随着时间的推移,老系统的功能逐步被新系统或新服务替代,当老系统的全部功能被替代后,老系统被”绞杀“,可以关闭下线。

4 优点

  • 最小化系统迁移的风险;
  • 系统迁移的节奏更加灵活;
  • 用户无感知。

5 问题

  • 需要谨慎的处理被老系统和新系统同时使用的服务和存储,需要确保这些服务和存储能够被新系统访问;
  • 迁移过程中增加一个Facade服务用于拦截路由请求;
  • 如果新系统需要对接其他老系统,新增加的Facade服务可以继续保留完成适配任务;
  • Facade服务提供的能力需要保持和系统迁移进度一致;
  • 确保Facade层不存在单点故障不会成为系统的瓶颈。

6 应用场景

老系统渐进迁移到新系统,老系统体系结构演进时使用这种模式。

相关文章

  • 服务拆分-绞杀者模式

    绞杀者模式 1 定义 老系统向新系统迁移时,可采用将老系统的部分功能使用新应用或服务替换的方式逐步进行。当老系统全...

  • 绞杀者模式 (一)

    背景 随着系统老化、开发工具逐渐落伍、bug 堆积,项目会变得及难维护。所以“腐烂”是所有遗产项目不可避免的一环。...

  • 服务拆分-分层模式

    1 定义 分层架构(Layered Architecture),是一种将复杂系统划分为多个逻辑层的架构模式,这种模...

  • 01、DDD和微服务的关系

    软件架构模式的演进 微服务设计和拆分的困境 1、微服务的粒度应该多大呀?2、微服务到底应该如何拆分和设计呢?3、微...

  • 使用CDC模式改造遗留系统

    项目改造背景及挑战 在我们经历的各种遗留系统改造之旅中,使用绞杀者模式[https://martinfowler....

  • 服务拆分-防腐层模式

    1 定义 防腐层(Anti-Corruption Layer)模式,是一种在不同语义的子系统间构建一层功能,对子系...

  • 拆分盘及模式

    我们今天的主角---拆分盘及其模式,就是从股市及股票交易衍化过来的。 拆分盘理财模式的发明者是一位新加坡华人---...

  • 微服务架构上云最佳实践

    一、微服务拆分 首先从真实的案例开始讲起,当一些客户接触到了一些微服务之后,他们就会将原本经典的分层架构模式拆分成...

  • 点餐项目规范

    规范 使用 spring cloud 体系 拆分服务(商品服务,订单服务) 服务通讯使用 feign 具体服务拆分...

  • 微服务该如何拆分?

    微服务的拆分一直是历史性的难题,行业内更是没有具体的拆分标准,拆分的好坏更多取决于拆分者的经验,并经过反复迭代,逐...

网友评论

      本文标题:服务拆分-绞杀者模式

      本文链接:https://www.haomeiwen.com/subject/uslbzltx.html