目錄
- 第一章 Config介紹
- 1.1、什么是配置中心
- 1.2、為啥用配置中心
- 1.3、常見的配置中心
- 第二章 Config作業流程
- 第三章 Config入門案例
- 3.1、專案準備與啟動
- 3.2、配置中心遠程庫
- 3.3、配置中心服務端
- 3.4、配置中心客戶端
- 第四章 Config資訊安全
- 4.1、介紹 JCE
- 4.2、安裝 JCE
- 4.3、對稱加密說明
- 4.4、加密敏感資訊
- 4.5、解密敏感資訊
- 4.6、修改明文資料
- 4.7、測驗配置獲取
- 第五章 Config區域重繪
- 5.1、問題描述
- 5.2、問題解決
- 第六章 Config全域重繪
- 6.1、問題描述
- 6.2、問題解決
- 6.2.1、修改服務端
- 6.2.2、修改客戶端
- 第七章 Config安全認證
- 7.1、修改服務端
- 7.2、修改客戶端
- 第八章 Config的高可用
- 8.1、高可用介紹
- 8.2、高可用實作
配套資料,免費下載
鏈接:https://pan.baidu.com/s/1la_3-HW-UvliDRJzfBcP_w
提取碼:lxfx
復制這段內容后打開百度網盤手機App,操作更方便哦
第一章 Config介紹
1.1、什么是配置中心
使用微服務就意味著要將單體應用中的業務拆分成一個個的子服務,每個服務的粒度相對較小,因此,系統中將會出現大量的服務,由于每一個服務都需要必要的配置資訊才能運行,所以也將會產生大量的組態檔,所以有一套對組態檔進行集中式、動態式的管理的設施就必不可少了,
常見對配置的管理有三種:
- 傳統的配置方式:配置資訊分散到系統各個角落方式,組態檔或者在代碼中,
- 集中式配置中心:將應用系統中對配置資訊的管理作為一個新的應用功能模塊,進行集中統一管理,并且提供額外功能,
- 分布式配置中心:在分布式、微服務架構中,獨立的配置中心服務,
1.2、為啥用配置中心
在微服務體系中,服務的數量以及配置資訊日益增多,比如各種服務器引數配置、各種資料庫訪問引數配置、各種環境下配置資訊的不同、配置資訊修改之后實時生效等等,傳統的組態檔方式或者將配置資訊存放于資料庫中的方式已無法滿足開發人員對配置管理的要求,如:
- 安全性:配置跟隨源代碼保存在代碼庫中,容易造成配置泄漏,
- 時效性:修改配置,需要重啟服務才能生效,
- 局限性:無法支持動態調整,例如日志開關、功能開關,
1.3、常見的配置中心
- Diamond:淘寶開源的持久配置中心,支持各種持久資訊(比如各種規則,資料庫配置等)的發布和訂閱,
- Qconf:奇虎360內部分布式配置管理工具,用來替代傳統的組態檔,使得配置資訊和程式代碼分離,同時配置變化能夠實時同步到客戶端,而且保證用戶高效讀取配置,這使的工程師從瑣碎的配置修改、代碼提交、配置上線流程中解放出來,極大地簡化了配置管理作業,
- Disconf:百度的分布式配置管理平臺,專注于各種分布式系統配置管理的通用組件和通用平臺,提供統一的配置管理服務,
- Apollo:攜程框架部門研發的分布式配置中心,能夠集中化管理應用不同環境、不同集群的配置,配置修改后能夠實時推送到應用端,并且具備規范的權限、流程治理等特性,適用于微服務配置管理場景,
- Spring Cloud Config:Spring Cloud微服務開發的配置中心,他是一個解決分布式系統的配置管理方案,它包含 Client 和 Server 兩個部分,Server 提供組態檔的存盤、以介面的形式將組態檔的內容提供出去,Client 通過介面獲取資料、并依據此資料初始化自己的應用,(我們學習這一款產品)
Spring Cloud Config官方檔案:https://docs.spring.io/spring-cloud-config/docs/2.2.6.RELEASE/reference/html/
第二章 Config作業流程
Spring Cloud Config Server 的作業流程,如下圖所示:

