SpringCloud 分散式配置Config Git
個人學習SpringCloud系列 分散式配置Config Git篇
Github Link: https://github.com/panjianlong13/SpringBoot-SpringCloud/tree/master/spring-cloud-config-git
隨著線上專案變的日益龐大,每個專案都散落著各種配置檔案,如果採用分散式的開發模式,需要的配置檔案隨著服務增加而不斷增多。某一個基礎服務資訊變更,都會引起一系列的更新和重啟,運維苦不堪言也容易出錯。配置中心便是解決此類問題的靈丹妙藥,實現了配置檔案統一管理,實時更新。在Spring Cloud
中,有分散式配置中心元件spring cloud config
spring cloud config
元件中,分兩個角色,一是config server
,二是config client。
Spring Cloud Config簡介
配置中心提供的核心功能
1.提供服務端和客戶端支援
2.集中管理各環境的配置檔案
3.配置檔案修改之後,可以快速的生效
4.可以進行版本管理
5.支援大的併發查詢
6.支援各種語言
Spring Cloud Config可以完美的支援以上所有的需求。Spring Cloud Config就是我們通常意義上的配置中心,把應用原本放在本地檔案的配置抽取出來放在中心伺服器,從而能夠提供更好的管理、釋出能力。SpringCloudConfig
git svn
中儲存的配置檔案釋出成REST
介面,客戶端可以從服務端REST介面獲取配置。但客戶端並不能主動感知到配置的變化,從而主動去獲取新的配置,這需要每個客戶端通過POST
方法觸發各自的/refresh
。
SpringCloudBus
通過一個輕量級訊息代理連線分散式系統的節點。這可以用於廣播狀態更改(如配置更改)或其他管理指令。SpringCloudBus
提供了通過POST
方法訪問的endpoint/bus/refresh
,這個介面通常由git
的鉤子功能呼叫,用以通知各個SpringCloudConfig
的客戶端去服務端更新配置。
1.Git倉庫Config變動
2.Notify Change via Git WebHook
3.Publish Message to Spring Cloud Bus
4.Notify 相關使用該Config的Application
5.Reload Config
6.通過Config Server Pull Config到本地
Spring Cloud Config實戰
新建兩個SpringBoot專案
1.Config Server
新增依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
Enable Config Server服務
application.properties
spring.application.name=config-server
//Config Server埠號
server.port=8888
//Branch Name
spring.cloud.config.label=master
//Git URI
spring.cloud.config.server.git.uri=https://github.com/panjianlong13/SpringBoot-SpringCloud.git
//Property Path
spring.cloud.config.server.git.search-paths=spring-cloud-config-git
spring.cloud.config.server.git.username=Your Git Username
spring.cloud.config.server.git.password=Your Git Password
遠端倉庫中新建Property檔案
啟動服務後可以通過訪問URL http://localhost:8888/springCloudConfig/dev/master 獲得Config
2.Client Server
新增依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Enable Config Client 從Config獲取Content引數
application.properties
spring.application.name=config-client
//Branch Name
spring.cloud.config.label=master
//使用的Property環境字首
spring.cloud.config.profile=test
//Config Server訪問地址
spring.cloud.config.uri=http://localhost:8080/
//Client Server Port
server.port=8081
啟動服務後訪問URLhttp://localhost:8081/ 進行測試