从300万行到50万行代码,遗留系统的微服务改造(2)

本文涉及的产品
云原生网关 MSE Higress,422元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
简介: 从300万行到50万行代码,遗留系统的微服务改造(2)

2. 绞杀者模式

在微服务架构还未流行起来之前,对于增量式的大规模软件改造,常用的是名为“抽象分支”的方法,如图6-2所示。


微信图片_20220123184352.jpg


图6-2  抽象分支

—

组件解耦:在需要被替换的组件与组件消费者之间创建一个抽象层,这一层只根据需要声明抽象的接口或协议,具体的实现仍存留于待替换组件中。这样就通过引入抽象层实现了待替换组件与组件消费者之间的解耦。


  • 新旧组件共存:开发新组件实现同一套抽象层接口,并与待替换组件同时在系统中工作,但开始时只将少部分功能在新组件中实现,或者只有少部分生产环境流量导入到新组件上。
  • 逐步替换:随着功能逐渐完备和技术逐渐成熟,新组件承担越来越多的生产环境流量。经过全面考验后,新组件可以完全替代旧组件之时,旧组件就可以正式下线了。此时如果有需要也可以移除抽象层。


对遗留系统的微服务改造策略,也可以借鉴“抽象分支”的思路,只不过在微服务架构下,抽象层是由一个独立的门面(Facade)服务实现,该服务将请求转发到新系统或者旧系统,起到路由作用。

在改造过程中,新旧系统会同时存在,共同协作对外提供价值。随着改造过程的推进,新系统提供的功能和价值越来越多,逐步地取代原有遗留系统的功能,用户流量也会越来越多地导入到新系统上,最后原有遗留系统不再被使用时,就可以安全地下线了,此时门面服务也可以安全地移除。


这种平滑的过渡方法通常被称为“绞杀者模式”。遗留系统被逐步“绞杀”的过程,如图6-3所示。


微信图片_20220123184408.jpg


图6-3  绞杀者模式


绞杀者模式特别适合用于对复杂度较高的大型遗留系统进行逐步改造,但在迁移过程中也需要注意以下问题:


  • 考虑新系统和遗留系统之间的数据共享或者同步方式。
  • 确保绞杀者门面服务不会出现单点故障或成为性能“瓶颈”。
相关文章
|
3月前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
【10月更文挑战第14天】深入理解微服务架构:构建高效、可扩展的系统
110 0
|
2月前
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
54 3
|
19天前
|
监控 Java 数据中心
微服务架构系统稳定性的神器-Hystrix
Hystrix是由Netflix开源的库,主要用于微服务架构中的熔断器模式,防止服务调用失败引发级联故障。它通过监控服务调用的成功和失败率,在失败率达到阈值时触发熔断,阻止后续调用,保护系统稳定。Hystrix具备熔断器、资源隔离、降级机制和实时监控等功能,提升系统的容错性和稳定性。然而,Hystrix也存在性能开销、配置复杂等局限,并已于2018年进入维护模式。
26 0
|
2月前
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
61 2
|
2月前
|
监控 测试技术 持续交付
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
78 0
|
4月前
|
消息中间件 Dubbo Java
聊聊单体服务VS微服务系统
聊聊单体服务VS微服务系统
|
4月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
242 3
|
2月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
151 6
|
2月前
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
57 1
|
1月前
|
Java 开发者 微服务
从单体到微服务:如何借助 Spring Cloud 实现架构转型
**Spring Cloud** 是一套基于 Spring 框架的**微服务架构解决方案**,它提供了一系列的工具和组件,帮助开发者快速构建分布式系统,尤其是微服务架构。
169 69
从单体到微服务:如何借助 Spring Cloud 实现架构转型