摘要:是匹配規則,意思是配置以開頭并且以開頭的。健康監控集成了。可以通過配置去檢查指定的配置文件訪問結果如下可以通過設置來禁用健康檢查。顯示的是類似于用戶自己定義的屬性的那種黃色背景。意思就是這個不是系統的屬性,但是確認是生效的。
《Spring Cloud與Docker 微服務架構實戰》學習筆記
Config Client在上篇文章中,我們已經編寫好了 Config Server 那個客戶端是如何訪問 Config Server 并且獲取到對應的配置呢?
下面我們就來了解一下
org.springframework.cloud spring-cloud-starter-config
在application.properties中配置一下端口:
server.port=8081
創建配置文件bootstrap.yml,然后在其中添加一下內容
spring: application: # 對應Config Server 中的{application} name: microservice-foo cloud: config: # Config Server地址 uri: http://localhost:8080/ # profile 對應 Config Server 中的{profile} profile: dev # label 對應 Config Server 中的{label} Git分支 label: master
這里只能使用指定的配置配置文件名稱,使用其他的文件名稱無效
按照書中的說法,Spring Cloud 中有"引導上下文"的概念,這是主應用程序的父上下文。引導上下文負責從配置服務器加載配置屬性,以及解密外部配置文件中的屬性。
和主應用程序加載application.*(yml或properties)中的屬性不同,引導上下文加載bootstrap.*中的屬性。配置在bootstrap.*中的屬性有更高的優先級,因此默認情況下他們不能被本地
配置覆蓋
按照我的理解,簡單點來說bootstrap.* 就像是 application.* 的父類,但是有一點不同的是,bootstrap中的屬性不會被application.*中的屬性所覆蓋
只需要這樣簡單的配置,就已經可以從Config Service 中拉取屬性了
驗證驗證一下
@RestController public class ConfigClientController { @Value("${profile}") private String profile; @GetMapping("/profile") public String hello() { return this.profile; } }
啟動 Config Service 啟動 Config Client,訪問
http://localhost:8081/profile ,顯示:
Config Service 的占位符支持{application}、{profile} 和 {label}
例如修改原來的Config Service的配置:
spring.application.name=microservice-config-server # 這個uri使用可以clone的路徑 spring.cloud.config.server.git.uri=https://github.com/wkkdhr/{application}.git # github的賬號密碼 spring.cloud.config.server.git.username=*** spring.cloud.config.server.git.password=***
在Git上新增配置文件Dome1-dev.properties內容如下:
profile=dome1-dev-1.0
然后訪問 http://localhost:8080/Dome1-dev.properties 即可得到如下結果:
profile: dome1-dev-1.0
書中說這樣可以支持一個應用一個Git倉庫。看到這里應該明白了,書中所說的占位符{application}、{profile} 和 {label} 指的是訪問url中的對應的內容。例如訪問路徑是 http://localhost:8080/Dome1-dev.properties 時,其中 Dome1 就是{application},dev 就是 {profile} ,{label} 被省略,默認 master。按照配置文件中的配置https://github.com/wkkdhr/{application}.git 系統就會去 https://github.com/wkkdhr/Dom... 這個Git倉庫中,找到 Dome1-dev.properties 這個配置文件。
匹配模式配置模式就是通過匹配要訪問的配置文件名稱,來訪問不同的git倉庫。如果沒有符合的,就會訪問spring.cloud.config.server.git.uri所定義的倉庫
配置模式是{application}/{profile}。多個匹配規則用逗號,分隔
例如:
spring.cloud.config.server.git.uri=https://github.com/wkkdhr/Dome1.git spring.cloud.config.server.git.repos.test.pattern=test*/dev* spring.cloud.config.server.git.repos.test.uri=https://github.com/wkkdhr/configTest.git
就以上面配置為例子,其中repos.test.pattern中的test可以是名稱可以自己起。test*/dev*是匹配規則,意思是配置{application}以test開頭并且{profile}以dev開頭的。如果符合匹配規則就回去訪問https://github.com/wkkdhr/configTest.git這個倉庫。
http://localhost:8080/test-dev.properties 這里路徑,{application}是test,{profile}是dev,符合上面所定義的規則,所以就會去訪問spring.cloud.config.server.git.repos.test.uri所定義的倉庫。
如果是 http://localhost:8080/test-d1.properties 這個。它就是不符合規則的,就會去訪問https://github.com/wkkdhr/Dome1.git 這個倉庫。
spring.cloud.config.server.git.repos.simple=https://github.com/wkkdhr/simple.git
如果像上面那樣配置,就只會匹配以test開頭的配置文件。
同時這個目標地址還可以配置成本地的路徑:
spring.cloud.config.server.git.repos.local.pattern=test* spring.cloud.config.server.git.repos.local.uri=file:/D:projectdemogithubconfigTest搜索目錄
這個就比較見到了,就是可以去搜索目標Git倉庫的子目錄。如果是子目錄的子目錄,需要填寫路徑
spring.cloud.config.server.git.uri=https://github.com/wkkdhr/Dome1.git spring.cloud.config.server.git.search-paths=test1,test1*,file/test1,file/test*啟動時加載配置文件
spring.cloud.config.server.git.clone-on-start=true
通過配置clone-on-start來讓Config Service啟動時就clone指定的Git倉庫
或者是給指定Git倉庫多帶帶配置:
spring.cloud.config.server.git.repos.test.uri=https://github.com/wkkdhr/configTest.git spring.cloud.config.server.git.repos.test.clone-on-start=true
以下配置可以打印相關日志,但是也會同時打印許多不相關的配置信息,自行斟酌。
logging.level.org.springframework.cloud=debug logging.level.org.springframework.boot=debugConfig Service 健康監控
Config Service 集成了 Actuator。可以通過訪問 health的端口來查詢當前的健康狀態。
# 配置來讓health顯示詳細信息 management.endpoint.health.show-details=always
書中說,默認情況下,健康指示器向EnvironmentRepository請求的{application}是app,{profile}和{lable}是對應的EnvironmentRepository 實現的默認值。對于Git,{profile} 是 default,{ablel}是master.
但是我在配置倉庫并沒有相應的配置文件,結果仍舊顯示UP。沒有深究。
可以通過配置去檢查指定的配置文件:
spring.cloud.config.server.health.repositories.test.name=test spring.cloud.config.server.health.repositories.test.label=master spring.cloud.config.server.health.repositories.test.profiles=dev
訪問 http://localhost:8080/actuator/health 結果如下:
{ "status": "UP", "details": { "diskSpace": { "status": "UP", "details": { "total": 214752784384, "free": 135328772096, "threshold": 10485760 } }, "refreshScope": { "status": "UP" }, "configServer": { "status": "UP", "details": { "repositories": [ { "name": "test", "profiles": [ "dev" ], "label": "master" } ] } } } }
可以通過設置 spring.cloud.config.server.health.enabled=false來禁用健康檢查。
spring.cloud.config.server.health.enabled=false
發現一個事情,就是在spring配置文件中,有很多配置都是沒有提示的,就像上面這個屬性。顯示的是類似于用戶自己定義的屬性的那種黃色背景。意思就是這個不是系統的屬性,但是確認是生效的。我一開始還以為是過時的配置之類,大概是 spring 全家桶配置太多了,idea 也沒有辦法給出全部的提示吧。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76042.html
摘要:在配置中心這一篇博文里學習了如何獲取配置文件。先在倉庫中創建如下配置文件具體參考下面地址創建項目,對應的如下其中與可以二選一,但是根據選擇的依賴不同對應的配置文件有些許不一樣。 在《配置中心》這一篇博文里學習了如何git獲取配置文件。大概的流程可以用下圖來概括。 showImg(https://segmentfault.com/img/bVbtW4Y?w=421&h=363); 《配置...
摘要:服務消費者可以使用多種模型來發現服務。客戶端將定期與服務發現層進行通信,并刷新服務實例的緩存。為了達成目的,我們將要學習使用個不同的客戶端庫,服務消費者可以使用它們來和進行交互。 本篇代碼存放于:github 一、服務發現架構 ??服務發現架構通常具有下面 4 個概念: 服務注冊:服務如何使用服務發現代理進行注冊? 服務地址的客戶端查找:服務客戶端查找服務信息的方法是什么? 信息共享...
摘要:負載均衡組件是一個負載均衡組件,它通常和配合使用。和配合,很容易做到負載均衡,將請求根據負載均衡策略分配到不同的服務實例中。和配合,在消費服務時能夠做到負載均衡。在默認的情況下,和相結合,能夠做到負載均衡智能路由。 2.2.1 簡介 Spring Cloud 是基于 Spring Boot 的。 Spring Boot 是由 Pivotal 團隊提供的全新 Web 框架, 它主要的特點...
摘要:開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章系列處理登錄請求前后端分離一使用完美處理權限問題前后端分離二使用完美處理權限問題前后端分離三中密碼加鹽與中異常統一處理 開公眾號差不多兩年了,有不少原創教程,當原創越來越多時,大家搜索起來就很不方便,因此做了一個索引幫助大家快速找到需要的文章! Spring Boo...
閱讀 2123·2023-04-25 14:56
閱讀 2440·2021-11-16 11:44
閱讀 2696·2021-09-22 15:00
閱讀 1902·2019-08-29 16:55
閱讀 2177·2019-08-29 14:04
閱讀 2305·2019-08-29 11:23
閱讀 3678·2019-08-26 10:46
閱讀 1907·2019-08-22 18:43