這篇文章主要介紹“選擇Spring Cloud Config作為配置中心的原因是什么”,在日常操作中,相信很多人在選擇Spring Cloud Config作為配置中心的原因是什么問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”選擇Spring Cloud Config作為配置中心的原因是什么”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供四方臺(tái)企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、做網(wǎng)站、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為四方臺(tái)眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
一、Spring Cloud Config項(xiàng)目是一個(gè)解決分布式系統(tǒng)的配置解決方案。它包含了Client和Server兩個(gè)部分,Server提供配置文件的存儲(chǔ),以接口的形式將配置文件的內(nèi)容提供出去;Client通過接口獲取數(shù)據(jù),并依據(jù)此數(shù)據(jù)初始化自己的應(yīng)用。
服務(wù)端也稱為分布式配置中心,它是一個(gè)獨(dú)立的微服務(wù)應(yīng)用,用來連接配置倉庫并為客戶端提供獲取配置信息、加密/解密信息等訪問接口。
客戶端則是微服務(wù)架構(gòu)中的各個(gè)微服務(wù)應(yīng)用或基礎(chǔ)設(shè)施,它們通過指定的配置中心來管理應(yīng)用資源與業(yè)務(wù)相關(guān)的配置內(nèi)容,并在啟動(dòng)的時(shí)候從配置中心獲取和加載配置信息。
二、Spring Cloud Config 默認(rèn)采用 Git 來存儲(chǔ)配置信息,所以使用 Spring Cloud Config 構(gòu)建的配置服務(wù)器,天然就支持對微服務(wù)用于配置信息的版本管理,并且可以通過 Git 客戶端工具來方便地管理和訪問配置內(nèi)容。
「注意:除了使用 Git 外,Spring Cloud Config 也同樣支持其他存儲(chǔ)方式比如:SVN、本地化文件系統(tǒng)等。」
首先我們新建一個(gè)配置文件system-dev.properties,內(nèi)容如下
jdbc.driverClassName: com.MySQL.jdbc.Driver jdbc.url: jdbc:mysql://127.0.0.1:3306/testproject jdbc.username: root jdbc.password: root
然后我們將該配置文件上傳了github,Demo地址:https://github.com/Maybe728/Spring_Cloud
第一步,新建一個(gè)SpringCloudConfigServer模塊
pom.xml代碼如下:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cnblogs.hellxz</groupId> <artifactId>ConfigServer</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-parent</artifactId> <version>Dalston.SR5</version> <relativePath/> </parent> <dependencies> <!--Spring Cloud Config 服務(wù)端依賴--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
通過@EnableConfigServer可以激活配置中心服務(wù)。配置中心可以單獨(dú)做服務(wù),也可以嵌入到其它服務(wù)中。推薦用單獨(dú)做服務(wù)方式使用配置中心。
package com.javaer.study; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; /** * @Author 公眾號 | Java學(xué)習(xí)部落 **/ @SpringBootApplication @EnableConfigServer public class SpringCloudConfigServerApplication { public static void main (String[] args) { SpringApplication.run (SpringCloudConfigServerApplication.class, args); } }
由于配置文件的存儲(chǔ)的多樣性,下面主要介紹Git配置形式如何配置。當(dāng)然了所有的配置都配置在application.yml中。
application.yml 配置內(nèi)容如下
spring: application: name: configserver cloud: config: server: git: # 配置文件只搜索url目錄下的searchPaths uri: https://github.com/Maybe728/Spring_Cloud.git # 對應(yīng) {label} 部分,即 Git 的分支 label: master # 指定搜索路徑,如果有多個(gè)路徑則使用,分隔 search-paths: springcloud-config-git/config-repo # 對于使用git,svn做為后端配置,從遠(yuǎn)程庫獲取配置文件,需要存儲(chǔ)到本地文件 basedir: /tmp/spring-cloud-repo # 配置中心通過git從遠(yuǎn)程git庫,有時(shí)本地的拷貝被污染,這時(shí)配置中心無法從遠(yuǎn)程庫更新本地配置,設(shè)置force-pull=true,則強(qiáng)制從遠(yuǎn)程庫中更新本地庫 force-pull: true # git 倉庫用戶名(公開庫可以不用填寫) username: # git 倉庫密碼(公開庫可以不用填寫) password:
spring.cloud.config.server.git.url
:指定配置文件所在遠(yuǎn)程git庫的url地址
spring.cloud.config.server.git.label
:即 Git 的分支
spring.cloud.config.server.git.searchPaths
:和上面的參數(shù)url配合使用,定位git庫的子目錄。指定搜索路徑,如果有多個(gè)路徑則使用,分隔
spring.cloud.config.server.git.basedir
:對于使用git,svn做為后端配置,從遠(yuǎn)程庫獲取配置文件,需要存儲(chǔ)到本地文件。默認(rèn)存儲(chǔ)在系統(tǒng)臨時(shí)目錄下,目錄名的前綴為config-repo-,如在linux下時(shí)可能是/tmp/config-repo-。因?yàn)?tmp下的內(nèi)容有可能被誤刪,所有為了保險(xiǎn),最好修改存儲(chǔ)目錄。如果你修改存儲(chǔ)目錄,你可以修改spring.cloud.config.server.git.basedir
spring.cloud.config.server.git.force-pull
:配置中心通過git從遠(yuǎn)程git庫讀取數(shù)據(jù)時(shí),有時(shí)本地的拷貝被污染,這時(shí)配置中心無法從遠(yuǎn)程庫更新本地配置。設(shè)置force-pull=true,則強(qiáng)制從遠(yuǎn)程庫中更新本地庫
最后我們啟動(dòng)程序后訪問:http://localhost:8080/system-dev.properties
「成功!!!!!」
在瀏覽器中輸入如下URL,可以訪問到配置文件
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
下面通過具體例子說明以上url的意思。如果我們的配置文件名稱system-dev.properties,則其和URL中各個(gè)字段對應(yīng)的值為:
「application: system」
「profile: dev」
配置中心服務(wù)端配置成功后,然后其它服務(wù)從配置中心獲取配置文件,這樣的服務(wù)被稱為**「客戶端」**。
下面我們來搭建一個(gè)Config Client。
首先新建一個(gè)SpringCloudConfigClient項(xiàng)目:
「pom.xml」
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.4.1</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.javaer.study</groupId> <artifactId>springcloudconfigclient</artifactId> <version>0.0.1-SNAPSHOT</version> <name>springcloudconfigclient</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>2020.0.0</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>Spring Milestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories> </project>
請將配置中心的相關(guān)配置配置在bootstrap.yml中,不要配appliaction.yml。
因?yàn)榉?wù)啟動(dòng)時(shí),會(huì)從bootstrap中讀取配置,然后從遠(yuǎn)程配置中心讀取配置文件,最后再從appliaction中獲取配置,如果有相同的配置項(xiàng),則后面的會(huì)覆蓋前面讀到的值。
所以如果配置中心的配置配置在appliaction,則配置項(xiàng)不會(huì)有任何效果。
「bootstrap.yml」
server: port: 8888 spring: cloud: # 配置服務(wù)器的地址 config: uri: http://127.0.0.1:8080 # 要讀取配置文件讀取的值 name: cloud-config # 如果不設(shè)置此值,則系統(tǒng)設(shè)置此值為 spring.profiles.active profile: dev # 可以使用之前的版本。默認(rèn)值可以是git label, branch name or commit id。可以使用多個(gè)Label,多個(gè)Label可以使用逗號分隔 # label: # true: 如果訪問配置中心失敗,則停止啟動(dòng)服務(wù) fail-fast: true # 配置重試,默認(rèn)是重試6次,最初是延遲1s再次重試,如果再失敗,則延遲1.1*1s、1.1*1.1*1s、… 。可以使用這個(gè)配置 retry: initial-interval: 2000 # 最多重試次數(shù) max-attempts: 6 # 最大重試間隔 max-interval: 4000 # 每次重試時(shí)間是之前的倍數(shù) multiplier: 1.2
重要參數(shù)的解釋如下:
「配置中心的url」:即從哪里讀取配置文件,通過“spring.cloud.config.url”配置
「要讀取哪些配置文件,由以下參數(shù)共同決定」
“spring.cloud.config.name
”:配置文件名稱,對應(yīng)上文的讀取URL中的{applicaion}值
“spring.cloud.config.profile
”:配置文件的profile,對應(yīng)上文的URL中的{profile}值
“spring.cloud.config.label
”:可以使用之前的版本。默認(rèn)值可以是git label, branch name or commit id。可以使用多個(gè)Label,多個(gè)Label可以使用逗號分隔
「快速失敗」
如果要求客戶端訪問配置中心失敗,則立即停止啟動(dòng)服務(wù),則設(shè)置“spring.cloud.config.label”為 true
「重試」
如果訪問配置失敗,則自動(dòng)重試。默認(rèn)是重試**「6」次,最初是延遲「1s」**再次重試,如果再失敗,則延遲1.1*1s、1.1*1.1*1s、…
。
通過下面參數(shù)可以修改值:
“spring.cloud.config.retry.initial-interval
”:第一次失敗,延遲多久重試
“spring.cloud.config.retry.max-attempts
”:最多重試次數(shù)
“spring.cloud.config.retry.max-interval
”: 最大重試間隔
“spring.cloud.config.retry.multiplier
”: 每次重試時(shí)間是之前的倍數(shù)
「如果要實(shí)現(xiàn)重試功能,需要引入新的jar」
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework.retry/spring-retry --> <dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency>
創(chuàng)建一個(gè)獲取配置信息成功后存放配置信息的對象
@Component public class JdbcConfigBean { @Value("${jdbc.url}") private String url; @Value("${jdbc.username}") private String username; @Value("${jdbc.password}") private String password; @Value("${jdbc.driverClassName}") private String driverClassName; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getDriverClassName() { return driverClassName; } public void setDriverClassName(String driverClassName) { this.driverClassName = driverClassName; } @Override public String toString() { return "JdbcConfigBean [url=" + url + ", username=" + username + ", password=" + password + ", driverClassName=" + driverClassName + "]"; } }
創(chuàng)建一個(gè)Controller
package com.javaer.study; import org.springframework.web.bind.annotation.RequestMapping; /** * @author 公眾號 | Java學(xué)習(xí)部落 **/ public class SpringCloudConfigController { @RequestMapping ("/config") public JdbcConfigBean config() { return new JdbcConfigBean (); } }
最后我們啟動(dòng)**「SpringCloudConfigClient」**,在瀏覽器輸入http://127.0.0.1:8888/config,就會(huì)看到配置信息。
首先我們需要搭建一個(gè)Eureka Server,這個(gè)不細(xì)說,因?yàn)樵谥爸v解Eureka的時(shí)候阿里面試官問我:到底知不知道什么是Eureka,這次,我沒沉默已經(jīng)詳細(xì)的搭建過了,不會(huì)的可以去看看,順便補(bǔ)充下Eureka的相關(guān)知識。
接下來我們就要對配置中心進(jìn)行改造了。
「改造服務(wù)端」
第一步引入Eureka客戶端依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
第二步在配置中心中添加如下配置
eureka: instance: preferIpAddress: true client: serviceUrl: # 注冊到 eureka defaultZone: http://localhost:8761/eureka
第三步在啟動(dòng)類加入@EnableDiscoveryClient激活對注冊中心支持
package com.javaer.study; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.config.server.EnableConfigServer; /** * @Author 公眾號 | Java學(xué)習(xí)部落 **/ @SpringBootApplication @EnableConfigServer @EnableDiscoveryClient public class SpringCloudConfigServerApplication { public static void main (String[] args) { SpringApplication.run (SpringCloudConfigServerApplication.class, args); } }
「服務(wù)端改造完成!!!」
「改造客戶端」
第一步同樣引入Eureka Client 依賴
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency>
第二步修改配置
eureka: client: serviceUrl: # 指向注冊中心的地址 defaultZone: http://127.0.0.1:8761/eureka instance: preferIpAddress: true server: port: 8888 spring: cloud: # 配置服務(wù)器的地址 config: uri: http://127.0.0.1:8080 username: user password: 111111 # 要讀取配置文件讀取的值 name: system # 如果不設(shè)置此值,則系統(tǒng)設(shè)置此值為 spring.profiles.active profile: dev discovery: #表示開啟服務(wù)發(fā)現(xiàn),對比上篇也主要是這里的改變,從指定config服務(wù)地址到注冊中心服務(wù)ID enabled: true serviceId: config-serve # 可以使用之前的版本。默認(rèn)值可以是git label, branch name or commit id。可以使用多個(gè)Label,多個(gè)Label可以使用逗號分隔 # label: # true: 如果訪問配置中心失敗,則停止啟動(dòng)服務(wù) fail-fast: true # 配置重試,默認(rèn)是重試6次,最初是延遲1s再次重試,如果再失敗,則延遲1.1*1s、1.1*1.1*1s、… 。可以使用這個(gè)配置 retry: initial-interval: 2000 # 最多重試次數(shù) max-attempts: 6 # 最大重試間隔 max-interval: 4000 # 每次重試時(shí)間是之前的倍數(shù) multiplier: 1.2
最后一步在啟動(dòng)類加入@EnableDiscoveryClient激活對注冊中心支持。
「客戶端改造完成!!!」
Config Server自帶了一個(gè)健康狀態(tài)指示器,用于檢查所配置的EnvironmentRepository是否正常工作。
可使用Config Server的/health端點(diǎn)查詢當(dāng)前健康狀態(tài)。
默認(rèn)情況下,健康指示器向EnvironmentRepository請求的{application}是app,{profile}和{label}是對應(yīng) EnvironmentRepository實(shí)現(xiàn)的默認(rèn)值。
對于Git,{profile}是default,{label}是master。
Config Server 有一個(gè)“屬性覆蓋”的特性,它可以讓開發(fā)人員為所有的應(yīng)用提供配置屬性,只需要通過 spring.cloud.config.server.overrides 屬性來設(shè)置鍵值對的參數(shù),這些參數(shù)會(huì)以 Map 的方式加載到客戶端的配置中。
利用該特性可以方便地為 Spring Cloud 應(yīng)用配置一些共同屬性或是默認(rèn)屬性。
通過該屬性配置的參數(shù)(優(yōu)先級高于 Git 倉庫里面的配置),同時(shí)也不會(huì)被 Spring Cloud 的客戶端修改。
所有 Spring Cloud 客戶端從 Config Server 中獲取配置信息時(shí),都會(huì)取得這些配置信息。
我們知道,一般來說,配置中心的信息都是很敏感很機(jī)密的,比如數(shù)據(jù)庫賬號密碼的配置,redis賬號密碼的配置等等,所以對配置信息做一定的安全保護(hù)是十分有必要的。
由于微服務(wù)是構(gòu)建在Spring Boot之上,所以整合Spring Security是最方便的方式。
首先在服務(wù)端引入Spring Security依賴
<dependency> <!-- spring security 安全認(rèn)證 --> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>
然后再配置文件中增加Spring Security配置
security: basic: enabled: true #啟用基本認(rèn)證(默認(rèn)) user: #配置security用戶名密碼,默認(rèn)值為“user”的用戶名和隨機(jī)生成的密碼 name: user password: 111111
啟動(dòng)服務(wù),測試一下。請求http://localhost:8080/system-dev.yml,會(huì)出現(xiàn)登陸界面
「成功!!!」
**「同時(shí)」我們在「SpringCloudConfigClient」工程中,我們修改「bootstrap.yml」配置文件(在這里配置了Config Server的訪問信息),為其添加認(rèn)證,我們選擇添加「spring.cloud.config.username」和「spring.cloud.config.password」**屬性
server: port: 8888 spring: cloud: # 配置服務(wù)器的地址 config: uri: http://127.0.0.1:8080 username: user password: 111111 # 要讀取配置文件讀取的值 name: system # 如果不設(shè)置此值,則系統(tǒng)設(shè)置此值為 spring.profiles.active profile: dev # 可以使用之前的版本。默認(rèn)值可以是git label, branch name or commit id。可以使用多個(gè)Label,多個(gè)Label可以使用逗號分隔 # label: # true: 如果訪問配置中心失敗,則停止啟動(dòng)服務(wù) fail-fast: true # 配置重試,默認(rèn)是重試6次,最初是延遲1s再次重試,如果再失敗,則延遲1.1*1s、1.1*1.1*1s、… 。可以使用這個(gè)配置 retry: initial-interval: 2000 # 最多重試次數(shù) max-attempts: 6 # 最大重試間隔 max-interval: 4000 # 每次重試時(shí)間是之前的倍數(shù) multiplier: 1.2
Spring Cloud Config 的客戶端會(huì)預(yù)先加載很多其他信息,然后再開始連接 Config Server 進(jìn)行屬性的注入。當(dāng)我們構(gòu)建的應(yīng)用較為復(fù)雜的時(shí)候,可能在連接 Config Server 之前花費(fèi)較長的啟動(dòng)時(shí)間,而在一些特殊場景下,我們又希望可以快速知道當(dāng)前應(yīng)用是否能順利地從 Config Server 獲取到配置信息,這對在初期構(gòu)建調(diào)試環(huán)境時(shí),可以減少很多等待啟動(dòng)的時(shí)間。
首先如果我們不啟動(dòng)服務(wù)端 Config-Server,直接啟動(dòng)客戶端應(yīng)用時(shí) 如果未配置spring.cloud.config.fail-fast=true
這個(gè)參數(shù),在配置加載報(bào)錯(cuò)之前,客戶端應(yīng)用便已經(jīng)加載了很多內(nèi)容,比如 Controller 的請求等。
如果配置了spring.cloud.config.fail-fast=true
參數(shù),啟動(dòng)客戶端后前置的加載內(nèi)容會(huì)少很多,很快就報(bào)錯(cuò)。這樣有效避免了當(dāng) Config-server 配置有誤時(shí),不需要多等待前置的一些加載時(shí)間,實(shí)現(xiàn)了快速返回失敗信息。
「這個(gè)就是我們說的請求配置失敗快速響應(yīng)!!!」
有時(shí)可能因?yàn)榫W(wǎng)絡(luò)波動(dòng)等其他間歇性原因?qū)е逻B接失敗,Config 客戶端還提供了重試功能,避免一些間歇性問題引起的失敗導(dǎo)致客戶端應(yīng)用服務(wù)啟動(dòng)的情況。
要實(shí)現(xiàn)這個(gè)功能,首先我們要在在客戶端的**「pom.xml」**中增加 spring-retry 和 spring-boot-starter-aop 依賴:
<dependency> <groupId>org.springframework.retry</groupId> <artifactId>spring-retry</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency>
然后配置了失敗快速響應(yīng)參數(shù)即可。
spring.cloud.config.fail-fast=true
重點(diǎn)配置解讀。
spring.cloud.config.retry.multiplier
:初始重試間隔時(shí)間(單位為毫秒),默認(rèn)值為 1000 毫秒
spring.cloud.config.retry.initial-interval
:下一間隔的乘數(shù),默認(rèn)為 1.1(當(dāng)最初間隔為 1000 毫秒時(shí),下一次失敗的間隔為 1100 毫秒)
spring.cloud.config.retry.max-interval
:最大間隔時(shí)間,默認(rèn)為 2000 毫秒
spring.cloud.config.retry.max-attempts
:最大重試此時(shí),默認(rèn)為 6 次
現(xiàn)在我們思考下這個(gè)問題:
如果在服務(wù)運(yùn)行過程中,我們需要將驗(yàn)證碼的失效時(shí)間從1分鐘調(diào)整為2分鐘,那么服務(wù)端如何在不重啟服務(wù)的情況下就能使修改的配置動(dòng)態(tài)生效呢?
這就是我們接下來要說的**「動(dòng)態(tài)刷新」**
實(shí)現(xiàn)動(dòng)態(tài)刷新配置有兩種方式
使用Actuator
使用Spring Cloud Bus(后續(xù)會(huì)有專文介紹,再次不做講解)
接下來我們就來使用Actuator來是實(shí)現(xiàn)動(dòng)態(tài)刷新配置
首先我們在客戶端的 pom.xml 中新增 spring-boot-starter-actuator 監(jiān)控模塊
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
?
spring-boot-starter-actuator 監(jiān)控模塊中包含了 /refresh 端點(diǎn)的實(shí)現(xiàn),該端點(diǎn)將用于實(shí)現(xiàn)客戶端應(yīng)用配置信息的重新獲取與刷新。
?
接著編輯 application.properties 文件,添加如下配置開啟 /refresh 端點(diǎn):
management.endpoints.web.exposure.include=refresh
很簡單到這兒客戶端改造就結(jié)束了,我們只需要重啟客戶端,然后修改git中的配置信息,在重新獲取配置信息我們就會(huì)發(fā)現(xiàn)已經(jīng)配置信息已經(jīng)修改了。
我們使用 /actuator/env 與 /actuator/refresh 兩個(gè)接口可以實(shí)現(xiàn)單個(gè)服務(wù)實(shí)例配置的動(dòng)態(tài)更新,但在微服務(wù)架構(gòu)中,服務(wù)實(shí)例可能達(dá)幾十甚至幾百個(gè),一個(gè)個(gè)調(diào)用來做動(dòng)態(tài)更新就有點(diǎn)太不方便了。
到此,關(guān)于“選擇Spring Cloud Config作為配置中心的原因是什么”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
網(wǎng)頁標(biāo)題:選擇SpringCloudConfig作為配置中心的原因是什么
網(wǎng)站網(wǎng)址:http://vcdvsql.cn/article18/jhjpgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、網(wǎng)站收錄、面包屑導(dǎo)航、虛擬主機(jī)、標(biāo)簽優(yōu)化、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)