1. 程式人生 > >SpringCloud 分散式配置Config Git

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

,它支援配置服務放在配置服務的記憶體中(即本地),也支援放在遠端Git倉庫中。在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/ 進行測試