Spring Cloud Config服務端配置細節(一)

上篇文章我們看了Spring Cloud中分布式配置中心的一個基本使用,這里邊還涉及到許多細節,本文我們就來看看服務端配置中的一些細節。


本文是Spring Cloud系列的第二十三篇文章,了解前二十二篇文章內容有助于更好的理解本文:

1.使用Spring Cloud搭建服務注冊中心
2.使用Spring Cloud搭建高可用服務注冊中心
3.Spring Cloud中服務的發現與消費
4.Eureka中的核心概念
5.什么是客戶端負載均衡
6.Spring RestTemplate中幾種常見的請求方式
7.RestTemplate的逆襲之路,從發送請求到負載均衡
8.Spring Cloud中負載均衡器概覽
9.Spring Cloud中的負載均衡策略
10.Spring Cloud中的斷路器Hystrix
11.Spring Cloud自定義Hystrix請求命令
12.Spring Cloud中Hystrix的服務降級與異常處理
13.Spring Cloud中Hystrix的請求緩存
14.Spring Cloud中Hystrix的請求合并
15.Spring Cloud中Hystrix儀表盤與Turbine集群監控
16.Spring Cloud中聲明式服務調用Feign
17.Spring Cloud中Feign的繼承特性
18.Spring Cloud中Feign配置詳解
19.Spring Cloud中的API網關服務Zuul
20.Spring Cloud Zuul中路由配置細節
21.Spring Cloud Zuul中異常處理細節
22.分布式配置中心Spring Cloud Config初窺


我們先通過下面一張圖來看看Config Server的一個大致工作過程:

圖片描述

結合這張圖,我來說如下五點:

1.首先我們需要一個遠程的Git倉庫,自己學習可以直接用GitHub,在在實際生產環境中,需要自己搭建一個Git服務器,遠程Git倉庫的作用主要是用來保存我們的配置文件
2.除了遠程Git倉庫之外,我們還需要一個本地Git倉庫,每當Config Server訪問遠程Git倉庫時,都會保存一份到本地,這樣當遠程倉庫無法連接時,就直接使用本地存儲的配置信息
3.至于微服務A、微服務B則是我們具體的應用,這些應用在啟動的時候會從Config Server中來加載相應的配置信息
4.當微服務A/B嘗試去從Config Server中加載配置信息的時候,Config Server會先通過git clone命令克隆一份配置文件保存到本地
5.由于配置文件是存儲在Git倉庫中,所以配置文件天然的具備版本管理功能,Git中的Hook功能可以實時監控配置文件的修改

Git URI中的占位符

靈活的使用URI占位符,可以有效的減少我們的工作量。考慮這樣一個問題,我有ServerA、ServerB兩個服務,兩個服務對應的配置文件的存儲地址分別位于https://github.com/lenve/scCo...和https://github.com/lenve/scCo...,但是我的Config Server只有一個,那么當我的ServerA和ServerB連接上Config Server時,Config Server怎么知道去哪個地址下拿配置文件?這個時候就涉及到占位符的使用。
在上篇文章中我們已經了解了Spring Cloud Config中的三種占位符,分別是{application}、{profile}和{label},這些占位符除了用來標識配置文件的規則,還可以用在Config Server中對Git倉庫的URI配置,用在URI配置中時,這三個占位符的含義分別如下所示:

1.{application}映射到客戶端的 spring.application.name
2.{profile}映射到客戶端上的 spring.profiles.active
3.{label}這是一個服務器端功能,標記"版本"的配置文件集

此時,假設我不同環境下的配置文件分別放在下面這些目錄下:

https://github.com/lenve/scCo...
https://github.com/lenve/scCo...
https://github.com/lenve/scCo...

那么我的客戶端文件這樣配置:

spring.application.name=app
# dev根據具體情況來修改
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}

當然這種存儲規劃不一定最佳,這里只是給小伙伴們演示占位符的用法。

默認情況下,Config Server 克隆下來的文件保存在C:Users<當前用戶>AppDataLocalTemp目錄下,我們可以通過如下配置來修改:

spring.cloud.config.server.git.basedir=E:\\111\\

健康監測

默認情況下Spring Cloud Config會為配置中心服務端創建一個健康監測器,該檢測器默認情況下是訪問的倉庫文件是{application}為app的配置文件,如果倉庫中不存在這個文件,健康顯示器就會顯示倉庫無法連接,此時我們有兩種解決方案:1.倉庫中添加相應的配置文件;2.重新指定檢測的配置,重新指定方式如下:

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

