摘要:根據自己維護的倉庫信息和客戶端傳遞過來的配置定位信息去查找配置信息。通過命令將找到的配置信息下載到的文件系統中。該配置內容的優先級高于包內部的配置內容,在包中重復的內容將不會被加載。在中配置注冊中心地址。
構建配置中心
創建一個基礎Spring Boot工程,命名為config-server,并在pom.xml中引入以下依賴:
org.springframework.cloud spring-cloud-config-server
在程序主類中添加@EnableConfigServer注解
@EnableConfigServer @SpringBootApplication public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
在application.properties文件中添加配置服務的基本信息和git倉庫的相關信息
spring.application.name=config-server server.port=7001 #git路徑,精確到具體倉庫位置 spring.cloud.config.server.git.uri=https://gitee.com/dongspace/config-file/ #git uri下的相對搜索位置,可以配置多個,以","分隔 spring.cloud.config.server.git.search-paths=config-client,demo spring.cloud.config.server.git.username=*** spring.cloud.config.server.git.password=***Git配置倉庫
新建一個倉庫,命名為config-file
新建兩個文件夾,分別命名為config-client和demo
在config-client下新建配置文件application.properties、application-stg1.properties,并添加如下配置
from=master #stg1中的配置 from=master-stg1
在demo文件夾下新建dongspace.properties、dongspace-stg1.properties,并添加如下配置
from=dong-master #stg1中的配置 from=dong-master-stg1配置規則詳解
配置信息的URL與配置文件的映射關系如下:
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
/{application}/{profile}/[/{label}]
上面的URL對應{application}-{profile}.properties,其中{application}對應配置文件名,{label}對應代碼分支,默認為default
以上通過瀏覽器訪問的路徑對應為:
http://localhost:7001/application-stg1.properties
http://localhost:7001/master/application-stg1.properties
http://localhost:7001/application/default/master
客戶端配置創建一個基礎Spring Boot工程,命名為config-client,并在pom.xml中引入以下依賴:
org.springframework.cloud spring-cloud-starter-config
在bootstrap.properties中加入以下配置:
server.port=7002 spring.application.name=config-client spring.cloud.config.profile=stg1 spring.cloud.config.label=master spring.cloud.config.uri=http://localhost:7001/
創建一個測試類
@RestController public class TestConfigController { @Value("${from}") private String from; @RequestMapping("/testConfig") public Object testConfig() { return from; } }服務端的占位符配置
實現多個服務對應一個倉庫中的不同目錄
spring.cloud.config.server.git.uri=https://gitee.com/dongspace/config-file/ #{application}對應訪問服務的應用名 spring.cloud.config.server.git.search-paths={application}
實現一個服務對應目錄下的一個倉庫
spring.cloud.config.server.git.uri=https://gitee.com/dongspace/{application}-conf基礎架構
客戶端應用從config-server中獲取配置信息遵從下面的執行流程:
應用啟動時,根據bootstrap.properties中配置的{application}、{profile}、{label},向Config Server請求獲取配置信息。
Config Server根據自己維護的Git倉庫信息和客戶端傳遞過來的配置定位信息去查找配置信息。
通過git clone命令將找到的配置信息下載到Config Server的文件系統中。
Config Server創建Spring的ApplicationContext實例,并從Git本地倉庫中加載配置文件,返回給客戶端使用。
客戶端應用獲得外部配置信息后,加載到客戶端的ApplicationContext實例。該配置內容的優先級高于Jar包內部的配置內容,在jar包中重復的內容將不會被加載。
健康監測當使用占位符配置URI時,Config Server會默認加載application為app的倉庫,根據之前的配置規則,服務端的健康檢測器會不斷檢查https://gitee.com/dongspace/a... 倉庫是否可以連通,這時訪問配置中心的/health端點時返回的服務狀態為"DOWN",當服務化配置中心時,將影響它的可用性判斷,此時有兩種解決方案:1.創建名為app-config的倉庫;2.改變健康監測的配置如下
spring.cloud.config.server.health.repositories.check.name=app2 spring.cloud.config.server.health.repositories.check.label=master spring.cloud.config.server.health.repositories.check.profiles=default服務化配置中心 config-server改造
在pom.xml文件中添加eureka依賴,以加入Eureka的服務治理體系。
org.springframework.cloud spring-cloud-starter-eureka
在入口類上添加@EnableDiscoveryClient注解,表示這是一個Eureka客戶端。
@SpringBootApplication @EnableConfigServer @EnableDiscoveryClient public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }
在application.properties中配置eureka注冊中心地址。
spring.application.name=config-server server.port=7001 eureka.client.service-url.defaultZone=http://localhost:1111/eureka/ #spring.cloud.config.server.git.uri=https://gitee.com/dongspace/{application}-conf spring.cloud.config.server.git.uri=https://gitee.com/dongspace/config-file/ #git uri下的相對搜索位置,可以配置多個 spring.cloud.config.server.git.search-paths={application} spring.cloud.config.server.git.username=416974870@qq.com spring.cloud.config.server.git.password=a1991122911 # 重新設定git倉庫連接性檢測的地址,需新建命名為app2的倉庫 #spring.cloud.config.server.health.repositories.check.name=app2 #spring.cloud.config.server.health.repositories.check.label=master #spring.cloud.config.server.health.repositories.check.profiles=defaultconfig-client改造
前兩步同config-server的改造,最后修改bootstrap.properties配置文件
server.port=7002 spring.application.name=config-client eureka.client.service-url.defaultZone=http://localhost:1111/eureka/ spring.cloud.config.profile=stg1 spring.cloud.config.label=master # 開啟通過服務名來訪問配置中心 spring.cloud.config.discovery.enabled=true # 配置中心服務名為config-server spring.cloud.config.discovery.service-id=config-server #spring.cloud.config.uri=http://localhost:7001/測試
分別啟動eureka-server、config-server、config-client,訪問http://localhost:1111,可以看到兩個應用已經成功注冊:
測試config-client的/testConfig接口,結果如下:
失敗快速響應config-client在啟動時,如果訪問不到config-server會報錯,如果不做任務額外配置,客戶端的響應較慢,在報錯時已經打印出很多日志。
添加如下配置,可以讓客戶端在啟動時優先檢查配置中心的連接情況:
spring.cloud.config.fail-fast=true重試機制
config-client啟動無法連接配置中心時,我們希望客戶端能重試連接幾次,這樣可以避免因網絡抖動而導致應用無法啟動的情況。
首先確保客戶端的快速響應機制打開,再添加如下重試配置:
# 配置重試次數,默認為6 spring.cloud.config.retry.max-attempts=6 # 間隔乘數,默認1.1,如第一次間隔為1000ms,則第二次間隔為1100ms spring.cloud.config.retry.multiplier=1.1 # 初始重試間隔時間,默認1000ms spring.cloud.config.retry.initial-interval=1000 # 最大間隔時間,默認2000ms spring.cloud.config.retry.max-interval=2000動態刷新配置 其他配置 安全保護
在Config Server中引入Spring Security即可實現配置中心的密碼訪問。
首先在pom.xml文件中添加依賴:
org.springframework.boot spring-boot-starter-security
然后在application.properties中配置用戶名密碼:
security.user.name=admin security.user.password=admin
最后在配置中心客戶端配置用戶名和密碼:
security.user.name=admin security.user.password=admin加密與解密 出現的問題
一、初始提交碼云時報push to origin/master was rejected錯誤
解決方案如下:
1.切換到自己項目所在的目錄,右鍵選擇GIT BASH Here,Idea中可使用Alt+F12
2.在terminl窗口中依次輸入命令:
git pull
git pull origin master
git pull origin master --allow-unrelated-histories
3.在idea中重新push自己的項目,成功!!!
參考資料1.《Spring Cloud微服務實戰》
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73637.html
摘要:程序的入口類打開網址訪問,網頁顯示這就說明,從獲取了的屬性,而是從倉庫讀取的如圖本文源碼下載四參考資料優秀文章推薦史上最簡單的教程終章史上最簡單的教程第一篇服務的注冊與發現史上最簡單的教程第七篇高可用的分布式配置中心 轉載請標明出處: http://blog.csdn.net/forezp/a...本文出自方志朋的博客在上一篇文章講述zuul的時候,已經提到過,使用配置服務來保存各個服...
摘要:是一個相對比較新的微服務框架,年才推出的版本雖然時間最短但是相比等框架提供的全套的分布式系統解決方案。提供線程池不同的服務走不同的線程池,實現了不同服務調用的隔離,避免了服務器雪崩的問題。通過互相注冊的方式來進行消息同步和保證高可用。 Spring Cloud 是一個相對比較新的微服務框架,...
摘要:在我們的文檔中,我們使用來表明就選舉和事務的順序達成一致。提供成員關系,故障檢測和事件廣播。這是一個允許請求的請求響應機制。這包括服務發現,還包括豐富的運行狀況檢查,鎖定,鍵值,多數據中心聯合,事件系統和。 轉載請標明出處: http://blog.csdn.net/forezp/a...本文出自方志朋的博客 什么是Consul Consul是HashiCorp公司推出的開源軟件,使...
摘要:授權框架使第三方應用程序來獲取對服務的有限訪問機會。無論是通過編排資源所有者和服務之間的交互批準的資源所有者,或通過允許第三方應用程序來獲取自己的訪問權限。 SpringCloud打造微服務平臺--概覽 簡述 SpringCloud是什么 Spring Boot和SpringCloud是什么關系 Spring Boot是Spring的一套快速WEB開發的腳手架,可建立獨立的Sprin...
閱讀 2342·2021-11-23 09:51
閱讀 1144·2021-11-22 13:52
閱讀 3617·2021-11-10 11:35
閱讀 1196·2021-10-25 09:47
閱讀 3000·2021-09-07 09:58
閱讀 1067·2019-08-30 15:54
閱讀 2823·2019-08-29 14:21
閱讀 3033·2019-08-29 12:20