目錄
1.環境介紹
這一篇文章中我們終於沒有新工程要建了,主要是對現有的工程進行改造。在傳統的開發中,我們可能會把用戶、機構、資源、權限這些比較通用的東西抽取出來做一個底層平台,但是在spring cloud的世界里,所有的都是服務;所有的服務都可以集群部署。
2.配置中心服務化
2.1 改造mirco-service-spring-config
因為我們之前在git上上傳的配置目錄也叫mirco-service-config,所以我把之前的配置中心工程改為了mirco-service-spring-config。
- 為“mirco-service-spring-config”工程的pom文件中加入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
- 配置文件中加入
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/
- 為啟動文件加入@EnableDiscoveryClient注解
2.2 改造mirco-service-provider、mirco-service-consumer
主要是配置文件的改動,改動后的bootstrap.yml配置文件如下
spring:
cloud:
config:
discovery:
service-id: service-config-server #新加入的配置
enabled: true #打開配置文件從注冊中心獲取
#uri: http://localhost:7001/
profile: test
name: provider
label: master
eureka:
client:
service-url:
defaultZone: http://localhost:9001/eureka/
因為這里面要從注冊中心找到配置中心,再從配置中心找配置文件,而bootstrap.yml文件啟動的時間比較早,所以這里一定要加入注冊中心的地址。用同樣的方法改造mirco-service-consumer。至此,改造完成。
3. 配置中心實時刷新
我們這里面以mirco-service-consumer為例。
3.1 加入依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
這里的actuator之前在第一章的視頻里面講過,這是一個用來做應用健康檢查的組件,同時也可以做應用配置的刷新。
3.2 加入配置
- 為了方便演示,我們就直接在bootstrap.yml文件中加入如下配置:
management:
endpoints:
web:
exposure:
include: "*"
這個配置的意思是放開actuator相關的目錄限制,沒放開之前http://localhost:8002/actuator/env是看不到東西的,能看出說明配置成功。
- 在MyFristConsumerController上加入@RefreshScope注解,只要類上加了@RefreshScope注解,並且類中有配置文件相關的變量,在應用配置刷新時,都會被更新。
3.3 測試
- 訪問http://localhost:8002/consumerHelloWorld?name=rose,看到我們的port是8002。
- 修改github上的consumer.yml,將port改為8003。
- 使用"curl -X POST http://localhost:8002/actuator/refresh"刷新配置。
- 重復第一個步驟,可以看到port變為8003。
- 由於我們這里改的是應用服務的端口,而我們刷新后,在應用中的參數配置確實變了,但訪問端口還是8002,說明這個刷新配置也是有局限的,已啟動的應用實際訪問端口不會變。但下次啟動時會變。