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

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

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

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

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

背景介绍

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

私有云部署模式的配置

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

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

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

公有云部署模式的配置

在公有云部署模式下,产品服务通过Feign调用服务提供接口,需要扫描和注册Feign客户端,同时避免扫描指定包下的组件。以下是一个典型的配置示例:mhB28资讯网——每日最新资讯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客户端进行服务调用,确保系统的灵活性和可扩展性。mhB28资讯网——每日最新资讯28at.com

总结

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


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

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

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

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

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

标签:
  • 热门焦点
  • 之家push系统迭代之路

    前言在这个信息爆炸的互联网时代,能够及时准确获取信息是当今社会要解决的关键问题之一。随着之家用户体量和内容规模的不断增大,传统的靠"主动拉"获取信息的方式已不能满足用
  • JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 只需五步,使用start.spring.io快速入门Spring编程

    步骤1打开https://start.spring.io/,按照屏幕截图中的内容创建项目,添加 Spring Web 依赖项,并单击“生成”按钮下载 .zip 文件,为下一步做准备。请在进入步骤2之前进行解压。图
  • Temu起诉SHEIN,跨境电商战事升级

    来源 | 伯虎财经(bohuFN)作者 | 陈平安日前据外媒报道,拼多多旗下跨境电商平台Temu正对竞争对手SHEIN提起新诉讼,诉状称Shein“利用市场支配力量强迫服装厂商与之签订独家
  • 小米MIX Fold 3下月亮相:今年唯一无短板的全能折叠屏

    这段时间以来,包括三星、一加、荣耀等等有不少品牌旗下的最新折叠屏旗舰都有新的进展,其中荣耀、三星都已陆续发布了最新的折叠屏旗舰,尤其号荣耀Magi
  • 引领旗舰级影像能力向中端机普及 OPPO K11 系列发布 1799 元起

    7月25日,OPPO正式发布K系列新品—— OPPO K11 。此次 K11 在中端手机市场长期被忽视的影像板块发力,突破性地搭载索尼 IMX890 旗舰大底主摄,支持 OIS
  • 机构称Q2全球智能手机出货量同比下滑11% 苹果份额依旧第2

    7月20日消息,据外媒报道,研究机构的报告显示,由于需求下滑,今年二季度全球智能手机的出货量,同比下滑了11%,三星、苹果等主要厂商的销量,较去年同期均有下
  • 滴滴违法违规被罚80.26亿 共存在16项违法事实

    滴滴违法违规被罚80.26亿 存在16项违法事实开始于2121年7月,历经一年时间,网络安全审查办公室对“滴滴出行”网络安全审查终于有了一个暂时的结束。据“网信
  • 苹果140W USB-C充电器:采用氮化镓技术

    据10 月 30 日 9to5 Mac 消息报道,当苹果推出新的 MacBook Pro 2021 时,该公司还推出了新的 140W USB-C 充电器,附赠在 MacBook Pro 16 英寸机型的盒子里,也支
Top