javascript
Spring Cloud Config服务端配置细节(一)
上篇文章我們看了Spring Cloud中分布式配置中心的一個(gè)基本使用,這里邊還涉及到許多細(xì)節(jié),本文我們就來看看服務(wù)端配置中的一些細(xì)節(jié)。
本文是Spring Cloud系列的第二十三篇文章,了解前二十二篇文章內(nèi)容有助于更好的理解本文:
1.使用Spring Cloud搭建服務(wù)注冊(cè)中心
2.使用Spring Cloud搭建高可用服務(wù)注冊(cè)中心
3.Spring Cloud中服務(wù)的發(fā)現(xiàn)與消費(fèi)
4.Eureka中的核心概念
5.什么是客戶端負(fù)載均衡
6.Spring RestTemplate中幾種常見的請(qǐng)求方式
7.RestTemplate的逆襲之路,從發(fā)送請(qǐng)求到負(fù)載均衡
8.Spring Cloud中負(fù)載均衡器概覽
9.Spring Cloud中的負(fù)載均衡策略
10.Spring Cloud中的斷路器Hystrix
11.Spring Cloud自定義Hystrix請(qǐng)求命令
12.Spring Cloud中Hystrix的服務(wù)降級(jí)與異常處理
13.Spring Cloud中Hystrix的請(qǐng)求緩存
14.Spring Cloud中Hystrix的請(qǐng)求合并
15.Spring Cloud中Hystrix儀表盤與Turbine集群監(jiān)控
16.Spring Cloud中聲明式服務(wù)調(diào)用Feign
17.Spring Cloud中Feign的繼承特性
18.Spring Cloud中Feign配置詳解
19.Spring Cloud中的API網(wǎng)關(guān)服務(wù)Zuul
20.Spring Cloud Zuul中路由配置細(xì)節(jié)
21.Spring Cloud Zuul中異常處理細(xì)節(jié)
22.分布式配置中心Spring Cloud Config初窺
我們先通過下面一張圖來看看Config Server的一個(gè)大致工作過程:
結(jié)合這張圖,我來說如下五點(diǎn):
1.首先我們需要一個(gè)遠(yuǎn)程的Git倉庫,自己學(xué)習(xí)可以直接用GitHub,在在實(shí)際生產(chǎn)環(huán)境中,需要自己搭建一個(gè)Git服務(wù)器,遠(yuǎn)程Git倉庫的作用主要是用來保存我們的配置文件
2.除了遠(yuǎn)程Git倉庫之外,我們還需要一個(gè)本地Git倉庫,每當(dāng)Config Server訪問遠(yuǎn)程Git倉庫時(shí),都會(huì)保存一份到本地,這樣當(dāng)遠(yuǎn)程倉庫無法連接時(shí),就直接使用本地存儲(chǔ)的配置信息
3.至于微服務(wù)A、微服務(wù)B則是我們具體的應(yīng)用,這些應(yīng)用在啟動(dòng)的時(shí)候會(huì)從Config Server中來加載相應(yīng)的配置信息
4.當(dāng)微服務(wù)A/B嘗試去從Config Server中加載配置信息的時(shí)候,Config Server會(huì)先通過git clone命令克隆一份配置文件保存到本地
5.由于配置文件是存儲(chǔ)在Git倉庫中,所以配置文件天然的具備版本管理功能,Git中的Hook功能可以實(shí)時(shí)監(jiān)控配置文件的修改
Git URI中的占位符
靈活的使用URI占位符,可以有效的減少我們的工作量。考慮這樣一個(gè)問題,我有ServerA、ServerB兩個(gè)服務(wù),兩個(gè)服務(wù)對(duì)應(yīng)的配置文件的存儲(chǔ)地址分別位于https://github.com/lenve/scCo...和https://github.com/lenve/scCo...,但是我的Config Server只有一個(gè),那么當(dāng)我的ServerA和ServerB連接上Config Server時(shí),Config Server怎么知道去哪個(gè)地址下拿配置文件?這個(gè)時(shí)候就涉及到占位符的使用。
在上篇文章中我們已經(jīng)了解了Spring Cloud Config中的三種占位符,分別是{application}、{profile}和{label},這些占位符除了用來標(biāo)識(shí)配置文件的規(guī)則,還可以用在Config Server中對(duì)Git倉庫的URI配置,用在URI配置中時(shí),這三個(gè)占位符的含義分別如下所示:
1.{application}映射到客戶端的 spring.application.name
2.{profile}映射到客戶端上的 spring.profiles.active
3.{label}這是一個(gè)服務(wù)器端功能,標(biāo)記"版本"的配置文件集
此時(shí),假設(shè)我不同環(huán)境下的配置文件分別放在下面這些目錄下:
https://github.com/lenve/scCo...
https://github.com/lenve/scCo...
https://github.com/lenve/scCo...
那么我的客戶端文件這樣配置:
spring.application.name=app # dev根據(jù)具體情況來修改 spring.cloud.config.profile=dev spring.cloud.config.label=master spring.cloud.config.uri=http://localhost:2007/ server.port=2008然后Config Server按下面這種方式配置即可:
spring.cloud.config.server.git.uri=https://github.com/lenve/scConfig.git spring.cloud.config.server.git.search-paths={application}/{profile}當(dāng)然這種存儲(chǔ)規(guī)劃不一定最佳,這里只是給小伙伴們演示占位符的用法。
默認(rèn)情況下,Config Server 克隆下來的文件保存在C:Users<當(dāng)前用戶>AppDataLocalTemp目錄下,我們可以通過如下配置來修改:
spring.cloud.config.server.git.basedir=E:\\111\\健康監(jiān)測(cè)
默認(rèn)情況下Spring Cloud Config會(huì)為配置中心服務(wù)端創(chuàng)建一個(gè)健康監(jiān)測(cè)器,該檢測(cè)器默認(rèn)情況下是訪問的倉庫文件是{application}為app的配置文件,如果倉庫中不存在這個(gè)文件,健康顯示器就會(huì)顯示倉庫無法連接,此時(shí)我們有兩種解決方案:1.倉庫中添加相應(yīng)的配置文件;2.重新指定檢測(cè)的配置,重新指定方式如下:
spring.cloud.config.server.health.repositories.check.name=app spring.cloud.config.server.health.repositories.check.label=master spring.cloud.config.server.health.repositories.check.profiles=dev此時(shí),系統(tǒng)回去訪問http://localhost:2007/app/dev/master地址,如果能夠訪問到,則顯示倉庫已連接,如下:
安全保護(hù)
開發(fā)環(huán)境中我們的配置中心肯定是不能隨隨便便被人訪問的,我們可以加上適當(dāng)?shù)谋Wo(hù)機(jī)制,由于微服務(wù)是構(gòu)建在Spring Boot之上,所以整合Spring Security是最方便的方式。
首先添加依賴:
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId> </dependency>然后在application.properties中配置用戶名密碼:
security.user.name=sang security.user.password=123最后在配置中心的客戶端上配置用戶名和密碼即可,如下:
spring.cloud.config.username=sang spring.cloud.config.password=123OK,如此之后,其他人就不能隨意的獲取到我們的配置信息了。OK,本文就先說到這里,有問題歡迎留言討論。
參考資料:
1.《Spring Cloud微服務(wù)實(shí)戰(zhàn)》
更多JavaEE資料請(qǐng)關(guān)注公眾號(hào):
總結(jié)
以上是生活随笔為你收集整理的Spring Cloud Config服务端配置细节(一)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到老虎狮子是什么征兆
- 下一篇: 梦到流星雨预示着什么