当前位置:首页 > 科技  > 软件

SpringCloud微服务又想变回单体怎么办

来源: 责编: 时间:2024-07-01 17:15:52 239观看
导读你好,我是柳岸花开。在当今的企业级应用开发中,微服务架构因其灵活性和可扩展性而受到广泛欢迎。然而,随着业务需求的变化和系统复杂度的增加,部分企业开始探索将微服务架构合并为单体应用的可能性。本文将基于两个实际的

你好,我是柳岸花开。8WL28资讯网——每日最新资讯28at.com

在当今的企业级应用开发中,微服务架构因其灵活性和可扩展性而受到广泛欢迎。然而,随着业务需求的变化和系统复杂度的增加,部分企业开始探索将微服务架构合并为单体应用的可能性。本文将基于两个实际的Spring Boot配置示例,探讨如何实现这一转变,并分享一些最佳实践。8WL28资讯网——每日最新资讯28at.com

背景介绍

微服务架构通过将应用拆分为多个独立的服务,增强了系统的灵活性和可扩展性。然而,在某些场景下,将这些独立服务重新整合为单体应用可以简化部署和维护流程,尤其是在开发和测试环境中。8WL28资讯网——每日最新资讯28at.com

私有云部署模式的配置

在私有云部署模式下,所有服务和组件都打包在一个JAR包中,进行统一的部署和管理。以下是一个典型的配置示例:8WL28资讯网——每日最新资讯28at.com

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.InitializingBean;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;@Slf4j@Configuration@ComponentScan(basePackages = {"com.bob.custom"}, nameGenerator = BeanNameGenerator.class)@ConditionalOnDeployMode(mode = DeployModeEnum.MERGE)public class MergeAutoConfiguration {    @Configuration    @AutoConfigureAfter(MergeAutoConfiguration.class)    @ConditionalOnMissingBean(InternalOpenUserController.class)    @ConditionalOnDeployMode(mode = DeployModeEnum.MERGE)    public static class TestDuplicateConfiguration implements InitializingBean {        @Override        public void afterPropertiesSet() {            throw new RuntimeException("In the pre-deployment environment, the controller implementation for the interface was not scanned. Please check if the deploy.mode configuration is correct and confirm if an incorrect scan path is configured in the code @ComponentScan");        }    }}

关键点解析

@ComponentScan:扫描并注册指定包下的组件,如controller、service、mapper等。8WL28资讯网——每日最新资讯28at.com

@ConditionalOnDeployMode:根据部署模式条件进行配置,仅在DeployModeEnum.MERGE模式下生效。8WL28资讯网——每日最新资讯28at.com

TestDuplicateConfiguration:检查关键Controller是否存在于IOC容器中,如果缺失则抛出异常提醒配置错误。8WL28资讯网——每日最新资讯28at.com

公有云部署模式的配置

在公有云部署模式下,产品服务通过Feign调用服务提供接口,需要扫描和注册Feign客户端,同时避免扫描指定包下的组件。以下是一个典型的配置示例:8WL28资讯网——每日最新资讯28at.com

import lombok.extern.slf4j.Slf4j;import org.springframework.beans.factory.InitializingBean;import org.springframework.boot.autoconfigure.AutoConfigureAfter;import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;import org.springframework.cloud.openfeign.EnableFeignClients;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.FilterType;@Slf4j@Configuration@ConditionalOnDeployMode(mode = DeployModeEnum.SPLIT)@EnableFeignClients(basePackages = {"com.bob"})@ComponentScan(excludeFilters = @ComponentScan.Filter(type = FilterType.REGEX, pattern = "com//.bob//..*"))public class SplitAutoConfiguration {    @Configuration    @AutoConfigureAfter(SplitAutoConfiguration.class)    @ConditionalOnBean(InternalOpenUserController.class)    @ConditionalOnDeployMode(mode = DeployModeEnum.SPLIT)    @ConditionalOnMissingBean(name = "platformApiApplication")    public static class TestDuplicateConfiguration implements InitializingBean {        @Override        public void afterPropertiesSet() {            throw new RuntimeException("In the cloud environment, the controller implementation for the interface was found. Please check if the deploy.mode configuration is correct and confirm if an incorrect scan path is configured in the code @ComponentScan");        }    }}

