本文介紹了Spring Cloud的配置中心,介紹配置中心的如何配置服務端及配置參數,也介紹客戶端如何和配置中心交互和配置參數說明。
配置中心服務器部份內容包括:服務建立,git,svn,native後端的配置,各類url訪問
配置中心客戶端部份內容包括:訪問配置、failfast,重試java
咱們在開發大的系統時,因爲服務較多,相同的配置(如數據庫信息、緩存、開關量等)會出如今不一樣的服務上,若是一個配置發生變化,則可能須要修改不少的服務配置。爲了解決這個問題,spring cloud提供配置中心。
首先全部的公共配置存儲在相同的地址(存儲的地方能夠是git,svn和本地文件),而後配置中心從這些地方讀取配置以restful發佈出來,其它服務能夠調用接口獲取配置信息。linux
引入關鍵jargit
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
經過@EnableConfigServer能夠激活配置中心服務。配置中心能夠單獨作服務,也能夠嵌入到其它服務中。推薦用單獨作服務方式使用配置中心。github
@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中spring
Spring Cloud配置中心的後端系統能夠是:數據庫
本節咱們介紹git配置
配置參數主要配置中application-gitsimple2.ymljson
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地址 bootstrap
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類
svn的配置方法和git差很少,主要使用」spring.cloud.config.server.svn.*」。這裏略
除了使用從git/svn下載配置文件,你能夠從classpath目錄或本地文件系統中加載配置文件。經過spring.cloud.config.server.native.searchLocations配置地址.這裏又分爲兩類:
以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: 指定配置文件的路徑
經過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中各個字段對應的值爲:
咱們訪問如下地址均可以訪問到配置文件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
配置中心服務端配置成功後,而後其它服務從配置中心獲取配置文件,這樣的服務被稱爲客戶端。
引入jar:
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency>
只要是@SpringBootApplication註解啓動的spring boot便可
@SpringBootApplication
public class SimpleCloudServiceApplication { public static void main(String[] args) { args = new String[1]; args[0] = "--spring.profiles.active=simple2"; SpringApplication.run(SimpleCloudServiceApplication.class, args); } }
請將配置中心的相關配置配置在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.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>
啓動SimpleCloudServiceApplication,在瀏覽器輸入http://127.0.0.1:10082/simple,會返回如下信息,則表示成功
{"age":112,"name":"git2-default-dev","randomNum":53}
轉自:https://blog.csdn.net/hry2015/article/details/77870854?utm_source=tuicool&utm_medium=referral