- 首先需要一個遠程 Git 倉庫,平時測驗可以使用 GitHub,在實際生產環境 中,需要自己搭建一個 Git 服務器,遠程 Git 倉庫的主要作用是用來保存我們的組態檔,我們在這里采用國內的碼云 gitee,也可以使用國外的 GitHub,由于使用 Github 網路比較慢,可能連接失敗,用哪個都是可以的,
- 除了遠程 Git 倉庫之外,我們還需要一個本地 Git 倉庫,每當 Config Server 訪問遠程 Git 倉庫時,都會克隆一份到本地,這樣當遠程倉庫無法連接時,就直接使用本地存盤的配置資訊;
- 微服務 A、微服務 B 則是我們的具體應用,這些應用在啟動的時候會從 Config Server 中獲取相應的配置資訊;
- 當微服務 A、微服務 B 嘗試從 Config Server 中加載配置資訊的時候,Config Server 會先通過 git clone 命令克隆一份組態檔保存到本地;
- 由于組態檔是存盤在 Git 倉庫中,所以組態檔天然具有版本管理功能;
第三章 Config入門案例
3.1、專案準備與啟動
我們接下來的所有操作均是在Gateway最后完成的工程上進行操作,相關代碼請到配套資料中尋找,

3.2、配置中心遠程庫
創建遠程倉庫:https://gitee.com/projects/new

上傳組態檔:

application-dev.yaml(內容自己隨便定義的,沒有什么特殊含義,用來模擬一些配置資訊)
computer:
username: caochenlei
password: dev123456
env: dev
version: 1
application-prod.yaml(內容自己隨便定義的,沒有什么特殊含義,用來模擬一些配置資訊)
computer:
username: caochenlei
password: prod123456
env: prod
version: 1
application-test.yaml(內容自己隨便定義的,沒有什么特殊含義,用來模擬一些配置資訊)
computer:
username: caochenlei
password: test123456
env: test
version: 1
3.3、配置中心服務端
(1)在父專案spring-cloud-study下創建一個子專案config-server4001
(2)打開依賴檔案pom.xml,把以下依賴資訊拷貝進去:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
(3)創建組態檔application.yaml,把以下配置資訊拷貝進去:
server:
port: 4001
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/caochenlei/config-center.git #代表你組態檔倉庫的遠程地址
search-paths: config-center #代表你組態檔倉庫的倉庫路徑
username: XXXXXXXXXXXXXXX #代表你Github/Gitee的賬戶
password: XXXXXXXXXXXXXXX #代表你Github/Gitee的密碼
(4)撰寫主啟動類com.caochenlei.ConfigServer4001Application,把以下代碼拷貝進去,然后啟動當前應用:
@SpringBootApplication
@EnableConfigServer
public class ConfigServer4001Application {
public static void main(String[] args) {
SpringApplication.run(ConfigServer4001Application.class, args);
}
}
(5)打開瀏覽器,在瀏覽器地址輸入以下地址依次進行訪問倉庫的組態檔:
訪問地址1:http://localhost:4001/master/application-dev.yaml
訪問地址2:http://localhost:4001/master/application-prod.yaml
訪問地址3:http://localhost:4001/master/application-test.yaml

當訪問成功后配置中心會通過 git clone 命令將遠程組態檔在本地也保存一份,以確保在 git 倉庫故障時我們的應用還可以繼續正常使用,

(6)訪問遠程倉庫的組態檔,官方提供了很多種方式,但是我們最推薦的就是上邊這種,還有一些其他的訪問規則,我在下邊都給出了,但不具體演示了,
/{application}/{profile}[/{label}]
/{application}-{profile}.yaml
/{label}/{application}-{profile}.yaml
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
{application}:表示組態檔的名字,對應的組態檔即:application,
{profile}:表示環境,有 dev、prod、test、online及默認(不寫就是默認),
{label} 表示分支,默認我們放在 master 分支上,
(7)一個拓展的小知識,YAML檔案的拓展名到底是用yml還是yaml?
回答:兩種都可以,都有人在用,Spring Boot都能識別,無傷大雅,這里推薦使用yaml,為什么,不是我說的,是官網說的,我們只要打開YAML的官網,
地址:https://yaml.org/faq.html

