javascript
Spring Cloud学习笔记-010
分布式配置中心:Spring Cloud Config
Spring Cloud Config是Spring Cloud團隊創建的一個全新的項目,用來為分布式系統中的基礎設施和微服務應用提供集中化的外部配置支持,它分為服務端和客戶端兩個部分。其中服務端也稱為分布式配置中心,它是一個獨立的微服務應用,用來連接配置倉庫并為客戶端提供獲取配置信息、加密/解密信息等訪問接口;而客戶端則是微服務架構中的各個微服務應用或基礎設施,他們通過指定的配置中心來管理應用資源與業務相關的配置內容,并在啟動的時候從配置中心獲取和加載配置信息。Spring Cloud Config實現了對服務端和客戶端中環境變量和屬性配置的抽象映射,所以它除了適用于Spring構建的應用程序之外,也可以在任何其他語言運行的應用程序中使用。由于Spring Cloud Config實現的配置中心默認采用Git來儲存配置信息,所以使用Spring Cloud Config構建的配置服務器,天然就支持對微服務應用配置信息的版本管理,并且可以通過Git客戶端工具來方便地管理和訪問配置內容。當然它也提供了對其他存儲方式的支持,比如SVN倉庫、本地化文件系統等。
服務端搭建
1.?創建maven工程,骨架選擇quickstart,名稱為:demo-config-server
2.??加入相關依賴:
3.?創建啟動類:
4.?在src\main\resources目錄下創建application.yml文件:
- spring.cloud.config.server.git.uri:配置Git倉庫位置。
- spring.cloud.config.server.git.search-paths:配置倉庫路徑下的相對搜索位置,可以配置多個。
- spring.cloud.config.server.git.username:訪問Git倉庫的用戶名。
- spring.cloud.config.server.git.password:訪問Git倉庫的用戶密碼。
注:由于git項目是公開的,所以不用提供用戶名和密碼也可以。
5.?登錄Git,在demo-springcloud/目錄下創建config-repo文件夾,并新建4個配置文件:
6.?配置文件的內容分別如下,為了測試版本控制,在該Git倉庫的master分支中,為form屬性加入1.0的后綴,同時創建一個config-label-test分支,并將個配置文件中的值用2.0作為后綴:
7.?啟動項目,可以通過如下幾種方式訪問配置內容,其中application為配置文件的前綴,這里就是application;profile為配置文件的后綴,這里是dev、pro和test;label代表Git分支名稱:
- /{application}/{profile}[label]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
例如訪問http://localhost:8001/application/dev/config-label-test得到如下內容:
8.?同時,觀察demo-config-server項目的控制臺,發現輸出了如下內容:
9.?配置服務器在從Git中獲取配置信息后,會存儲一份在demo-config-server的文件系統中,實質上demo-config-server是通過git clone命令將配置內容復制了一份在本地存儲,然后讀取這些內容并返回給微服務應用進行加載。通過Git在本地倉庫暫存,可以有效的防止當Git倉庫出現故障而引起無法加載配置信息的情況。可以斷開網絡,再次在瀏覽器發起上述請求,可以看到控制臺的報錯信息:Could not fetch remote for config-label-test remote,但是它依然會為該請求返回配置內容,這些內容源于之前訪問時存于demo-config-server本地文件系統中的配置內容:
10.?根據控制臺打印的路徑,去到指定目錄,發現下載下來的配置文件:
?客戶端搭建
1.?創建maven工程,骨架選擇quickstart,名稱為:demo-config-client
2.?加入相關依賴:
3.?創建啟動類:
4.?在src/main/resources目錄下創建bootstrap.properties文件(注:這些屬性必須配置在bootstrap.properties中,這樣demo-config-server中的配置信息才能被正確加載。Spring Boot對配置文件的加載順序為,對于本應用jar包之外的配置文件加載會優先于應用jar包內的配置內容,而通過bootstrap.properties對demo-config-client的配置,使得該應用會從demo-config-server中獲取一些外部配置信息,這些信息的優先級比本地的內容要高,從而實現了外部化配置):
- spring.application.name:對應配置文件規則中的{application}部分。
- spring.cloud.config.profile:對應配置文件規則中的{profile}部分。
- spring.cloud.config.label:對應配置文件規則中的{label}部分。
- spring.cloud.config.uri:配置中心demo-config-server的地址。
5.?創建一個RESTful接口來返回配置中心的from屬性,啟動項目并測試效果:
轉載于:https://www.cnblogs.com/Oven5217/p/8856041.html
總結
以上是生活随笔為你收集整理的Spring Cloud学习笔记-010的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 持续集成之jenkins基础
- 下一篇: Spring框架深入(四)--Sprin