第八章 分布式配置中心: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
第八章 分布式配置中心:Spring Cloud Config