3.4、配置中心客戶端
(1)前面已經搭建好了配置中心的服務端,并且通過訪問介面從config服務端讀取配置資訊, 不過實際開發中,更多的不是我們人為去獲取配置資訊,而是由微服務自己從config服務端上加載配置資訊, 那么怎么來加載呢?按道理來說,我們需要給微服務的所有服務都配置上連接配置中心的配置,但是,目前我們正處于學習階段,為了保持思路清晰,也為了減少修改工程的代碼量,我在這里就不在修改以前原有的專案了,我現在要重新創建新的服務,來模擬配置中心的客戶端,實際上,這一塊的配置應該和微服務的服務們一塊用的,
(2)在父專案spring-cloud-study下創建一個子專案config-client3001
(3)打開依賴檔案pom.xml,把以下依賴資訊拷貝進去:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
(4)創建組態檔application.yaml,把以下配置資訊拷貝進去:
server:
port: 3001
spring:
application:
name: config-client3001
(5)創建組態檔bootstrap.yaml,把以下配置資訊拷貝進去:
#有啥區別:application.yaml和bootstrap.yaml都是組態檔,都可以被Spring Boot所識別
#加載順序:bootstrap.yaml > application.yaml > application-(dev/prod/test).yaml
#具體配置如下:
spring:
cloud:
config:
profile: dev #要使用哪種環境的組態檔
label: master #要使用哪個分支的組態檔
uri: http://localhost:4001 #分布式配置中心的服務地址
(6)撰寫主啟動類com.caochenlei.ConfigClient3001Application,把以下代碼拷貝進去,然后啟動當前應用:
@SpringBootApplication
public class ConfigClient3001Application {
public static void main(String[] args) {
SpringApplication.run(ConfigClient3001Application.class, args);
}
}
(7)撰寫一個控制器類,在里邊撰寫一個方法,來獲取組態檔當中的屬性資訊,這樣,當我們啟動這個專案的時候,我們可以通過瀏覽器地址來訪問,查看當前的配置是不是從配置中心加載出來的,具體類名:com.caochenlei.controller.ConfigController,具體代碼如下:
@RestController
public class ConfigController {
@Value("${computer.username}")
private String username;
@Value("${computer.password}")
private String password;
@Value("${computer.env}")
private String env;
@Value("${computer.version}")
private String version;
@RequestMapping("/info")
public String info() {
return username + " : " + password + " : " + env + " : " + version;
}
}
(8)啟動當前這個專案,在瀏覽器地址輸入:http://localhost:3001/info


第四章 Config資訊安全
4.1、介紹 JCE
前面是在 Git 倉庫中明文存盤配置資訊值,很多場景下,對于某些敏感的配置內容(例如資料庫賬號、密碼等),應該加密存盤,Config Server為我們考慮到了這一點,對配置內容提供了加密與解密支持,Config Server的加解密功能依賴Java Cryptography Extension(JCE),
4.2、安裝 JCE
Java 8 JCE下載地址(默認需要登錄Oracle賬號,不想登錄,可以使用配套資料中我已經下載好的資源包):
http://www.oracle.com/technetwork/java/javase/downloads/jce8-download-2133166.html
下載得到JCE的zip壓縮包并解壓,將其中的jar包覆寫到JDK安裝目錄/jre/lib/security目錄下,

4.3、對稱加密說明
Config Server提供了加密與解密的介面,并且使用的是對稱加密演算法,因此,你需要提供一個密鑰來進行加解密使用,通常我們只需要手動加密,而不需要手動解密,因為,程式在執行的程序中,發現你使用了密文以后,會自動的根據你提供的密鑰來進行解密,我們學習解密只是為了告訴你,原來解密后確實是咱們以前定義的明文資料,讓你對加解密有更深的印象,
- 加密介面:http://localhost:4001/encrypt
- 解密介面:http://localhost:4001/decrypt
我們需要在config-server4001專案下創建一個bootstrap.yaml組態檔,組態檔的內容如下:
#設定對稱密鑰,用這個密鑰進行加密和解密,密鑰自己隨便定義,越復雜越好
encrypt:
key: 123456789ABC
接下來,我們需要重新啟動專案來進行加密和解密測驗,加密和解密介面都需要post請求,因此,請選擇你熟練使用的工具來發送,推薦postman,curl,
4.4、加密敏感資訊
加密資料請發送:curl -XPOST http://localhost:4001/encrypt -d "caochenlei"

4.5、解密敏感資訊
解密資料請發送:curl -XPOST http://localhost:4001/decrypt -d “3ec5f0bcdeef2348a2f03059ed551bb57353ea3b8f21011bd94b19a3fd73e876”

