欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微服務(wù)SpringConfig配置中心詳解

 更新時(shí)間:2025年04月19日 10:12:35   作者:早睡早起愛學(xué)習(xí)i  
這篇文章主要介紹了微服務(wù)SpringConfig配置中心,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

前言

提示:這里可以添加本文要記錄的大概內(nèi)容:

例如:隨著人工智能的不斷發(fā)展,機(jī)器學(xué)習(xí)這門技術(shù)也越來越重要,很多人都開啟了學(xué)習(xí)機(jī)器學(xué)習(xí),本文就介紹了機(jī)器學(xué)習(xí)的基礎(chǔ)內(nèi)容。

一、SpringConfig概念介紹

在實(shí)際操作中會(huì)出現(xiàn)多個(gè)微服務(wù)操作同一個(gè)數(shù)據(jù)庫的情況,那么對于每個(gè)微服務(wù)都需要重復(fù)配置數(shù)據(jù)庫信息,而且當(dāng)數(shù)據(jù)庫信息改動(dòng)時(shí)也難以維護(hù)。因此一套集中的、動(dòng)態(tài)的配置管理設(shè)施是必不可少的。

SpringCloud Config為微服務(wù)架構(gòu)中的微服務(wù)提供集中化的外部配置支持,配置服務(wù)器為各個(gè)不同微服務(wù)應(yīng)用的所有環(huán)境提供了一個(gè)中心化的外部配置。SpringCloud Config 具體分為客戶端和服務(wù)端兩部分。

具體作用:

  • 集中管理配置文件;
  • 不同運(yùn)行環(huán)境不同的配置,動(dòng)態(tài)化地進(jìn)行配置更新,分環(huán)境部署(dev/test/prod/release)
  • 運(yùn)行期間動(dòng)態(tài)調(diào)整配置,不需要在每個(gè)服務(wù)部署的機(jī)器上編寫配置文件,配置變動(dòng)各個(gè)微服務(wù)能夠自動(dòng)拉取信息

二、配置中心服務(wù)器端搭建

配置中心服務(wù)端

1、SpringCloud Server使用Git 作為遠(yuǎn)程的配置文件倉庫存儲(chǔ)地址,我們需要先在遠(yuǎn)程建立好倉庫

2、修改pom.xml、application.yml

        <!-- SpringConfig Server -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
server:
  port: 3344
spring:
  application:
    name: cloud-config-server
  cloud:
    config:
      server:
        git:         #配置遠(yuǎn)程倉庫的地址
          uri: https://gitee.com/loserii/my_-spring-cloud_config.git
          password: xjxhhxjava2048
          username: loserii
          search-paths: xxxxx     #git倉庫下相對搜索地址
      label: master  #配置遠(yuǎn)程分支名
eureka:
  instance:
    instance-id: configServer
    prefer-ip-address: true
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka

配置完成后啟動(dòng)服務(wù),本地通過HTTP請求訪問遠(yuǎn)程倉庫上的配置文件時(shí)遵循以下格式的請求資源:

/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
  • {label} 作為遠(yuǎn)程倉庫的分支;
  • {application}-{profile} 作為遠(yuǎn)程倉庫上的配置文件名,比如config-test.yml

3、此外還可以配置多個(gè)存儲(chǔ)庫,配置相應(yīng)的匹配規(guī)則來讀取文件

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo
          repos:
            simple: https://github.com/simple/config-repo
            special:
              pattern: special*/dev*,*special*/dev*
              uri: https://github.com/special/config-repo
            local:
              pattern: local*
              uri: file:/home/configsvc/config-repo

pattern表示模式匹配,是帶有通配符{application}/{profile}名稱的逗號(hào)分隔列表。如果pattern不匹配任何模式,那么它就會(huì)使用spring.cloud.config.server.git.uri下的默認(rèn)uri。

三、配置中心客戶端搭建

3.1 配置同步機(jī)制介紹

客戶端通過SpringCloud Config Server來獲取到遠(yuǎn)程的Config環(huán)境配置,但是如果想要自己定義一些額外的配置,就需要另外創(chuàng)建一個(gè)配置文件。

客戶端項(xiàng)目中包含兩種配置文件:application.yml(用戶級(jí)的資源配置項(xiàng))、bootstrap.yml(系統(tǒng)級(jí)的資源配置項(xiàng),優(yōu)先級(jí)更高)

SpringCloud 會(huì)創(chuàng)建一個(gè) Bootstrap Context上下文,該上下文作為 Application Context的父上下文。初始化的時(shí)候,Bootstrap Context負(fù)責(zé)從外部源加載配置屬性并且解析配置。這兩個(gè)上下文共享一個(gè)從外部獲取的Environment。

什么是Environment?

Environment用于存儲(chǔ)服務(wù)器的配置數(shù)據(jù),管理此行為的是EnvironmentRepository。Environment是Spring Environment(包括PropertySources作為主要功能)的域的淺層副本。

Environment資源由三個(gè)變量參數(shù)化:

  • {application}映射到客戶端的spring.application.name;
  • {profile}映射到客戶端上的 spring.profiles.active
  • {label}標(biāo)記版本這一組件;