关键点解析

  1. @EnableFeignClients:启用Feign客户端扫描和注册。
  2. @ComponentScan:通过排除过滤器避免扫描指定包下的组件。
  3. UcDuplicateConfiguration:在公有云环境中,如果检测到不应该存在的Controller,则抛出异常提醒配置错误。

从微服务到单体的转变

在私有云部署模式下,通过将所有服务和组件打包在一个JAR包中,我们可以实现将微服务架构合并为单体应用的效果。这种方式简化了开发和测试环境中的部署和维护流程。然而,在生产环境中,我们仍然可以保持公有云部署模式,通过Feign客户端进行服务调用,确保系统的灵活性和可扩展性。8WL28资讯网——每日最新资讯28at.com

总结

通过上述两种配置方式,我们可以根据不同的部署模式,灵活地调整Spring Boot应用的配置,满足从微服务到单体的转变需求。这不仅提高了系统的灵活性和可维护性,也为开发者提供了更多的选择。在实际开发中,可以根据具体的业务需求和部署环境,进一步优化和扩展这些配置策略,以实现最佳的系统架构。8WL28资讯网——每日最新资讯28at.com


8WL28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-97900-0.htmlSpringCloud微服务又想变回单体怎么办

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 为什么搜索的未来是向量?

下一篇: 2024 热门前端 UI 组件库超全汇总!

标签:
  • 热门焦点
  • 鸿蒙OS 4.0公测机型公布:甚至连nova6都支持

    华为全新的HarmonyOS 4.0操作系统将于今天下午正式登场,官方在发布会之前也已经正式给出了可升级的机型产品,这意味着这些机型会率先支持升级享用。这次的HarmonyOS 4.0支持
  • 三万字盘点 Spring 九大核心基础功能

    大家好,我是三友~~今天来跟大家聊一聊Spring的9大核心基础功能。话不多说,先上目录:图片友情提示,本文过长,建议收藏,嘿嘿嘿!一、资源管理资源管理是Spring的一个核心的基础功能,不
  • 19个 JavaScript 单行代码技巧,让你看起来像个专业人士

    今天这篇文章跟大家分享18个JS单行代码,你只需花几分钟时间,即可帮助您了解一些您可能不知道的 JS 知识,如果您已经知道了,就当作复习一下,古人云,温故而知新嘛。现在,我们就开始今
  • 三分钟白话RocketMQ系列—— 如何发送消息

    我们知道RocketMQ主要分为消息 生产、存储(消息堆积)、消费 三大块领域。那接下来,我们白话一下,RocketMQ是如何发送消息的,揭秘消息生产全过程。注意,如果白话中不小心提到相关代
  • 大厂卷向扁平化

    来源:新熵作者丨南枝 编辑丨月见大厂职级不香了。俗话说,兵无常势,水无常形,互联网企业调整职级体系并不稀奇。7月13日,淘宝天猫集团启动了近年来最大的人力制度改革,目前已形成一
  • 阿里大调整

    来源:产品刘有媒体报道称,近期淘宝天猫集团启动了近年来最大的人力制度改革,涉及员工绩效、层级体系等多个核心事项,目前已形成一个初步的“征求意见版”:1、取消P序列
  • 华为Mate 60系列用上可变灵动岛:正式版体验将会更出色

    这段时间以来,关于华为新旗舰的爆料日渐密集。据此前多方爆料,今年华为将开始恢复一年双旗舰战略,除上半年推出的P60系列外,往年下半年的Mate系列也将
  • 三星折叠屏手机去年销售近1000万台 今年目标定为1500万

    7月29日消息,三星率先发力可折叠手机市场,在全球市场已经取得了非常亮眼的成绩,接下来会进一步巩固和扩大这一优势。三星在推出Galaxy Z Flip5和Galax
  • OPPO K11评测:旗舰级IMX890加持 2000元档最强影像手机

    【Techweb评测】中端机型用户群体巨大,占了中国目前手机市场的大头,一直以来都是各手机品牌的“必争之地”,其中OPPO K系列机型一直以来都以高品质、
Top