4.6、修改明文資料
application-dev.yaml({cipher}就是用來告訴程式這是一個密文)
computer:
username: '{cipher}3ec5f0bcdeef2348a2f03059ed551bb57353ea3b8f21011bd94b19a3fd73e876'
password: '{cipher}cc08112f0bfc3979553c80afbc2aa65183ecd54351236b899bf431df79f82805'
env: dev
version: 1
application-prod.yaml({cipher}就是用來告訴程式這是一個密文)
computer:
username: '{cipher}3ec5f0bcdeef2348a2f03059ed551bb57353ea3b8f21011bd94b19a3fd73e876'
password: '{cipher}f10682be4b46b06b17c78fba441347d8dd603a83874949e71d0182c8fe02a037'
env: prod
version: 1
application-test.yaml({cipher}就是用來告訴程式這是一個密文)
computer:
username: '{cipher}3ec5f0bcdeef2348a2f03059ed551bb57353ea3b8f21011bd94b19a3fd73e876'
password: '{cipher}82136fe37c3f9b1989992e4b398a8fa1a82a494879c23b68f00a28734c1911e1'
env: test
version: 1
注意:你可以直接在線修改,也可以在本地修改好,使用 git 上傳到遠程倉庫,
4.7、測驗配置獲取
重新啟動config-client3001,然后訪問:http://localhost:3001/info

我們發現可以成功讀取,這說明Config Server能自動解密配置內容,
第五章 Config區域重繪
5.1、問題描述
我們發現我們剛才修改了遠程倉庫中的組態檔,但是,我們需要重新啟動一次config-client3001客戶端才能夠讀取最新的配置資訊,實際上,當一個應用上線以后,我們盡量不能讓他來回重啟,很多場景下,需要在運行期間動態調整配置,如果配置發生了修改,微服務要如何實作配置的動態重繪呢?
5.2、問題解決
(1)在Controller上添加注解@RefreshScope,添加這個注解的類會在配置更新時得到特殊的處理,
com.caochenlei.controller.ConfigController
@RestController
@RefreshScope
public class ConfigController {
@Value("${computer.username}")
private String username;
@Value("${computer.password}")
private String password;
@Value("${computer.env}")
private String env;
@Value("${computer.version}")
private String version;
@RequestMapping("/info")
public String info() {
return username + " : " + password + " : " + env + " : " + version;
}
}
(2)開啟web訪問端點:management.endpoints.web.exposure.include=*
application.yaml
server:
port: 3001
spring:
application:
name: config-client3001
management:
endpoints:
web:
exposure:
include: '*'
(3)重新啟動當前這個專案,以讓配置生效,重啟以后訪問地址:http://localhost:3001/info

(4)修改遠程倉庫application-dev.yaml的版本號為2
application-dev.yaml
computer:
username: '{cipher}3ec5f0bcdeef2348a2f03059ed551bb57353ea3b8f21011bd94b19a3fd73e876'
password: '{cipher}cc08112f0bfc3979553c80afbc2aa65183ecd54351236b899bf431df79f82805'
env: dev
version: 2
(5)通知當前的應用重繪配置,需要使用post方式來訪問:http://localhost:3001/actuator/refresh
curl -XPOST http://localhost:3001/actuator/refresh

(6)訪問地址:http://localhost:3001/info

這樣我們就實作了,再不重新啟動當前應用的情況下,如何優雅的讓配置資訊動態更新,
第六章 Config全域重繪
6.1、問題描述
上邊介紹的這種方式的重繪,就是你對每個微服務分別進行重繪,也就是一個一個操作,如果你有80個微服務,那么就需要手動重繪這80個微服務,而我們很清楚,一個微服務專案,很有很多服務模塊,一個一個重繪,也可以,可以讓運維人員寫一個批處理腳本,這樣也能減輕作業總量,但是,我們除了寫腳本以外,還有沒有一種更加優雅的方式,當遠程倉庫的配置資訊發生修改,可以讓所有連接配置中心的服務(客戶端)都能夠即使的重繪,當然是有辦法的,
前面使用/actuator/refresh端點手動重繪配置雖然可以實作重繪,但所有微服務節點的配置都需要手動去重繪,如果微服務非常多,其作業量非常龐大,因此,實作配置的自動重繪是志在必行,Spring Cloud Bus就可以用來實作配置的自動重繪,
Spring Cloud Bus使用輕量級的訊息代理/總線(例如RabbitMQ、Kafka等)廣播傳播狀態的更改(例如配置的更新)或者其他的管理指令,可以將Spring Cloud Bus想象成一個分布式的Spring Boot Actuator,

