SpringCloud使用集中配置組件Config規(guī)避信息泄露
Spring Cloud Config簡(jiǎn)介

在分布式系統(tǒng)中,由于應(yīng)用被拆分成數(shù)量巨多的小服務(wù),另外應(yīng)用也部署在不同的環(huán)境之中,如dev、int、uat、prod等,各個(gè)環(huán)境的配置不盡相同,為了方便配置文件統(tǒng)一管理,所以需要分布式配置中心組件。
配置文件統(tǒng)一管理之后,各個(gè)環(huán)境只能獲取對(duì)應(yīng)環(huán)境的配置信息,開(kāi)發(fā)人員也只能獲取到開(kāi)發(fā)環(huán)境的配置信息,就能在一定程度上避免敏感信息的泄露。
Spring Cloud Config作為分布式配置中心組件 ,包括Config 服務(wù)端,和Config 客戶端。
- Config Server是一個(gè)可橫向擴(kuò)展、集中式的配置服務(wù)器,它用于集中管理應(yīng)用程序各個(gè)環(huán)境下的配置,默認(rèn)使用Git存儲(chǔ)配置文件內(nèi)容,也可以使用SVN存儲(chǔ),或者是本地文件存儲(chǔ)。
- Config Client是Config Server的客戶端,用于操作存儲(chǔ)在Config Server中的配置內(nèi)容。微服務(wù)在啟動(dòng)時(shí)會(huì)請(qǐng)求Config Server獲取配置文件的內(nèi)容,請(qǐng)求到后再啟動(dòng)容器。
Config實(shí)戰(zhàn)
1、創(chuàng)建項(xiàng)目config服務(wù)端
創(chuàng)建子模塊config-server,pom.xml引入eureka-client 和config-server的依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
2、創(chuàng)建配置文件
新建config-server自身的配置文件application.yml
server:
port: 8005
spring:
application:
name: config-server
profiles:
active: native #使用本地文件
cloud:
config:
server:
native:
search-locations: classpath:/repo #本地配置倉(cāng)庫(kù)地址
# git:
# uri: https://gitee.com/xxxx/xxxxx.git
eureka:
client:
service-url:
defaultZone: http://localhost:8001/eureka/
這里我們以使用本地配置倉(cāng)庫(kù)地址為例,spring.profiles.active設(shè)置為native,配置倉(cāng)庫(kù)路徑為repo文件夾,所以我們?cè)趓esources文件下創(chuàng)建repo文件夾,并創(chuàng)建新的一個(gè)configclient-dev.yml的文件,內(nèi)容如下:
server:
port: 8007eureka:
client:
service-url:
defaultZone: http://localhost:8001/eureka/
feign:
hystrix:
enabled: true
logging:
pattern:
console: '%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread] %logger{15} - %msg%n'
3、新建啟動(dòng)類
@EnableConfigServer //開(kāi)啟配置服務(wù)
@EnableEurekaClient
@SpringBootApplication
public class ConfitServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfitServerApplication.class, args);
}
}注意增加@EnableConfigServer注解,表示這是個(gè)配置中心服務(wù)端。
4、創(chuàng)建配置中心客戶端
服務(wù)端開(kāi)發(fā)完成后,我們?cè)傩陆ㄒ粋€(gè)客戶端config-client項(xiàng)目,引入如下依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
與服務(wù)端不同的是,客戶端的配置文件我們創(chuàng)建bootstrap.yml文件
spring:
cloud:
config:
name: configclient
profile: dev
label: master
discovery:
enabled: true
service‐id: config-servereureka:
client:
service‐url:
defaultZone: http://localhost:8001/eureka/
注意spring.cloud.config.name與服務(wù)端中的文件名稱對(duì)應(yīng),spring.cloud.config.profile與文件名-后面的環(huán)境代碼對(duì)應(yīng),配置文件的命名規(guī)則是 {application}/{profile}[/{label}] 。
當(dāng) Config Client 去訪問(wèn) Config Server 時(shí),spring.cloud.config.name 、spring.cloud.config.profile 以及 、spring.cloud.config.label 的值分別對(duì)應(yīng)上面三個(gè)占位符,如果配置了spring.cloud.config.name,那么就取spring.cloud.config.name,如果沒(méi)有配置就取 spring.application.name,通過(guò)靈活使用 {application} 、{profile} 、{label} 三個(gè)占位符,就可以來(lái)動(dòng)態(tài)地控制 client 從 server 所訪問(wèn)的倉(cāng)庫(kù)!
然后編寫(xiě)客戶端啟動(dòng)類:
@EnableDiscoveryClient
@EnableFeignClients
@EnableEurekaClient
@SpringBootApplication
public class ConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication.class, args);
}
}
5、驗(yàn)證
我們分別啟動(dòng)registry項(xiàng)目以及config-server,config-client兩個(gè)服務(wù),這時(shí),就會(huì)發(fā)現(xiàn),config-client服務(wù)拉取了config-server中對(duì)應(yīng)的配置文件。
總結(jié)
這篇文章我們介紹了一下 Spring Cloud Config 的一個(gè)基本使用,包括 Spring Cloud Config Server 和 Spring Cloud Config Client 的項(xiàng)目搭建。通過(guò)環(huán)境的配置隔離,避免了敏感配置信息的泄露。
有人可能就說(shuō)了,我本地把拉取dev的配置改成拉取prod不一樣也能拿到其他環(huán)境的信息嗎?下一篇文章我們介紹如何通過(guò) Config Server 的安全管理、配置文件的加密等機(jī)制真正做到這一點(diǎn),一起期待吧!
到此這篇關(guān)于SpringCloud使用集中配置組件Config規(guī)避信息泄露的文章就介紹到這了,更多相關(guān)SpringCloud集中配置組件Config內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringCloud Config統(tǒng)一配置中心問(wèn)題分析解決與客戶端動(dòng)態(tài)刷新實(shí)現(xiàn)
- Springcloud Config配置中心使用與相關(guān)介紹
- SpringCloud微服務(wù)應(yīng)用config配置中心詳解
- SpringCloud高可用配置中心Config詳解
- SpringCloud Config配置中心原理以及環(huán)境切換方式
- SpringCloud Config使用配置方法
- SpringCloud微服務(wù)之Config知識(shí)總結(jié)
- SpringCloud Config分布式配置中心使用教程介紹
相關(guān)文章
圖文講解Java中實(shí)現(xiàn)quickSort快速排序算法的方法
這篇文章主要介紹了Java中實(shí)現(xiàn)quickSort快速排序算法的方法,文章最后還介紹了一種單向掃描的實(shí)現(xiàn)方法,需要的朋友可以參考下2016-05-05
java訪問(wèn)者模式的靜態(tài)動(dòng)態(tài)及偽動(dòng)態(tài)分派徹底理解
這篇文章主要為大家介紹了java訪問(wèn)者模式的靜態(tài)動(dòng)態(tài)及偽動(dòng)態(tài)分派徹底理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
Java多線程編程實(shí)現(xiàn)socket通信示例代碼
這篇文章主要介紹了Java多線程編程實(shí)現(xiàn)socket通信示例代碼,詳細(xì)介紹了tcp、udp協(xié)議,以及基于socket的Java網(wǎng)絡(luò)編程的相關(guān)內(nèi)容及代碼示例,代碼測(cè)試可用,供大家參考。2017-10-10
java中實(shí)現(xiàn)分頁(yè)的幾種常見(jiàn)方式總結(jié)
在項(xiàng)目中經(jīng)常會(huì)查詢大量數(shù)據(jù),這就要用到分頁(yè)展示,下面這篇文章主要給大家介紹了關(guān)于java中實(shí)現(xiàn)分頁(yè)的幾種常見(jiàn)方式,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12