此時,系統回去訪問http://localhost:2007/app/dev/master地址,如果能夠訪問到,則顯示倉庫已連接,如下:

圖片描述

安全保護

開發環境中我們的配置中心肯定是不能隨隨便便被人訪問的,我們可以加上適當的保護機制,由于微服務是構建在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=123

OK,如此之后,其他人就不能隨意的獲取到我們的配置信息了。OK,本文就先說到這里,有問題歡迎留言討論。

參考資料:

1.《Spring Cloud微服務實戰》

更多JavaEE資料請關注公眾號:

圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/393635.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/393635.shtml
英文地址,請注明出處:http://en.pswp.cn/news/393635.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

POJ 1797 Heavy Transportation

傳送門&#xff1a;http://poj.org/problem?id1797 不想吐槽了&#xff0c;弄了好久才AC 實現代碼&#xff1a; #include <cstdio> #include <cstring> #include <algorithm> #include <vector> #include <cstdio> #include <iostream> u…

java8中方法區的內存大小如何設置_從Java8升級到Java11

奇技 指南為什么選擇Java11?容器環境支持&#xff0c;GC等領域的增強&#xff0c;僅通過切換到 Java 11 就有 16&#xff05; 的改進。進行了瘦身&#xff0c;更輕量級&#xff0c;安裝包體積小。JDK11 是一個長期支持版。1Java11相對于Java8的一些新特性1.變量類型推斷Var關…

TCP建立連接

TCP的連接建立過程被稱為三次握手:第一次握手&#xff1a;客戶A的TCP向服務器B發出連接請求報文段,其首部中的同步位SYN 1 ,并選擇序號seq x,表明傳送| 數據時的第一 個數據字節的序號是X。第二次握手:B的TCP收到連接請求報文段后,如果同意,則發回確認。ACK1,其確認號ackx1。同…

webgl 著色器_如何使用AI,AR和WebGL著色器來幫助視障人士

webgl 著色器by Dan Ruta通過Dan Ruta 如何使用AI&#xff0c;AR和WebGL著色器來幫助視障人士 (How you can use AI, AR, and WebGL shaders to assist the visually impaired) Today, about 4% of the world’s population is visually impaired. Tasks like simple navigati…

計算機語言乍么設置,電腦如何設置語言

設置語言欄其實語言欄是用來進行輸入法的切換的。當你需要在Windows中進行文字輸入的時候,就需要用語言欄了,因為Windows的默認輸入語言是英文,在這種情況下,你用鍵盤在文本里輸入的文字會是英文字母,所以作為中國人的我們要想在Windows里輸入中文的話,就需要語言欄的幫助了。試…

hive 初認識

結構Hive 是建立在hadoop上的數據倉庫架構,它提供了一系列的工具,可以進行數據提取轉換加載(這個過程叫做ETL),這是一種可以存儲,查詢和分析存儲在hadoop中的大規模數據的機制.Hive定義了簡單的類SQL查詢語句 成為hql,他允許數據SQL的用戶查詢數據.同時 這個語言也允許數據mapr…

git使用(2)

1.遠程倉庫 a SSHKEY 第1步&#xff1a;創建SSH Key。在用戶主目錄下&#xff0c;看看有沒有.ssh目錄&#xff0c;如果有&#xff0c;再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件&#xff0c;如果已經有了&#xff0c;可直接跳到下一步。如果沒有&#xff0c;打開Shel…

郵件中的商務英語

一、常見縮寫 CC carbon copy&#xff1a;抄送 FYI for your information&#xff1a;供你參考 EOD end of the day BTW By the way&#xff1a;順便提一下 COB close of the business 這兩個詞都是指下班前。需要催促某人在下班前給到回復的時候可以用用它們。 eg: Ple…

vue 橫向菜單滾動定位_使用vue組件+iscroll實現一個橫向菜單,不能正確滑動

使用vue組件iscroll實現一個橫向菜單&#xff0c;可是卻不能滑動&#xff0c;給父元素ul寫死一個寬度可以滑動。但是&#xff0c;我在computed里計算寬度&#xff0c;直接路由進去不能滑動&#xff0c;當我進入別的組件(切換路由)回來又可以滑動了示例地址&#xff1a;http://o…

leetcode1353. 最多可以參加的會議數目(貪心算法)

