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

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

2. 绞杀者模式

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


微信图片_20220123184352.jpg


图6-2  抽象分支

—

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


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


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

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


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


微信图片_20220123184408.jpg


图6-3  绞杀者模式


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


  • 考虑新系统和遗留系统之间的数据共享或者同步方式。
  • 确保绞杀者门面服务不会出现单点故障或成为性能“瓶颈”。
相关文章
|
7月前
|
人工智能 搜索推荐 前端开发
从代码到心灵对话:我的CodeBuddy升级体验之旅(个性化推荐微服务系统)
本文分享了使用CodeBuddy最新版本的深度体验,重点探讨了Craft智能体、MCP协议和DeepSeek V3三大功能。Craft实现从对话到代码的无缝转化,大幅提升开发效率;MCP协议打通全流程开发,促进团队协作;DeepSeek V3则将代码补全提升至新境界,显著减少Bug并优化跨语言开发。这些功能共同塑造了AI与程序员共生的未来模式,让编程更高效、自然。
736 15
|
9月前
|
JSON Java 数据格式
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
本文介绍了在Spring Boot项目中如何通过创建`GlobalExceptionHandler`类来全局处理系统异常。通过使用`@ControllerAdvice`注解,可以拦截项目中的各种异常,并结合`@ExceptionHandler`注解针对特定异常(如参数缺失、空指针等)进行定制化处理。文中详细展示了处理参数缺失异常和空指针异常的示例代码,并说明了通过拦截`Exception`父类实现统一异常处理的方法。虽然拦截`Exception`可一劳永逸,但为便于问题排查,建议优先处理常见异常,最后再兜底处理未知异常,确保返回给调用方的信息友好且明确。
1235 0
微服务——SpringBoot使用归纳——Spring Boot中的全局异常处理——处理系统异常
|
9月前
|
存储 NoSQL Linux
微服务2——MongoDB单机部署4——Linux系统中的安装启动和连接
本节主要介绍了在Linux系统中安装、启动和连接MongoDB的详细步骤。首先从官网下载MongoDB压缩包并解压至指定目录,接着创建数据和日志存储目录,并配置`mongod.conf`文件以设定日志路径、数据存储路径及绑定IP等参数。之后通过配置文件启动MongoDB服务,并使用`mongo`命令或Compass工具进行连接测试。此外,还提供了防火墙配置建议以及服务停止的两种方法:快速关闭(直接杀死进程)和标准关闭(通过客户端命令安全关闭)。最后补充了数据损坏时的修复操作,确保数据库的稳定运行。
639 0
|
监控 持续交付 API
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
250 4
|
Dubbo Cloud Native 应用服务中间件
阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。
在云原生时代,微服务架构成为主流。阿里云的 Dubbo 和 Nacos 深度整合,提供了高效的服务注册与发现、配置管理等关键功能,简化了微服务治理,提升了系统的灵活性和可靠性。示例代码展示了如何在项目中实现两者的整合,通过 Nacos 动态调整服务状态和配置,适应多变的业务需求。
419 2
|
12月前
|
监控 Java 数据中心
微服务架构系统稳定性的神器-Hystrix
Hystrix是由Netflix开源的库,主要用于微服务架构中的熔断器模式,防止服务调用失败引发级联故障。它通过监控服务调用的成功和失败率,在失败率达到阈值时触发熔断,阻止后续调用,保护系统稳定。Hystrix具备熔断器、资源隔离、降级机制和实时监控等功能,提升系统的容错性和稳定性。然而,Hystrix也存在性能开销、配置复杂等局限,并已于2018年进入维护模式。
254 0
|
监控 测试技术 持续交付
深入理解微服务架构:构建高效、可扩展的系统
深入理解微服务架构:构建高效、可扩展的系统
330 0
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
688 6
|
设计模式 Java API
微服务架构演变与架构设计深度解析
【11月更文挑战第14天】在当今的IT行业中,微服务架构已经成为构建大型、复杂系统的重要范式。本文将从微服务架构的背景、业务场景、功能点、底层原理、实战、设计模式等多个方面进行深度解析,并结合京东电商的案例,探讨微服务架构在实际应用中的实施与效果。
330 1
|
安全 应用服务中间件 API
微服务分布式系统架构之zookeeper与dubbo-2
微服务分布式系统架构之zookeeper与dubbo-2

热门文章

最新文章