Spring Cloud(4)——分散式配置中心
一、簡介
Spring Cloud Config是一個配置管理工具包,讓你可以把配置放到遠端伺服器,集中化管理叢集配置,目前支援本地儲存、Git以及Subversion。
Spring Cloud Config分為兩部分
- config-server:配置服務端,負責管理配置資訊
- config-client:配置客戶端,通過呼叫server端暴露的介面來換取配置資訊
二、專案例項
建立maven工程microservice-config-server
1、在pom.xml中加入以下依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.4.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<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>Camden.SR5</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、建立ConfigServerApplication.java
package com.baibei.config.server;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
/**
* @author: 會跳舞的機器人
* @email:2268549298@qq.com
* @date: 17/2/19 下午2:35
* @description:分散式配置中心啟動主類
*/
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
新增@EnableConfigServer註解開啟Config Server
3、在resource資料夾下建立application.properties檔案
#config-server對外提供的埠
server.port=9001
#git repo的url地址
spring.cloud.config.server.git.uri=https://git.oschina.net/dreyer/microservice-config-repo.git
#指定搜尋路徑,config-server會自動搜尋根目錄和指定目錄(逗號分隔)下的檔案
spring.cloud.config.server.git.searchPaths=api,backend
#有讀取許可權的git使用者
spring.cloud.config.server.git.username=username
#git使用者密碼
spring.cloud.config.server.git.password=password
4、服務端驗證
為了完成服務端的驗證,我們需要在git上建立一個專案作為配置倉庫,目錄結構如下:
. ├── api │ ├── business-dev.properties │ ├── business-prod.properties │ └── business-test.properties ├── exchange │ ├── business-dev.properties │ ├── business-prod.properties │ └── business-test.properties ├── component-dev.properties ├── component-prod.properties ├── component-test.properties ├── database-dev.properties ├── database-prod.properties ├── database-test.properties
接下來,我們就可以通過URL來訪問到我們配置的內容了。
例如我們可以通過http://localhost:9001/database-dev.properties
來訪問database-dev.properties檔案的內容,也可以通過http://localhost:9001/database/dev
來訪問
URL與配置檔案的對映關係如下:
- /{application}/{profile}[/{label}] 如: http://localhost:9001/database/dev
- /{application}-{profile}.yml 如: http://localhost:9001/database-dev.yml
- /{label}/{application}-{profile}.yml 如: http://localhost:9001/f-branch/database-dev.yml (f-branch分支下的database-dev.yml檔案)
- /{application}-{profile}.properties 如: http://localhost:9001/database-dev.properties (不指定分支預設是MASTER分支)
- /{label}/{application}-{profile}.properties 如: http://localhost:9001/f-branch/database-dev.properties
例如database-dev.properties 對應{application}-{profile}.properties, {application} 就是 database, {profile}就是dev。
{label}對應git上不同的分支,預設為master。
5.使用本地配置
開發人員在本機進行開發時,可能會用到自已本地的一些配置資訊,如果把這些配置提交至git上的話,又會影響到其他同事的開發,那麼在這種場景下,開發人員是可以選擇使用本地配置,而不是git上的配置資訊的,做法也很簡單,只需要在config-server的application.properties中新增spring.profiles.active=native,然後把相關的配置檔案放在src/main/resource下即可
6、配置中心客戶端
以 Spring Cloud(2)—服務提供者 中的microservice-provider-user作為配置中心客戶端
6.1. 在pom.xml中增加Config Server所需要的jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
6.2. 建立bootstrap.properties來指定Config Server配置,內容如下:
spring.cloud.config.uri=http://localhost:9001/
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.name=database,component,business
內容含義如下:
- spring.application.name:對應前配置檔案中的{application}部分
- spring.cloud.config.profile:對應前配置檔案中的{profile}部分
- spring.cloud.config.label:對應前配置檔案的git分支
- spring.cloud.config.uri:配置中心的地址
以上工作完成後,在程式碼中我們就可以使用@Value註解來呼叫相關的配置資訊,
@Value("${datasource.url}")
private String dataSourceUrl;
配置中心完成之後,在microservice-provider-user工程的application.properties中的資料庫配置就可以換為
spring.datasource.url=${datasource.url}
spring.datasource.username=${datasource.username}
spring.datasource.password=${datasource.password}
在配置中心客戶端啟動的時候,我們也可以看到相關的日誌資訊輸出
2017-02-19 15:17:28.220 INFO 11206 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Fetching config from server at: http://localhost:9001/
2017-02-19 15:17:29.565 INFO 11206 --- [ main] c.c.c.ConfigServicePropertySourceLocator : Located environment: name=database,component,business, profiles=[dev], label=master, version=a9f8f18e682a03f4d7f046c754472f394313fa82, state=null
2017-02-19 15:17:29.565 INFO 11206 --- [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: CompositePropertySource [name='configService', propertySources=[MapPropertySource [name='configClient'], MapPropertySource [name='https://git.oschina.net/dreyer/microservice-config-repo.git/database-dev.properties']]]
2017-02-19 15:17:29.595 INFO 11206 --- [ main] c.b.p.user.UserProviderApplication : No active profile set, falling back to default profiles: default
附專案目錄截圖:
相關文章
- 基於Spring Cloud搭建分散式配置中心SpringCloud分散式
- Spring Cloud(八)高可用的分散式配置中心 Spring Cloud ConfigSpringCloud分散式
- Spring Cloud實戰系列(六) - 分散式配置中心Spring Cloud ConfigSpringCloud分散式
- Spring Cloud Config 分散式配置中心【Finchley 版】SpringCloud分散式
- Spring Cloud構建微服務架構分散式配置中心SpringCloud微服務架構分散式
- 整合spring cloud雲架構 -高可用的分散式配置中心SpringCloud架構分散式
- Spring Cloud構建微服務架構:分散式配置中心(加密解密)SpringCloud微服務架構分散式加密解密
- Spring Cloud(九)高可用的分散式配置中心 Spring Cloud Config 整合 Eureka 服務SpringCloud分散式
- 非spring boot (即spring) 使用/整合 Spring cloud Config 分散式配置中心Spring BootCloud分散式
- spring cloud分散式微服務-配置中心git示例SpringCloud分散式微服務Git
- Spring Cloud Spring Boot mybatis 企業分散式微服務雲(六)分散式配置中心【Dalston版】CloudSpring BootMyBatis分散式微服務
- 分散式 配置中心分散式
- (四)spring cloud微服務分散式雲架構-配置中心和訊息匯流排(配置中心終結版)SpringCloud微服務分散式架構
- 分散式之配置中心分散式
- (五)spring cloud微服務分散式雲架構-配置中心服務化和高可用SpringCloud微服務分散式架構
- SpringCloud分散式微服務雲架構 第六篇: 分散式配置中心(Spring Cloud Config)SpringGCCloud分散式微服務架構
- Spring Cloud Config 配置中心SpringCloud
- spring cloud 配置中心git和本地地址配置SpringCloudGit
- 分散式配置中心之思考分散式
- Spring 4 + ZooKeeper 配置中心Spring
- Spring Cloud構建統一配置中心SpringCloud
- Spring Cloud Alibaba(5)---Nacos(配置中心)SpringCloud
- 整合spring cloud雲架構 --spring cloud分散式系統中實現分散式鎖SpringCloud架構分散式
- 微服務之分散式配置中心微服務分散式
- Apollo 分散式配置中心(補充)分散式
- 《springcloud 三》分散式配置中心SpringGCCloud分散式
- 分散式配置中心客戶端分散式客戶端
- spring cloud微服務分散式雲架構Spring Cloud ZuulSpringCloud微服務分散式架構Zuul
- spring cloud微服務分散式雲架構-Spring Cloud BusSpringCloud微服務分散式架構
- spring cloud微服務分散式雲架構-Spring Cloud 分散式的五大重點SpringCloud微服務分散式架構
- Spring Cloud Alibaba(4)---Nacos(註冊中心)SpringCloud
- Spring Cloud Config 實現配置中心SpringCloud
- 老司機之路——Spring Cloud 配置中心的基本用法與配置中心叢集SpringCloud
- 業餘草 SpringCloud教程 | 第六篇: 分散式配置中心(Spring Cloud Config)(Finchley版本)SpringGCCloud分散式
- spring cloud微服務分散式雲架構 - Spring Cloud簡介SpringCloud微服務分散式架構
- SpringCloud之分散式配置中心(六)SpringGCCloud分散式
- spring cloud網際網路分散式微服務雲平臺規劃分析--spring cloud服務統一配置中心SpringCloud分散式微服務
- Spring Cloud Consul:服務治理與配置中心SpringCloud