一、什麼是spring cloud config
spring-cloud-config 簡單來說就是spring-cloud實現的分佈式配置中心.spring-cloud-config分爲服務與客戶兩端。git
spring-cloud-config 使用git或者svn 甚至是本地的文件系統做爲配置文件的倉庫。 spring
spring-cloud-config 用application,profile,label 三個維度來實現分佈式配置管理和發佈.json
- application : 使用spring-cloud-config服務的客戶端名稱,每一個配置都是屬於某一個應用的
- profile : 每一個配置都是區分環境的,如dev, test, prod等
- lable : 就是對同一份配置的不一樣版本管理。 若是使用的是git做爲配置管理的倉庫,label能夠是分支名,tag的名稱。也就是說對於一個應用的不一樣部署實例,能夠從服務端獲取到不一樣版本的配置,這對於一些特殊場景如:灰度發佈,A/B測試等提供了很好的支持。
二、使用spring cloud config的緣由
- 基於應用、環境、版本三個維度管理,主要是版本的支持。
- 配置存儲支持Git、SVN。開發人員都比較熟悉,不須要額外的學習成本。不管SVN或GIT都支持版本和權限管理。
- 和Spring無縫集成。對全部spring應用程序遷移成本很是低,在配置的獲取上徹底一致。
- 可用於任何語言開發的程序(客戶端)。
- 提供服務端和客戶端支持。
- 集中式管理分佈式環境下的應用配置。
三、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
四、spring cloud config client
- 應用啓動後,獲取配置文件的順序:config server>本地。
- 配置更新
- GIT或SVN提交更改配置文件。
- 手動refresh或 cloud bus 可實現配置推送更新或重啓config client,config client感知到配置更改。
- Config Client從Config Server獲取到最新的配置,把最新的配置更新到環境中,而且更新已經注入的值。
- 調用遠程配置的類須要標記@RefreshScope,保證同步更新配置。