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

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

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

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

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

背景介绍

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

私有云部署模式的配置

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

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

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

公有云部署模式的配置

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

总结

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


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

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

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

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

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

标签:
  • 热门焦点
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • Rust中的高吞吐量流处理

    作者 | Noz编译 | 王瑞平本篇文章主要介绍了Rust中流处理的概念、方法和优化。作者不仅介绍了流处理的基本概念以及Rust中常用的流处理库,还使用这些库实现了一个流处理程序
  • 三言两语说透柯里化和反柯里化

    JavaScript中的柯里化(Currying)和反柯里化(Uncurrying)是两种很有用的技术,可以帮助我们写出更加优雅、泛用的函数。本文将首先介绍柯里化和反柯里化的概念、实现原理和应用
  • 自律,给不了Keep自由!

    来源 | 互联网品牌官作者 | 李大为编排 | 又耳 审核 | 谷晓辉自律能不能给用户自由暂时不好说,但大概率不能给Keep自由。近日,全球最大的在线健身平台Keep正式登陆港交所,努力
  • 三星显示已开始为AR设备研发硅基LED微显示屏

    7月18日消息,据外媒报道,随着苹果首款头显产品Vision Pro在6月份正式推出,AR/VR/MR等头显产品也就将成为各大公司下一个重要的竞争领域,对显示屏这一关
  • iQOO 11S评测:行业唯一的200W标准版旗舰

    【Techweb评测】去年底,iQOO推出了“电竞旗舰”iQOO 11系列,作为一款性能强机,该机不仅全球首发2K 144Hz E6全感屏,搭载了第二代骁龙8平台及144Hz电竞
  • OPPO K11搭载高性能石墨散热系统:旗舰同款 性能凉爽释放

    日前OPPO官方宣布,将于7月25日14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼
  • 华为举行春季智慧办公新品发布会 首次推出电子墨水屏平板

    北京时间2月27日晚,华为在巴塞罗那举行春季智慧办公新品发布会,在海外市场推出之前已经在中国市场上市的笔记本、平板、激光打印机等办公产品,并首次推出搭载
Top