成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SpringCloud微服務又想變回單體怎么辦

開發 前端
在私有云部署模式下,通過將所有服務和組件打包在一個JAR包中,我們可以實現將微服務架構合并為單體應用的效果。這種方式簡化了開發和測試環境中的部署和維護流程。

你好,我是柳岸花開。

在當今的企業級應用開發中,微服務架構因其靈活性和可擴展性而受到廣泛歡迎。然而,隨著業務需求的變化和系統復雜度的增加,部分企業開始探索將微服務架構合并為單體應用的可能性。本文將基于兩個實際的Spring Boot配置示例,探討如何實現這一轉變,并分享一些最佳實踐。

背景介紹

微服務架構通過將應用拆分為多個獨立的服務,增強了系統的靈活性和可擴展性。然而,在某些場景下,將這些獨立服務重新整合為單體應用可以簡化部署和維護流程,尤其是在開發和測試環境中。

私有云部署模式的配置

在私有云部署模式下,所有服務和組件都打包在一個JAR包中,進行統一的部署和管理。以下是一個典型的配置示例:

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等。

@ConditionalOnDeployMode:根據部署模式條件進行配置,僅在DeployModeEnum.MERGE模式下生效。

TestDuplicateConfiguration:檢查關鍵Controller是否存在于IOC容器中,如果缺失則拋出異常提醒配置錯誤。

公有云部署模式的配置

在公有云部署模式下,產品服務通過Feign調用服務提供接口,需要掃描和注冊Feign客戶端,同時避免掃描指定包下的組件。以下是一個典型的配置示例:

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客戶端進行服務調用,確保系統的靈活性和可擴展性。

總結

通過上述兩種配置方式,我們可以根據不同的部署模式,靈活地調整Spring Boot應用的配置,滿足從微服務到單體的轉變需求。這不僅提高了系統的靈活性和可維護性,也為開發者提供了更多的選擇。在實際開發中,可以根據具體的業務需求和部署環境,進一步優化和擴展這些配置策略,以實現最佳的系統架構。


責任編輯:武曉燕 來源: 柳岸花開
相關推薦

2021-06-29 06:42:54

單體架構微服務

2021-01-11 11:14:35

微服務架構調用

2024-07-08 11:30:35

2023-07-11 08:55:26

系統白名單AO

2022-03-29 08:30:15

微服務架構單體架構

2022-12-21 16:13:31

微服務架構

2021-07-01 21:49:48

微服務Nacos服務

2022-04-11 17:33:29

微服務架構單體

2013-01-29 13:22:24

系統服務

2010-03-04 09:06:35

Windows 7Apache安裝

2022-11-18 07:40:57

2011-11-24 18:38:54

服務器負載

2023-11-12 21:58:41

Java“假死”

2023-10-12 00:07:27

Service單體微服務

2024-01-19 11:57:42

2022-08-05 07:37:39

單體架構遷移微服務

2024-11-19 08:10:00

2023-11-01 11:17:26

單體架構微服務架構

2009-11-03 08:56:02

linux死機操作系統

2024-04-22 08:17:23

MySQL誤刪數據
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 99这里只有精品视频 | 久久久久亚洲 | 狠狠av | 精品成人69xx.xyz | 免费色网址 | 国产精品不卡视频 | 亚欧洲精品在线视频免费观看 | 久久综合av| 日韩欧美二区 | 亚洲一区欧美一区 | 波多野结衣二区 | 欧美成年视频 | 欧美日韩亚洲国产 | 日韩在线观看精品 | 99久久久无码国产精品 | 午夜在线视频 | 久久久久久久久久久久久9999 | 亚洲精品中文在线 | 91久久视频| 成人av看片 | 日韩精品一区二 | 久久一二区 | 日韩精品免费视频 | 国产亚洲一区二区三区在线观看 | 精品综合 | 免费久久99精品国产婷婷六月 | 成人不卡一区二区 | 伊人春色成人 | 欧美日本一区 | 在线观看国产视频 | 九九热re| 国产视频综合 | 欧美日韩在线成人 | 久久99精品久久 | 你懂的免费在线 | 91久久国产综合久久 | 亚洲欧美一区二区三区视频 | 玖玖国产精品视频 | 亚洲国产日韩一区 | 国产免费一级一级 | 国产成人久久av免费高清密臂 |