1、什麼是spring cloud config
spring-cloud-config 簡單來講就是spring-cloud實作的分布式配置中心.spring-cloud-config分為服務與客戶兩端。
spring-cloud-config 使用git或者svn 甚至是本地的檔案系統作為配置檔案的倉庫。
spring-cloud-config 用application,profile,label 三個次元來實作分布式配置管理和釋出.
- application : 使用spring-cloud-config服務的用戶端名稱,每個配置都是屬于某一個應用的
- profile : 每個配置都是區分環境的,如dev, test, prod等
- lable : 就是對同一份配置的不同版本管理。 如果使用的是git作為配置管理的倉庫,label可以是分支名,tag的名稱。也就是說對于一個應用的不同部署執行個體,可以從服務端擷取到不同版本的配置,這對于一些特殊場景如:灰階釋出,A/B測試等提供了很好的支援。
2、使用spring cloud config的原因
- 基于應用、環境、版本三個次元管理,主要是版本的支援。
- 配置存儲支援Git、SVN。開發人員都比較熟悉,不需要額外的學習成本。無論SVN或GIT都支援版本和權限管理。
- 和Spring無縫內建。對所有spring應用程式遷移成本非常低,在配置的擷取上完全一緻。
- 可用于任何語言開發的程式(用戶端)。
- 提供服務端和用戶端支援。
- 集中式管理分布式環境下的應用配置。
3、spring cloud config server
- 拉取配置時更新 GIT或SVN 倉庫副本,保證是最新結果.
- 支援資料結構豐富,yml, json, properties 等。
- 配合 eureke 可實作服務發現,配合 cloud bus 可實作配置推送更新。
- 配置存儲基于GIT或SVN倉庫,可進行版本管理。
- 簡單可靠,可以實時檢視配置檔案的最新資料。
-
HTTP服務具有以下格式的資源:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
4、spring cloud config client
- 應用啟動後,擷取配置檔案的順序:config server>本地。
- 配置更新
- GIT或SVN送出更改配置檔案。
- 手動refresh或 cloud bus 可實作配置推送更新或重新開機config client,config client感覺到配置更改。
- Config Client從Config Server擷取到最新的配置,把最新的配置更新到環境中,并且更新已經注入的值。
- 調用遠端配置的類需要标記@RefreshScope,保證同步更新配置。