使用了Spring Cloud Bu以后,我們只需要向配置中心發送一次/actuator/bus-refresh,就能讓所有連接到該配置中心的服務(客戶端)都能動態重繪,
6.2、問題解決
注意:這一章節我們需要使用RabbitMQ,而RabbitMQ的學習與搭建與啟動,請參考:https://caochenlei.blog.csdn.net/article/details/112549952
6.2.1、修改服務端
(1)打開config-server4001的pom.xml,新增加如下依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
(2)打開config-server4001的application.yaml,修改為如下配置:
server:
port: 4001
spring:
application:
name: config-server
cloud:
#配置中心的配置資訊
config:
server:
git:
uri: https://gitee.com/caochenlei/config-center.git #代表你組態檔倉庫的遠程地址
search-paths: config-center #代表你組態檔倉庫的倉庫路徑
username: XXXXXXXXXXXXXXX #代表你Github/Gitee的賬戶
password: XXXXXXXXXXXXXXX #代表你Github/Gitee的密碼
#開啟spring cloud bus,默認是開啟的,也可以省略該配置
bus:
enabled: true
#rabbitmq的一些常見配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
#打開所有的web訪問端點
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
bus-refresh:
enabled: true
(3)重新啟動當前配置中心config-server4001
6.2.2、修改客戶端
(1)打開config-client3001的pom.xml,新增加如下依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
(2)打開config-client3001的application.yaml,修改為如下配置:
server:
port: 3001
spring:
application:
name: config-client3001
cloud:
#開啟spring cloud bus,默認是開啟的,也可以省略該配置
bus:
enabled: true
#rabbitmq的一些常見配置
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
#打開所有的web訪問端點
management:
endpoints:
web:
exposure:
include: '*'
endpoint:
bus-refresh:
enabled: true
(3)因為我們要模擬只請求一次,而讓所有連接配置中心的客戶端都能自動重繪,現在只有一個,顯然效果不是很明顯,所以,我們需要拷貝config-client3001為config-client3002,這里建議,先新建一個子專案,然后把依賴、配置、啟動類、代碼在拷貝進去,不要直接拷貝專案,可能會出現一些意想不到的問題,當config-client3001和config-client3002都準備好了以后,請一個一個啟動起來,
注意:ConfigClient3002Application和application.yaml的埠號

(4)我們分別訪問如下地址:
地址1:http://localhost:3001/info
地址2:http://localhost:3002/info

(5)修改遠程倉庫application-dev.yaml的版本號為3
application-dev.yaml
computer:
username: '{cipher}3ec5f0bcdeef2348a2f03059ed551bb57353ea3b8f21011bd94b19a3fd73e876'
password: '{cipher}cc08112f0bfc3979553c80afbc2aa65183ecd54351236b899bf431df79f82805'
env: dev
version: 3
(6)通知當前的配置中心重繪配置,需要使用post方式來訪問:http://localhost:4001/actuator/bus-refresh
curl -XPOST http://localhost:4001/actuator/bus-refresh

(7)我們分別訪問如下地址:
地址1:http://localhost:3001/info
地址2:http://localhost:3002/info

這樣我們就實作了,再不重新啟動當前應用的情況下,如何優雅的讓配置資訊動態更新,
第七章 Config安全認證
我們現在是可以隨便訪問config-server4001的,因此,我們的配置中心也需要安全認證保護,
7.1、修改服務端
(1)打開config-server4001的pom.xml,把用于安全認證的依賴加入:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
(2)打開config-server4001的application.yaml,給安全認證加上賬戶和密碼:
spring:
security:
user:
name: config
password: 123456
(3)重新啟動當前的config-server4001
7.2、修改客戶端
(1)修改config-client3001和config-client3002的bootstrap.yaml,修改后如下:
#有啥區別:application.yaml和bootstrap.yaml都是組態檔,都可以被Spring Boot所識別
#加載順序:bootstrap.yaml > application.yaml > application-(dev/prod/test).yaml
#具體配置如下:
spring:
cloud:
config:
profile: dev #要使用哪種環境的組態檔
label: master #要使用哪個分支的組態檔
uri: http://localhost:4001 #分布式配置中心的服務地址
username: config #分布式配置中心的登錄賬號
password: 123456 #分布式配置中心的登錄密碼
(2)重新啟動config-client3001和config-client3002
(3)我們分別訪問如下地址:
地址1:http://localhost:3001/info
地址2:http://localhost:3002/info

