1. 程式人生 > >第八章 分散式配置中心:Spring Cloud Config

第八章 分散式配置中心:Spring Cloud Config

  Spring Cloud Config 是 Spring Cloud 團隊建立的一個全新專案,用來為分散式系統中的基礎設施和微服務應用提供集中化的外部配置支援, 它分為服務端與客戶端兩個部分。 其中服務端也稱為分散式配置中心, 它是一個獨立的微服務應用, 用來連線配置倉庫併為客
戶端提供獲取配置資訊、 加密/解密資訊等訪問介面;而客戶端則是微服務架構中的各個微服務應用或基礎設施, 它們通過指定的配置中心來管理應用資源與業務相關的配置內容,並在啟動的時候從配置中心獲取和載入配置資訊。 Spring Cloud Config 實現了對服務端和客戶端中環境變數和屬性配置的抽象對映, 所以它除了適用於 Spring 構建的應用程式之外,也可以在任何其他語言執行的應用程式中使用。 由於 Spring Cloud Config 實現的配置中心預設採用 Git 來儲存配置資訊, 所以使用 Spring Cloud Config 構建的配置伺服器, 天然就支援對微服務應用配置資訊的版本管理, 並且可以通過 Git 客戶端工具來方便地管理和訪問配置內容

構建配置中心

建立一個基礎的 Spring Boot 工程, 命名為 config-server, 並在 pom.xml 中引入下面的依賴:

<parent> 
  <groupid>org.springframework.boot</groupid> 
  <artifactid>spring-boot-starter-parent</artifactid> 
  <version>l.3.7.RELEASE</version> 
  <rela七ivePath/> <!-- lookup paren七 from repository --> 
</parent> 
<dependencies>   <dependency>     <groupid>org.springframework.cloud</groupid>     <artifactid>spring-cloud-config-server</artifactid>   </dependency> </dependencies>
<dependencyManagement>   <dependencies>     <dependency>       <groupid>org.springframework.cloud</groupid>       <artifactId>spring-cloud-dependencies</artifactId>       <version>Brixton.SRS</version>       <type>pom</type>       <scope>import
</scope>     </dependency>   </dependencies> </dependencyManagement>

建立 Spring Boot 的程式主類, 並新增@EnableConfigServer 註解, 開啟 Spring Cloud Config 的服務端功能

@EnableConfigServer 
@SpringBootApplication 
public class Application { 
public static void main(S七ring [] args) { 
  new SpringApplicationBuilder(Application.class) .web(true
) .run(args)   } }

在application.properties 中新增配置服務的基本資訊以及 Git 倉庫的相關資訊:

spring.applica七ion.name=config-server
server.port=7001 
spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/
spring.cloud.config.server.git.searchPaths=spring_cloud_in_action/config-repo 
spring.cloud.config.server.git.username=username 
spring.cloud.config.server.git.password=password 

其中 Git 的配置資訊分別表示如下內容:

  • spring.cloud.config.server.git.uri: 配置Git 倉庫位置
  • spring.cloud.config.server.git.searchPaths: 配置倉庫路徑下的相對搜尋位置, 可以配置多個
  • spring.cloud.config.server.git.username: 訪問 Git 倉庫的使用者名稱
  • spring.cloud.config.server.git.password: 訪問 Git 倉庫的使用者密碼

客戶端配置對映

建立一個Spring Boot應用, 命名為config-client, 並在pom.xml中引入下述依賴

<parent> 
  <groupid>org.springframework.boot</groupid> 
  <artifactid>spring-boo七-starter-parent</artifactid>
  <version>l.3.7.RELEASE</version> 
  <relativePath/> <!-- lookup parent from repository --> 
</parent> 
<dependencies>   <dependency>     <groupid>org.springframework.boot</groupid>     <artifactid>spring-boot-starter-web</artifactid>   </dependency>   <dependency>     <groupid>org.springframework.cloud</groupid>     <artifactId>spring-cloud-starter-config</artifactId>   </dependency> </dependencies>
<dependencyManagement>   <dependencies>     <dependency>       <groupid>org.springframework.cloud</groupid>       <artifactid>spring-cloud-dependencies</artifactid>       <version>Brixton.SRS</version>       <type>pom</type>       <scope江mport</scope>     </dependency>   </dependencies> </dependencyManagement>

建立Spring Boot的應用主類

@SpringBootApplication 
public class Application { 
public static void main(String[] args) { 
        new SpringApplicationBuilder(Application.class) .web(true) .run(args); 
    }
}

建立 bootstrap.properties 配置, 來指定獲取配置檔案的 config-server位置

//對應配置檔案規則中的{application} 部分
spring.application.name=didispace
//對應配置檔案規則中的 {profile} 部分 spring.cloud.config.profile
=dev
//對應配置檔案規則中的 {label} 部分 spring.cloud.config.label
=master
//配置中心 config-server 的地址 spring.cloud.config.uri=http://localhost:7001/ server.port=7002