一、Spring Cloud Config簡介
在分布式系統中,由于服務數量巨多,為了友善服務配置檔案統一管理,實時更新,是以需要分布式配置中心元件。在Spring Cloud中,有分布式配置中心元件spring cloud config ,它支援配置服務放在配置服務的記憶體中(即本地),也支援放在遠端Git倉庫中。在spring cloud config 元件中,分兩個角色,一是config server,二是configclient。
Config Server是一個可橫向擴充、集中式的配置伺服器,它用于集中管理應用程式各個環境下的配置,預設使用Git存儲配置檔案内容,也可以使用SVN存儲,或者是本地檔案存儲。
Config Client是Config Server的用戶端,用于操作存儲在Config Server中的配置内容。
Spring Cloud Config為分布式系統中的外部配置提供伺服器和用戶端支援。友善部署與運維。微服務在啟動時會請求Config Server擷取配置檔案的内容,請求到後再啟動容器。
優點:
- 集中管理配置檔案
- 不同環境不同配置,動态化的配置更新
- 運作期間,不需要去伺服器修改配置檔案,服務會想配置中心拉取自己的資訊
- 配置資訊改變時,不需要重新開機即可更新配置資訊到服務
- 配置資訊以 rest 接口暴露
二、配置中心實作
2.1 将配置檔案送出到碼雲
(1)浏覽器打開gitee.com,注冊使用者 ,注冊後登陸碼雲管理控制台
(2)建立項目 “你的項目名” (點選右上角的加号 ,下拉菜單選擇建立項目)
(3)上傳配置檔案,将demo_base工程的application.yml改名為base-dev.yml後上傳到倉庫
(4) 點選克隆/下載下傳按鈕 複雜連結位址 備用
2.2 配置服務端
(1)右鍵點選父工程>new>module建立demo_config子產品
(2)pom.xml引入依賴
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
(3)編寫配置檔案application.yml,uri 處填寫之前複制的連結位址
server:
port: 9999
spring:
application:
name: demo-config
cloud:
config:
server:
git:
uri: https://gitee.com/kannaoku0/springcloud_demo.git
username: 你的賬号 #如果建立的倉庫是公開的,則不需要設定賬戶和密碼
password: 你的密碼
(4)建立啟動類ConfigServerApplication,添加注解 @EnableConfigServer
(5)啟動demo_config,浏覽器輸入 http://localhost:9999/base-dev.yml,能夠看到配置内容
到此,我們的服務端demo_config就配置完成了,接下來配置用戶端
2.3 配置用戶端
(1)在demo_base工程pom.xml添加依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
(2)resources目錄下建立 bootstrap.yml,并删除原來的 application.yml
配置中的 name: base profile: dev label: master是和git上面的目錄對應起來的
(3)測試 依次啟動 Eureka,demo_config再啟動demo_base ,按之前的方式通路,浏覽器輸入 http://localhost:9001/test/111
再次觀察demo_based的配置檔案,并沒有端口,服務名等,說明在啟動時他是通過demo_config 從Git上面将配置檔案擷取到了,自此,我們的配置中心 Spring Cloud Config 配置成功。