springcloud學習之路: (五) springcloud集成SpringCloudConfig分佈式配置中心

SpringCloud全家桶中的分佈式配置中心SpringCloudConfig, 它使用git來管理配置文件, 在修改配置文件後只須要調用一個接口就可讓新配置生效, 很是方便.git

SpringCloudConfig分爲兩部分, 服務端和客戶端, 服務端是用來提供配置文件信息的, 而客戶端是用來使用配置文件信息的, 咱們接下來就開始集成.web

1、SpringCloudConfig服務端

1. 新建一個Modulespring

 2. 選擇springboot工程bootstrap

 3. 起個名字springboot

 4. 選擇配置中心服務端服務器

5.  選擇註冊中心客戶端app

 6. 配置application.properties文件curl

# 服務端口 server.port = 8088 # 填寫註冊中心服務器地址 eureka.client.service-url.defaultZone = http://localhost:8081/eureka
# 註冊配置中心別名 spring.application.name = service-config # 配置存儲地址(git) spring.cloud.config.server.git.uri = https://gitee.com/XXX/spring-cloud-config
# 存儲文件夾 spring.cloud.config.server.git.search-paths = myconfig # git主分支 spring.cloud.config.label = master

7. 配置service-config啓動文件分佈式

// 開啓註冊中心客戶端
@EnableEurekaClient // 開啓配置中心服務器
@EnableConfigServer

 

2、git倉操做

1. 新建git倉spring-boot

 填寫信息

 2. 新建文件夾

 命名文件夾

 3. 新建文件

 寫入信息

文件的命名是有規範的, [服務名稱-環境. properties]不然你的服務器沒法讀取配置文件, 咱們來查看一下service-a的配置文件名稱

 因此咱們的配置文件應該叫

service-objcat-a-dev. properties

 

3、啓動服務訪問

 http://localhost:8088/service-objcat-a-dev.properties

 http://localhost:8088/service-objcat-a-dis.yml

 運行無問題

 

4、SpringCloudConfig服務端

service-a開啓分佈式配置服務

1. 首先在service-a的pom中添加依賴

<!-- 分佈式配置中心客戶端依賴 -->
<dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-config-client</artifactId>
</dependency>

2. 修改配置文件

application.yml修改爲bootstrap.yml這裏說一下, 這兩個名字都是應用的配置文件, 可是bootstrap.yml會先執行, 其次是配置分佈式配置中心服務器的規範就是在bootstrap.yml中配置的, 這倆個配置文件能夠共存, 這裏爲了方便起見, 因此直接就更名了, 咱們繼續

# 分佈式配置中心 cloud: config: profile: dev discovery: enabled: true service-id: service-config

注意別名必定要跟你上面配置服務器的名稱一致, profile千萬不要亂寫, 寫你須要應用配置文件的環境, 還記得咱們的配置文件命名方式嗎 [服務名-環境.yml]

3. 到這裏已經配置完成了, 咱們來寫個接口驗證一下吧!

@Value("${name}") private String name; @RequestMapping("/hello") public String hello() { return name; }

@value就是從配置文件中讀取一個字段, 咱們name這個字段是存在服務端的, 因此若是能夠讀取出來, 就證實分佈式配置中心是能夠用的, 以後咱們來運行一下服務

 訪問接口

http://localhost:8082/hello

4. 動態更改

如今咱們的配置文件還不能作到遠程動態更改, 咱們接下來要作的就是線上刷新字段, 不須要重啓服務器, 咱們首先給service-a導入監控模塊的包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

5. 修改配置文件, 在配置文件中增長以下字段 暴露全部endpoints

management:
  endpoints:
    web:
      exposure:
        include: "*"

6. 在控制器中配置刷新註解@RefreshScope, 只有配置過刷新註解的控制器中的值纔會被刷新.

 7. 重啓服務

 8. 修改git上的配置信息

 9. 再次訪問, 發現沒有任何變化

 10. 這裏須要調用一個刷新接口便可, 注意必定要使用post請求, 可使用命令行或者postman.

命令行: 

curl -X POST http://localhost:8082/actuator/refresh

postman: 

http://localhost:8082/actuator/refresh

 11. 再次訪問接口, 成功

相關文章
相關標籤/搜索