springcloud(五):Spring Cloud 配置中心的基本用法

來源:互聯網
上載者:User

標籤:title   tle   現在   設定檔的路徑   本地   參數   simple   process   target   

Spring Cloud 配置中心的基本用法1. 概述

本文介紹了Spring Cloud的配置中心,介紹配置中心的如何佈建服務端及配置參數,也介紹用戶端如何和配置中心互動和配置參數說明。 
配置中心伺服器部分內容包括:服務建立,git,svn,native後端的配置,各種url訪問 
配置中心用戶端部分內容包括:訪問配置、failfast,重試

2. Spring Cloud Config的服務端2.1. 簡述

我們在開發大的系統時,由於服務較多,相同的配置(如資料庫資訊、緩衝、開關量等)會出現在不同的服務上,如果一個配置發生變化,則可能需要修改很多的服務配置。為瞭解決這個問題,spring cloud提供配置中心。 
首先所有的公用配置儲存在相同的地址(儲存的地方可以是git,svn和本地檔案),然後配置中心從這些地方讀取配置以restful發布出來,其它服務可以調用介面擷取配置資訊。

2.2. 佈建服務

引入關鍵jar

 <dependency>     <groupId>org.springframework.cloud</groupId>     <artifactId>spring-cloud-config-server</artifactId> </dependency>

通過@EnableConfigServer可以啟用配置中心服務。配置中心可以單獨做服務,也可以嵌入到其它服務中。推薦用單獨做服務方式使用配置中心。

@SpringBootApplication@EnableConfigServer // 啟用該應用為設定檔伺服器:讀取遠程設定檔,轉換為rest介面服務public class CloudGitConfigServerApplication {    public static void main(String[] args) {        args = new String[1];        args[0] = "--spring.profiles.active=gitsimple2";        SpringApplication.run(CloudGitConfigServerApplication.class, args);    }}

由於設定檔的儲存的多樣性,下面介紹每種配置形式如何配置。所有的配置都配置在application-*.yml中

2.3. git後端

Spring Cloud配置中心的後端系統可以是:

  • VCS(如git,svn等)
  • 本地檔案

本節我們介紹git配置 
配置參數主要配置中application-gitsimple2.yml

spring:  application:    name: special  cloud:    config:      server:        git:          #  設定檔只搜尋url目錄下的searchPaths          uri: https://github.com/hryou0922/spring_cloud.git          # 指定搜尋路徑,如果有多個路徑則使用,分隔          searchPaths: cloud-config-git/simple2/configspecial,cloud-config-git/simple2/default          # 對於使用git,svn做為後端配置,從遠程庫擷取設定檔,需要儲存到本地檔案          basedir: /tmp/spring-cloud-repo          # 配置中心通過git從遠程git庫,有時本地的拷貝被汙染,這時配置中心無法從遠程庫更新本地配置,設定force-pull=true,則強制從遠程庫中更新本地庫          force-pull: true

 

spring.cloud.config.server.git.url:指定設定檔所在遠程git庫的url地址 

spring.cloud.config.server.git.searchPaths:和上面的參數url配合使用,定位git庫的子目錄。指定搜尋路徑,如果有多個路徑則使用,分隔

spring.cloud.config.server.git.basedir:對於使用git,svn做為後端配置,從遠程庫擷取設定檔,需要儲存到本地檔案。預設儲存在系統臨時目錄下,目錄名的首碼為config-repo-,如在linux下時可能是/tmp/config-repo-。因為/tmp下的內容有可能被誤刪,所有為了保險,最好修改儲存目錄。如果你修改儲存目錄,你可以修改spring.cloud.config.server.git.basedir

spring.cloud.config.server.git.force-pull:配置中心通過git從遠程git庫讀取資料時,有時本地的拷貝被汙染,這時配置中心無法從遠程庫更新本地配置。設定force-pull=true,則強制從遠程庫中更新本地庫

以上是一些常用的配置,其它配置可以自己看配置類MultipleJGitEnvironmentRepository類

2.4. svn後端

svn的配置方法和git差不多,主要使用”spring.cloud.config.server.svn.*”。這裡略

2.5. 檔案系統後端

除了使用從git/svn下載設定檔,你可以從classpath目錄或本地檔案系統中載入設定檔。通過spring.cloud.config.server.native.searchLocations配置地址.這裡又分為兩類:

  • 從本地目錄載入設定檔:以file開頭 
    • file:///${user.home}/config-repo 
      預設值:file:./, file:./config
  • 從classpath中載入設定檔:以classpath開頭 
    • 如果不配置值,則預設值:classpath:/, classpath:/config

以classpath為例,file的用法和classpath用法相同,這裡略.

spring:  profiles:    # native:啟動從本地讀取設定檔,必須指定active的值,才可以使用本地檔案配置模式    active: native    # 自訂設定檔路徑  cloud:    config:      server:        native:          searchLocations: classpath:/config/simple2/

spring.profiles.active: 如果使用本地系統配置,則此值必須是native 
spring.cloud.config.server.native.searchLocations: 指定設定檔的路徑

2.6. 啟動和測試

通過CloudGitConfigServerApplication就可以啟動服務

