最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringCloud微服務(wù)應(yīng)用config配置中心詳解

 更新時間:2022年07月08日 15:01:02   作者:前衛(wèi)的架構(gòu)師小D  
這篇文章主要介紹了SpringCloud微服務(wù)應(yīng)用-config配置中心,包括相關(guān)知識介紹、搭建、動態(tài)刷新、測試,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

前言

在系統(tǒng)架構(gòu)中,和安全、日志、監(jiān)控等非功能需求同樣,配置管理也是一種非功能需求。配置中心是整個微服務(wù)基礎(chǔ)架構(gòu)體系中的一個組件,如下圖,它的功能看上去并不起眼,無非就是簡單配置的管理和存取,但它是整個微服務(wù)架構(gòu)中不可或缺的一環(huán)。另外,配置中心若是真得用好了,它還能推進(jìn)技術(shù)組織持續(xù)交付和DevOps轉(zhuǎn)型。

一、傳統(tǒng)應(yīng)用配置痛點(diǎn)

配置散亂格式不標(biāo)準(zhǔn)

  • 配置散亂格式不標(biāo)準(zhǔn)

有的用 properties 格式,有的用 xml 格式,還有的存 DB,團(tuán)隊(duì)傾向自造輪子,作法五花八門。

  • 主要采用本地靜態(tài)配置,配置修改麻煩

配置修改通常須要通過一個較長的測試發(fā)布周期。在分布式微服務(wù)環(huán)境下,當(dāng)服務(wù)實(shí)例不少時,修改配置費(fèi)時費(fèi)力。

  • 易引起生產(chǎn)事故

團(tuán)隊(duì)在發(fā)布的時候?qū)y試環(huán)境的配置帶到生產(chǎn)上,引起資損事故。

  • 配置缺少安全審計(jì)和版本控制功能

二、Config 配置中心介紹

配置中心實(shí)際上就是分布式系統(tǒng)中集中統(tǒng)一管理線上應(yīng)用程序配置項(xiàng)的管理平臺。
在微服務(wù)架構(gòu)中,當(dāng)系統(tǒng)從一個單體應(yīng)用,被拆分成分布式系統(tǒng)上一個個服務(wù)節(jié)點(diǎn)后,配置文件也必須跟著遷移(分割),這樣配置就分散了。不僅如此,分散中還伴隨著冗余,如下圖所示:

創(chuàng)建配置中心,將配置從各個應(yīng)用中剝離出來,對配置進(jìn)行統(tǒng)一管理,應(yīng)用自身不需要自己去管理配置。如下圖所示:

總結(jié)起來最主要包括以下三方面核心功能

  • 配置統(tǒng)一管理

配置項(xiàng)的修改編輯統(tǒng)一在配置中心頁面進(jìn)行,還包括統(tǒng)一的配置版本管理、環(huán)境隔離、灰度發(fā)布以及熱發(fā)布,在不重啟應(yīng)用的情況下使得修改的配置可以生效起作用。

  • 權(quán)限統(tǒng)一控制

主要控制其配置的讀取權(quán)限以及修改權(quán)限,通過統(tǒng)一的權(quán)限管理提升運(yùn)維效率。

  • 操作統(tǒng)一審計(jì)

記錄用戶操作修改配置的歷史信息,這樣在出現(xiàn)問題的時候可以進(jìn)行復(fù)盤回查,同時進(jìn)行操作審計(jì)。

三、服務(wù)端Config Server搭建

1.pom依賴

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
		</dependency>
		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>
		<!-- 動態(tài)刷新使用 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

2.application啟動類配置

@SpringBootApplication
@EnableConfigServer
@EnableEurekaClient
public class ConfigServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(ConfigServerApplication.class, args);
	}
}

3.application.yml配置

spring:
  application:
    name: config-server
    # 使用本地文件,也可配置成從git獲取配置文件
  profiles:
    active:
      - native
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/config
      allow-override: true
      override-none: true
      override-system-properties: false
      discovery:
        enabled: true
      fail-fast: true
# 注冊eureka地址,提供客戶端eureka訪問      
eureka:
  client:
    serviceUrl:
      defaultZone: http://ip:port/eureka/
server:
  port: 8889