第八章 Config的高可用
8.1、高可用介紹
有了配置中心之后,其他的微服務都是從配置中心上獲取配置資訊,此時配置中心就至關重要了,在真實的專案環境中,Spring Cloud Config配置中心難免會出現各種問題,此時就需要考慮Spring Cloud Config的高可用機制了,
Spring Cloud Config的高可用機制解決方式非常簡單,把Spring Cloud Config注冊到Eureka就搞定了,此時用戶訪問的時候不是直接從配置中心獲取配置資訊,而是先通過Eureka中獲取配置中心的地址,然后再從配置中心獲取具體服務的配置資訊,
要想實作Config配置中心的高可用,我們還要實作配置中心的集群環境,目前我們只有一臺配置中心服務端,因此,我們拷貝config-server4001一份為config-server4002,這里建議不要直接拷貝,要先在父工程下創建一個子專案,然后再把依賴、配置、主啟動類、代碼拷貝進來,注意修改組態檔和主啟動類的埠號,
接下來,我們需要依次啟動:
- eureka-server7001
- eureka-server7002
8.2、高可用實作
服務端添加對注冊中心支持:
(1)在config-server4001和config-server4002的pom.xml中,添加如下依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)在config-server4001和config-server4002的application.yaml中,添加如下配置:
eureka:
instance:
#是否使用 ip 地址注冊
prefer-ip-address: true
#該實體注冊到服務中心的唯一ID
instance-id: ${spring.cloud.client.ip-address}:${server.port}
#告訴注冊中心,每間隔10s,向服務端發送一次心跳,證明自己依然"存活"
lease-renewal-interval-in-seconds: 10
#告訴注冊中心,如果我20s之內沒有給你發心跳,就代表我故障了,將我踢出掉
lease-expiration-duration-in-seconds: 20
client:
#設定服務注冊中心地址
service-url:
defaultZone: http://root:123456@eureka-server7001.com:7001/eureka/,http://root:123456@eureka-server7002.com:7002/eureka/
(3)重新啟動config-server4001和config-server4002,然后在瀏覽器輸入:http://localhost:7001,賬號:root,密碼:123456

客戶端添加對注冊中心支持:
(1)在config-client3001和config-client3002的pom.xml中,添加如下依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
(2)在config-client3001和config-client3002的bootstrap.yaml中,修改成如下配置:
#有啥區別:application.yaml和bootstrap.yaml都是組態檔,都可以被Spring Boot所識別
#加載順序:bootstrap.yaml > application.yaml > application-(dev/prod/test).yaml
#具體配置如下:
spring:
cloud:
config:
discovery:
enabled: true #開啟注冊中心發現服務
service-id: CONFIG-SERVER #使用注冊中心注冊名稱為CONFIG-SERVER的分布式配置中心集群
profile: dev #要使用哪種環境的組態檔
label: master #要使用哪個分支的組態檔
username: config #分布式配置中心的登錄賬號
password: 123456 #分布式配置中心的登錄密碼
eureka:
instance:
#是否使用 ip 地址注冊
prefer-ip-address: true
#該實體注冊到服務中心的唯一ID
instance-id: ${spring.cloud.client.ip-address}:${server.port}
client:
#是否將自己注冊到注冊中心,默認為 true
register-with-eureka: true
#表示 Eureka Client 間隔多久去服務器拉取注冊資訊,默認為 30 秒
registry-fetch-interval-seconds: 10
#設定服務注冊中心地址
service-url:
defaultZone: http://root:123456@eureka-server7001.com:7001/eureka/,http://root:123456@eureka-server7002.com:7002/eureka/
(3)重新啟動config-client3001和config-client3002,然后在瀏覽器分別輸入如下地址測驗:
地址1:http://localhost:3001/info
地址2:http://localhost:3002/info

(4)將config-server4001停止,模擬宕機情況,
(5)我們分別訪問如下地址:
地址1:http://localhost:3001/info
地址2:http://localhost:3002/info

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/256838.html
標籤:其他
上一篇:浮點數在記憶體中的存盤