在瀏覽器中輸入如下URL,可以訪問到設定檔

/{application}/{profile}[/{label}]/{application}-{profile}.yml/{label}/{application}-{profile}.yml/{application}-{profile}.properties/{label}/{application}-{profile}.properties

 

下面通過具體例子說明以上url的意思。如果我們的設定檔名稱cloud-config-simple2.yml,則其和URL中各個欄位對應的值為:

  • application: cloud-config
  • profile: simple2
  • label: 9500e50f08c43e3e4391175c8f6d5a326b11302f

我們訪問以下地址都可以訪問到設定檔config-simple2.yml和特定版本下此檔案: 
http://127.0.0.1:10888/cloud-config/simple2 
http://127.0.0.1:10888/cloud-config/simple2/9500e50f08c43e3e4391175c8f6d5a326b11302f 
http://127.0.0.1:10888/cloud-config-simple2.yml 
http://127.0.0.1:10888/9500e50f08c43e3e4391175c8f6d5a326b11302f/cloud-config-simple2.yml 
http://127.0.0.1:10888/cloud-config-simple2.properties 
http://127.0.0.1:10888/9500e50f08c43e3e4391175c8f6d5a326b11302f/cloud-config-simple2.properties

3. Spring Cloud Config的用戶端

配置中心服務端配置成功後,然後其它服務從配置中心擷取設定檔,這樣的服務被稱為用戶端。

3.1. 配置用戶端

引入jar:

<dependency>    <groupId>org.springframework.cloud</groupId>    <artifactId>spring-cloud-config-client</artifactId></dependency>

 

只要是@SpringBootApplication註解啟動的spring boot即可

@SpringBootApplicationpublic class SimpleCloudServiceApplication {    public static void main(String[] args) {        args = new String[1];        args[0] = "--spring.profiles.active=simple2";        SpringApplication.run(SimpleCloudServiceApplication.class, args);    }}

 

3.2. 配置參數

請將配置中心的相關配置配置在bootstrap-.yml中,不要配置appliaction-.yml。因為服務啟動時,會從bootstrap中讀取配置,然後從遠程配置中心讀取設定檔,最後再從appliaction中擷取配置,如果有相同的配置項,則後面的會覆蓋前面讀到的值。所以如果配置中心的配置配置在appliaction,則配置項不會有任何效果。

bootstrap-simple2.yml

spring:  cloud:    # 設定管理員的地址    config:      uri: http://127.0.0.1:10888      # 要讀取設定檔讀取的值      name: cloud-config      # 如果不設定此值,則系統設定此值為 spring.profiles.active      profile: dev      # 可以使用之前的版本。預設值可以是git label, branch name or commit id。可以使用多個Label,多個Label可以使用逗號分隔      # label:      # true: 如果訪問配置中心失敗,則停止啟動服務      fail-fast: true      # 配置重試,預設是重試6次,最初是延遲1s再次重試,如果再失敗,則延遲1.1*1s、1.1*1.1*1s、… 。可以使用這個配置      retry:        initial-interval: 2000        # 最多重試次數        max-attempts: 6        # 最大稍候再試        max-interval: 4000        # 每次重試時間是之前的倍數        multiplier: 1.2

 

重要參數的解釋如下: 
配置中心的url 
即從哪裡讀取設定檔,通過“spring.cloud.config.url”配置

要讀取哪些設定檔 
由以下參數共同決定,和”2.6. 啟動和測試”結合看加深理解。 
- “spring.cloud.config.name”:設定檔名稱,對應上文的讀取URL中的{applicaion}值 
- “spring.cloud.config.profile”:設定檔的profile,對應上文的URL中的{profile}值 
- “spring.cloud.config.label”: 可以使用之前的版本。預設值可以是git label, branch name or commit id。可以使用多個Label,多個Label可以使用逗號分隔

快速失敗 
如果要求用戶端訪問配置中心失敗,則立即停止啟動服務,則設定“spring.cloud.config.label”為 true

重試 
如果訪問配置失敗,則自動重試。預設是重試6次,最初是延遲1s再次重試,如果再失敗,則延遲1.1*1s、1.1*1.1*1s、… 。通過下面參數可以修改值:

  • “spring.cloud.config.retry.initial-interval”:第一次失敗,延遲多久重試
  • “spring.cloud.config.retry.max-attempts”:最多重試次數
  • “spring.cloud.config.retry.max-interval”: 最大稍候再試
  • “spring.cloud.config.retry.multiplier”: 每次重試時間是之前的倍數

    如果要實現重試功能,需要引入新的jar

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-aop -->        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-aop</artifactId>        </dependency>        <!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry -->        <dependency>            <groupId>org.springframework.retry</groupId>            <artifactId>spring-retry</artifactId>        </dependency>

 

3.3. 啟動和測試

啟動SimpleCloudServiceApplication,在瀏覽器輸入http://127.0.0.1:10082/simple,會返回以下資訊,則表示成功

{"age":112,"name":"git2-default-dev","randomNum":53}

轉自:77870854?utm_source=tuicool&utm_medium=referral

springcloud(五):Spring Cloud 配置中心的基本用法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.