為什么需要使用配置中心
1射赛、服務(wù)配置的現(xiàn)狀
2、常用的配置管理解決方案的缺點(diǎn)
3、為什么要使用 spring cloud config 配置中心
4、spring cloud config 配置中心阻桅,它解決了什么問題
編寫配置中心入門案例
編寫配置中心的服務(wù)端
添加依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
application配置
#配置服務(wù)名及端口
spring.application.name=config-server
server.port=9020
#設(shè)置服務(wù)注冊(cè)中心地址
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/
#Git 配置
#倉(cāng)庫(kù)地址
spring.cloud.config.server.git.uri=https://gitee.com/zhao2020/SpringCloudConfig
#spring.cloud.config.server.git.username=賬戶名
#spring.cloud.config.server.git.password=或密碼
啟動(dòng)類添加@EnableConfigServer注解
@EnableEurekaClient
@EnableConfigServer
@SpringBootApplication
public class ConfigServerlication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerlication.class, args);
}
}
在git中上傳properties配置文件測(cè)試:通過Spring cloud config server可以直接獲取配置文件內(nèi)容
配置文件的命名規(guī)則與訪問
編寫配置中心的客戶端(就是我們的服務(wù))
依賴
<!--config client客戶端的依賴-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!--熱部署的依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application配置
#設(shè)置服務(wù)名稱和端口
spring.application.name=config-client
server.port=9021
#設(shè)置服務(wù)注冊(cè)中心地址
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/
#默認(rèn) false,這里設(shè)置 true,表示開啟讀取配置中心的配置
spring.cloud.config.discovery.enabled=true
#對(duì)應(yīng) eureka 中的配置中心 serviceId,默認(rèn)是 configserver
spring.cloud.config.discovery.serviceId=config-server
#指定環(huán)境
spring.cloud.config.profile=dev
#git 標(biāo)簽
spring.cloud.config.label=master
#springboot 默認(rèn)開啟了權(quán)限攔截 會(huì)導(dǎo)致 /refresh 出現(xiàn) 401兼都,拒絕訪問
management.security.enabled=false
編寫一個(gè)方法進(jìn)行測(cè)試
@RestController
@RefreshScope //熱部署時(shí)刷新作用域中的數(shù)據(jù)
public class TestController {
@Value("${e-book}")
String msg;
@RequestMapping("showMsg")
public String showMsg(){
return msg;
}
}
測(cè)試,獲取到了遠(yuǎn)程git倉(cāng)庫(kù)中的properties文件中的內(nèi)容配置中心原理
本地服務(wù)啟動(dòng)后嫂沉,默認(rèn)會(huì)從本地git倉(cāng)庫(kù)(Spring config server)中獲取配置文件,本地git倉(cāng)庫(kù)會(huì)從遠(yuǎn)程git倉(cāng)庫(kù)獲取配置文件扮碧,并緩存到本地趟章。當(dāng)本地服務(wù)進(jìn)行重啟(或利用熱部署刷新項(xiàng)目)后,將會(huì)重新從遠(yuǎn)程git倉(cāng)庫(kù)獲取配置文件慎王。
利用cURL發(fā)送POST請(qǐng)求進(jìn)行熱部署加載遠(yuǎn)程Git倉(cāng)庫(kù)的配置文件
注意蚓土,X和POST一定要是大寫
curl 127.0.0.1:9021/refresh -X POST