4.test-dev.xml(客戶端應(yīng)讀取的配置)

profile:
  dev
spring:
  rabbitmq:
    host: 10.10.10.10
    port: 5672
    username: admin
    password: 123456

test:
  override: client-server
  refresh: re3

5.項(xiàng)目結(jié)構(gòu)

四、客戶端Config Client搭建

1.pom依賴

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
		<!-- 動態(tài)刷新使用 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

2.application啟動類配置

@SpringBootApplication
@EnableEurekaClient
public class ConfigClientApplication {

	public static void main(String[] args) {
		SpringApplication.run(ConfigClientApplication.class, args);
	}
}

3.bootstrap.yml配置

創(chuàng)建bootstrap.yml配置,因?yàn)閱臃?wù)會優(yōu)先采用這個文件的配置,然后是application.yml的配置,服務(wù)器啟動核心配置可能在配置中心,所以必須創(chuàng)建bootstrap.yml,優(yōu)先連接配置中心

spring:
  cloud:
    config:
      # 采用的是test-dev.yml,name是前綴,profile是后綴,label是git存放的分支節(jié)點(diǎn)(本次未使用)
      name: test
      profile: dev
      label: dev
      # 通過service-id(eureka服務(wù)名)連接配置中心
      discovery:
        enabled: true
        service-id: config-server

eureka:
  client:
    serviceUrl:
      defaultZone: http://ip:port/eureka/

4.application.yml配置

server:
  port: 8888
spring:
  application:
    name: config-client
eureka:
  client:
    serviceUrl:
      defaultZone: http://ip:port/eureka/

# 動態(tài)刷新使用
management:
  endpoints:
    web:
      exposure:
        # 暴露監(jiān)控接口,*為全部接口
        include: '*'

5.測試controller

@RestController
@RefreshScope
public class TestController {
    @Value("${spring.rabbitmq.host}")
    String host;
    @Value("${test.override}")
    String override;
    @Value("${test.refresh}")
    String refresh;

    @RequestMapping("/config")
    public String getConfig(){
        return host;
    }

    @RequestMapping("/override")
    public String getOverride(){
        return override;
    }

    @RequestMapping("/refresh")
    public String getRefresh(){
        return refresh;
    }
}

6.項(xiàng)目結(jié)構(gòu)

五.動態(tài)刷新

上述配置中已經(jīng)包含了動態(tài)刷新配置,讓我們一起看一下,是哪些配置起到的作用呢

1.客戶端Config client,添加spring-boot-starter-actuator依賴

		<!-- 動態(tài)刷新使用 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-actuator</artifactId>
		</dependency>

2.Controller層添加注解@RefreshScope

@RestController
@RefreshScope
public class TestController

3.客戶端application.yml增加配置

# 動態(tài)刷新使用
management:
  endpoints:
    web:
      exposure:
        # 暴露監(jiān)控接口,*為全部接口
        include: '*'

4.客戶端手動調(diào)用動態(tài)刷新接口

http://localhost:8888/actuator/refresh

六.測試

開啟eureka,gateway,config server,config client服務(wù),注意開啟順序

1.調(diào)用TestController中config接口

返回了server中mq的ip,正確

2.調(diào)用TestController中override接口

返回了server中test.override的配置,覆蓋了client的test.override

3.調(diào)用TestController中refresh接口(動態(tài)刷新)

現(xiàn)在,我們修改server中test.refresh配置,由re2改為re3
重啟client server(因?yàn)榕渲弥行牡呐渲梦募捎玫姆?wù)端管理,如果放置git可以不用重啟)
重啟完成后再起請求refresh接口

仍然返回re2,現(xiàn)在我們調(diào)用刷新接口

注意設(shè)置Post的header屬性Content-Type=application/json

刷新成功,并返回了屬性名稱,再次請求refresh接口,得到最新的配置:re3