給你一個數組 events&#xff0c;其中 events[i] [startDayi, endDayi] &#xff0c;表示會議 i 開始于 startDayi &#xff0c;結束于 endDayi 。 你可以在滿足 startDayi < d < endDayi 中的任意一天 d 參加會議 i 。注意&#xff0c;一天只能參加一個會議。 請你返…

計算機組成原理實驗讀r1,計算機組成原理實驗一

計算機組成原理實驗一 (5頁)本資源提供全文預覽&#xff0c;點擊全文預覽即可全文預覽,如果喜歡文檔就下載吧&#xff0c;查找使用更方便哦&#xff01;8.90 積分計算機組成原理實驗計算機組成原理實驗第一章、TEC-5 計算機組成實驗箱簡介運算器運算器74181通用寄存器通用寄存器…

如何使用Kotlin構建具有在線狀態的Android Messenger應用

by Neo Ighodaro由新Ighodaro When building a chat application, it is essential to have an online presence feature. It is essential because your users will like to know when their friends are online, and are more likely to respond to their messages in real …

Spark常見問題解決辦法

以下是在學習和使用spark過程中遇到的一些問題&#xff0c;記錄下來。 1、首先來說說spark任務運行完后查錯最常用的一個命令&#xff0c;那就是把任務運行日志down下來。 程序存在錯誤&#xff0c;將日志down下來查看具體原因!down日志命令&#xff1a;yarn logs -application…

linux下安裝php的swoole擴展模塊(安裝后php加載不出來?)

應開發同事要求&#xff0c;需要安裝php的擴展模塊swoole。 swoole是一種PHP高級Web開發框架&#xff0c;框架不是為了提升網站的性能&#xff0c;而是為了提升網站的開發效率&#xff0c;以最少的性能損耗&#xff0c;換取最大的開發效率。 假設服務器上php服務版本為php5.6.2…

autosar工具鏈_Autosar開發與手寫代碼開發的區別

Autosar開發流程1.BSW開發主要應用工具鏈&#xff08;Vector等工具&#xff0c;具體可以百度搜索Autosar配置工具&#xff09;來配置&#xff0c;復雜驅動的代碼需要手寫&#xff0c;但是也要符合Autosar的接口標準&#xff0c;主要包括&#xff0c;CAN通信配置、數字輸入配置、…

山東計算機類好的民辦大學,2021年山東所有民辦大學名單及排名(教育部)

高考考上一個好的大學&#xff0c;是每位考生和家長的一個夢想,但是選擇一個適合自己的大學也非常重要。本文高考助手網幫各位考生整理了關于山東本地區所有的民辦大學名單、山東所有的民辦大學分數線排名、山東民辦大學文理科投檔線等相關知識&#xff0c;各位考生在填報志愿的…

leetcode1536. 排布二進制網格的最少交換次數(貪心算法)

給你一個 n x n 的二進制網格 grid&#xff0c;每一次操作中&#xff0c;你可以選擇網格的 相鄰兩行 進行交換。 一個符合要求的網格需要滿足主對角線以上的格子全部都是 0 。 請你返回使網格滿足要求的最少操作次數&#xff0c;如果無法使網格符合要求&#xff0c;請你返回 …

xml文檔包含html代碼_為什么文檔很重要,以及為什么應將其包含在代碼中

xml文檔包含html代碼There are a plethora of acronyms when it comes to software development. KISS, DRY, SOLID… and so on and so forth. But, when it comes to documenting or commenting your code, there is no simple catchphrase.關于軟件開發&#xff0c;有很多首…

python 版本分布式鎖

此文章&#xff0c;實現python 版本的分布式鎖&#xff0c;java版本的可以使用curator很容易實現&#xff0c;python版本如下在做分布式系統開發的時候&#xff0c;分布式鎖可以說是必需的一個組件。最近做了一些調研和嘗試&#xff0c;經過對比&#xff0c;基于ZooKeeper的分布…

JavaScript數組(2)---遍歷/迭代方法 8種

最近工作中經常涉及到數據的處理&#xff0c;數組尤其常見&#xff0c;經常需要對其進行遍歷、轉換操作&#xff0c;網上的文章零零散散&#xff0c;不得已自己又找出紅寶書來翻出來看&#xff0c;順便記一筆&#xff0c;便于以后查詢。 數組常用的方法 ECMAScript5為數組定義了…