成人免费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-12-21 16:13:31

微服務架構

2022-03-29 08:30:15

微服務架構單體架構

2021-07-01 21:49:48

微服務Nacos服務

2022-04-11 17:33:29

微服務架構單體

2011-11-24 18:38:54

服務器負載

2023-11-12 21:58:41

Java“假死”

2013-01-29 13:22:24

系統服務

2022-11-18 07:40:57

2010-03-04 09:06:35

Windows 7Apache安裝

2023-10-12 00:07:27

Service單體微服務

2024-01-19 11:57:42

2023-11-01 11:17:26

單體架構微服務架構

2024-11-19 08:10:00

2022-08-05 07:37:39

單體架構遷移微服務

2019-10-12 09:50:46

Redis內存數據庫

2018-01-28 20:39:39

戴爾
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久国产精品色av免费观看 | 国产电影一区二区 | 午夜寂寞福利视频 | 9久9久9久女女女九九九一九 | 久草欧美视频 | 久久99深爱久久99精品 | 亚洲97| 久久精品日产第一区二区三区 | 久久久久久久久淑女av国产精品 | 久久一区二区三区四区五区 | 精品欧美一区二区三区精品久久 | 久久不射网 | 欧美黄a| 国产精品一区二区福利视频 | 亚洲区中文字幕 | 久久久久久影院 | 国产视频1区2区 | 91视频入口| 一级片av | 亚洲久草视频 | 黄色网页在线 | 日本精品裸体写真集在线观看 | 中文字幕精品一区 | www.操.com | 欧美在线综合 | 久久久综合精品 | 亚洲国产精品久久久久秋霞不卡 | 国产高清精品网站 | 超碰精品在线观看 | 91精品国产91久久久久久最新 | 亚洲第一区国产精品 | 欧美日韩在线一区二区 | 91av在线看| 高清国产午夜精品久久久久久 | 国产视频一区二区 | 在线看av网址 | 狠狠av | 香蕉国产在线视频 | 免费看国产a | 中文字字幕一区二区三区四区五区 | 亚洲欧美一区在线 |