第8章 分布式配置中心 Spring Cloud Config

Spring Cloud Config 是 Spring Cloud 團(tuán)隊創(chuàng)建的 個全新項目,用來為分布式系統(tǒng)中的基礎(chǔ)設(shè)施和微服務(wù)應(yīng)用提供集中化的外部配置支持, 它分為服務(wù)端與客戶端兩個部分。 其中服務(wù)端也稱為分布式配置中心, 它是 一 個獨立的微服務(wù)應(yīng)用, 用來連接配置倉庫并為客戶端提供獲取配置信息、 加密/解密信息等訪問接口;而客戶端則是微服務(wù)架構(gòu)中的各個微服務(wù)應(yīng)用或基礎(chǔ)設(shè)施, 它們通過指定的配置中心來管理應(yīng)用資源與業(yè)務(wù)相關(guān)的配置內(nèi)容,并在啟動的時候從配置中心獲取和加載配置信息。 Spring Cloud Config 實現(xiàn)了對服務(wù)端和客戶端中環(huán)境變量和屬性配置的抽象映射, 所以它除了適用于 Spring 構(gòu)建的應(yīng)用程序之外,也可以在任何其他語言運行的應(yīng)用程序中使用。 由于 Spring Cloud Config 實現(xiàn)的配置中心默認(rèn)采用 Git 來存儲配置信息, 所以使用 Spring Cloud Config 構(gòu)建的配置服務(wù)器, 天然就支持對微服務(wù)應(yīng)用配置信息的版本管理, 并且可以通過 Git 客戶端工具來方便地管理和訪問配置內(nèi)容。 當(dāng)然它也提供了對其他存儲方式的支持, 比如 SYN 倉庫、 本地化文件系統(tǒng)

1 構(gòu)建配置中心

1.1 創(chuàng)建springboot工程,命名為config-server,并引入config server依賴


Screenshot from 2018-02-27 20-39-48.png

1.2 在程序主類,添加 @EnableConfigServer 注解, 開啟Spring的服務(wù)端功能


Screenshot from 2018-02-27 20-52-13.png

1.3 配置application.yml文件


Screenshot from 2018-02-28 00-25-10.png

其中 Git 的配置信息分別表示如下內(nèi)容:
spring.cloud.config.server.git.uri:配置 Git 倉庫位置
spring.cloud.config.server.git.searchPaths:配置倉庫路徑下的相對搜索位置, 可以配置多個
spring.cloud.config.server.git.username:訪問 Git 倉庫的用戶名
spring.cloud.config.server.git.password:訪問 Git 倉庫的用戶密碼

1.4 配置規(guī)則詳解
為了驗證上面完成的分布式配置中心config-server, 根據(jù) Git 配置信息中指定的倉庫位置, 在https://github.com/Silent-Y/spring-cloud-learning.git/spring-cloud-in-action下創(chuàng)建了一個config-server目錄作為配置倉庫, 并根據(jù)不同環(huán)境新建下面4個配置文件:
applicationconfig.yml
applicationconfig-dev.yml
applicationconfig-test.yml
applicationconfig-prod.yml
在這4個配置文件中均設(shè)置了 個from屬性, 并為每個配置文件分別設(shè)置了不同的值,如下所示:
from: git-default-1.0
from: git-dev-1.0
from: git-test-1.0
frorn: git-prod-1.0
為了測試版本控制,在該Git倉庫的 master 分支中,我們?yōu)?from 屬性加入 1.0 的后綴, 同時創(chuàng)建 一 個 config-label-test 分支, 并將各配置文件中的值用 2.0 作為后綴,完成了這些準(zhǔn)備工作之后, 我們就可以通過瀏覽器、 POSTMAN或CURL等工具直接來訪問我們的配置內(nèi)容了。 訪問配置信息的URL與配置文件的映射關(guān)系如下所示:
/{application}/{profile} [/{label}]
/{application}-{profile}. yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
上面的url會映射 {application}-{profile} .properties 對應(yīng)的配置文件, 其
中 {label} 對應(yīng)Git上不同的分支,默認(rèn)為 master 。我們可以嘗試構(gòu)造不同的 url 來訪問不同的配置內(nèi)容, 比如, 要訪問master分支,Silent-Y 應(yīng)用的prod環(huán)境, 就可以訪問這個 url:http://localhost:7001/applicationconfig/prod/master, 并獲得如下返回信息(api返回和控制臺輸出結(jié)果均與預(yù)期存在區(qū)別,有待研究):

Screenshot from 2018-02-28 00-23-44.png

控制臺輸出結(jié)果:
2018-02-28 00:28:24.036 INFO 11948 --- [io-7001-exec-10] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@6aea7e43: startup date [Wed Feb 28 00:28:24 CST 2018]; root of context hierarchy
2018-02-28 00:28:24.058 INFO 11948 --- [io-7001-exec-10] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@6aea7e43: startup date [Wed Feb 28 00:28:24 CST 2018]; root of context hierarchy

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容