到此這篇關(guān)于SpringCloud微服務(wù)應(yīng)用-config配置中心(介紹、搭建、動態(tài)刷新、測試)的文章就介紹到這了,更多相關(guān)SpringCloud config配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)停車場管理系統(tǒng)

    java實(shí)現(xiàn)停車場管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)停車場管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • Spring Boot 中的任務(wù)執(zhí)行器基本概念及使用方法

    Spring Boot 中的任務(wù)執(zhí)行器基本概念及使用方法

    務(wù)執(zhí)行器是 Spring Boot 中的一個非常實(shí)用的模塊,它可以簡化異步任務(wù)的開發(fā)和管理,在本文中,我們介紹了任務(wù)執(zhí)行器的基本概念和使用方法,以及一個完整的示例代碼,需要的朋友可以參考下
    2023-07-07
  • java實(shí)現(xiàn)voctor按指定方式排序示例分享

    java實(shí)現(xiàn)voctor按指定方式排序示例分享

    這篇文章主要介紹了java實(shí)現(xiàn)voctor按指定方式排序示例,需要的朋友可以參考下
    2014-03-03
  • Springboot項(xiàng)目啟動成功后可通過五種方式繼續(xù)執(zhí)行

    Springboot項(xiàng)目啟動成功后可通過五種方式繼續(xù)執(zhí)行

    本文主要介紹了Springboot項(xiàng)目啟動成功后可通過五種方式繼續(xù)執(zhí)行,主要包括CommandLineRunner接口,ApplicationRunner接口,ApplicationListener接口,@PostConstruct注解,InitalizingBean接口,感興趣的可以了解一下
    2023-12-12
  • Java生成Markdown格式內(nèi)容完整代碼示例

    Java生成Markdown格式內(nèi)容完整代碼示例

    這篇文章主要介紹了將Java對象數(shù)據(jù)生成為Markdown文本,并提供了一個MarkdownUtil工具類進(jìn)行處理,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • java中Map如何根據(jù)key的大小進(jìn)行排序詳解

    java中Map如何根據(jù)key的大小進(jìn)行排序詳解

    這篇文章主要給大家介紹了關(guān)于java中Map如何根據(jù)key的大小進(jìn)行排序的相關(guān)資料,有時候我們業(yè)務(wù)上需要對map里面的值按照key的大小來進(jìn)行排序的時候我們就可以利用如下方法來進(jìn)行排序了,需要的朋友可以參考下
    2023-09-09
  • Java 單例模式線程安全問題

    Java 單例模式線程安全問題

    這篇文章主要介紹了Java 單例模式線程安全問題的相關(guān)資料,希望通過本文大家能了解掌握單例模式中線程安全的使用方法,需要的朋友可以參考下
    2017-09-09
  • Springcloud Eureka配置及集群代碼實(shí)例

    Springcloud Eureka配置及集群代碼實(shí)例

    這篇文章主要介紹了Springcloud Eureka配置及集群代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-12-12
  • JAVA實(shí)現(xiàn)簡單搶紅包算法(模擬真實(shí)搶紅包)

    JAVA實(shí)現(xiàn)簡單搶紅包算法(模擬真實(shí)搶紅包)

    這篇文章主要介紹了JAVA實(shí)現(xiàn)簡單搶紅包算法(模擬真實(shí)搶紅包)的實(shí)例代碼,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-12-12
  • 詳解SpringBoot是如何保證接口安全的

    詳解SpringBoot是如何保證接口安全的

    對于互聯(lián)網(wǎng)來說,只要你系統(tǒng)的接口會暴露在外網(wǎng),就避免不了接口安全問題。?如果你的接口在外網(wǎng)裸奔,只要讓黑客知道接口的地址和參數(shù)就可以調(diào)用,那簡直就是災(zāi)難。這篇文章主要介紹了SpringBoot保證接口安全的方法,需要的可以參考一下
    2023-02-02

最新評論

吐鲁番市| 霍州市| 东辽县| 阿城市| 象州县| 蓬溪县| 田阳县| 晋城| 四会市| 南漳县| 绩溪县| 台州市| 茂名市| 郸城县| 罗江县| 双城市| 两当县| 赤城县| 同江市| 白朗县| 旬邑县| 密山市| 婺源县| 冷水江市| 东城区| 迁安市| 唐山市| 桂东县| 长寿区| 内乡县| 体育| 棋牌| 乌拉特中旗| 瑞金市| 龙州县| 沛县| 佳木斯市| 黄陵县| 宝丰县| 大关县| 武城县|