3.2 詳細(xì)配置

客戶端從配置服務(wù)中心獲取配置。

  • 修改 pom.xml、bootstrap.yml
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-config</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
spring:
  application:
    name: ConfigCenterClient
  cloud:
    config:
      fail-fast: false     #客戶端連接失敗時(shí)開啟重試,需要結(jié)合spring-retry、spring-aop
      label: master       #獲取配置文件的分支名
      name: config        #獲取的文件名
      profile: test       #文件后綴
      uri: http://localhost:3344  #配置中心服務(wù)端地址

eureka:
  instance:
    instance-id: config-client
    prefer-ip-address: true
  client:
    register-with-eureka: true
    fetch-registry: true
    service-url:
      defaultZone: http://localhost:7001/eureka
server:
  port: 3355

注意與eureka、cloud相關(guān)的配置需要放在bootstrap.yml文件中,程序啟動(dòng)時(shí)會(huì)先讀取bootstrap.yml然后再讀取application.yml

  • 測試配置讀取
@RestController
@RequestMapping("/test")
public class TestController {
    @Value("${config.info}")
    private String info;

    @GetMapping("/testInfo")
    public String test(){
        return info;
    }
}

3.3 分布式下的問題

測試時(shí)發(fā)現(xiàn)當(dāng)在遠(yuǎn)程倉庫修改配置文件數(shù)據(jù)后,本地的SpringCloud Config Server能夠在不重啟的情況下接收到新配置,但是本機(jī)的SpringCloud Config Client就不能直接獲取,必須進(jìn)行重啟。這在微服務(wù)很多時(shí)是不方便處理的。

解決方法: 客戶端向外部暴露監(jiān)控的端點(diǎn),結(jié)合@RefreshScope注解來解決

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring-Data-JPA整合MySQL和配置的方法

    Spring-Data-JPA整合MySQL和配置的方法

    這篇文章主要介紹了Spring Data JPA整合MySQL和配置,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-04-04
  • 深入理解java異常處理機(jī)制及應(yīng)用

    深入理解java異常處理機(jī)制及應(yīng)用

    本篇文章主要介紹了java異常處理機(jī)制及應(yīng)用,異常處理機(jī)制是Java語言的一大特色。從異常處理的機(jī)制、異常處理的方法、異常處理的原則等方面介紹Java語言的異常處理技術(shù),有興趣的可以了解一下。
    2016-12-12
  • 教新手使用java如何對一個(gè)大的文本文件內(nèi)容進(jìn)行去重

    教新手使用java如何對一個(gè)大的文本文件內(nèi)容進(jìn)行去重

    用HashSet對內(nèi)容去重這個(gè)過程jvm會(huì)內(nèi)存溢出,只能首先將這個(gè)大文件中的內(nèi)容讀取出來,對每行String的hashCode取模取正整數(shù),可用取模結(jié)果作為文件名,將相同模數(shù)的行寫入同一個(gè)文件,再單獨(dú)對每個(gè)小文件進(jìn)行去重,最后再合并
    2021-06-06
  • Java AQS中CyclicBarrier回環(huán)柵欄的使用

    Java AQS中CyclicBarrier回環(huán)柵欄的使用

    這篇文章主要介紹了Java中的 CyclicBarrier詳解,CyclicBarrier沒有顯示繼承哪個(gè)父類或者實(shí)現(xiàn)哪個(gè)父接口, 所有AQS和重入鎖不是通過繼承實(shí)現(xiàn)的,而是通過組合實(shí)現(xiàn)的,下文相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2023-02-02
  • SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn)代碼

    SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn)代碼

    這篇文章主要介紹了SpringBoot整合WebSocket的客戶端和服務(wù)端的實(shí)現(xiàn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-07-07
  • SpringBoot中Session的使用及說明

    SpringBoot中Session的使用及說明

    這篇文章主要介紹了SpringBoot中Session的使用及說明,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java?SpringBoot?中的操作事務(wù)

    Java?SpringBoot?中的操作事務(wù)

    這篇文章主要介紹了Java?SpringBoot?中的操作事務(wù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • SpringCloud Gateway 利用 Mysql 實(shí)現(xiàn)動(dòng)態(tài)路由的方法

    SpringCloud Gateway 利用 Mysql 實(shí)現(xiàn)動(dòng)態(tài)路由的方法

    這篇文章主要介紹了SpringCloud Gateway 利用 Mysql 實(shí)現(xiàn)動(dòng)態(tài)路由的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java list foreach修改元素方式

    Java list foreach修改元素方式

    這篇文章主要介紹了Java list foreach修改元素方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Java基礎(chǔ)知識(shí)精通注釋與數(shù)據(jù)類型及常量與變量

    Java基礎(chǔ)知識(shí)精通注釋與數(shù)據(jù)類型及常量與變量

    本文給大家介紹了Java的注釋與數(shù)據(jù)類型和常量變量,這些都是最基礎(chǔ)的知識(shí),文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論