简介
在一个分布式微服务集群中,可能会有成百上千的服务,每个服务都有大量的配置,这些配置散落在各个服务,造成难以维护,所以,我们需要一个配置中心来统一管理这些配置,Spring Cloud Config 可以实现所有服务的配置管理。
实例
1、创建 maven 工程
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/>
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2、搭建配置中心服务 service-config-server
添加 maven 依赖
<parent>
<groupId>com.hly</groupId>
<artifactId>06-spring-cloud-config</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
</dependencies>
application.yml
server:
port: 8769
spring:
cloud:
config:
server:
native:
search-locations: classpath:/share
profiles:
active: native
application:
name: service-config-server
如果我们想把配置信息存储到 git 上,我们还可以这样配置,git 仓库地址如下
https://gitee.com/Sirius_hly/respo/blob/master/share/config-client-dev.yml
server:
port: 8769
spring:
cloud:
config:
server:
git:
# git环境地址
uri: https://gitee.com/Sirius_hly/respo.git
# 搜索目录
search-paths:
- share
# 读取分支
label: master
application:
name: service-config-server
配置信息可以存放到项目本地,也可以存放到 github 上,在这里配置中心里,我们创建了一个 config-client-dev.yml 文件,来存放另一个客户端服务的配置信息。
server:
port: 8762
hly: hly version 1
SpringBoot 启动类
@SpringBootApplication
@EnableConfigServer
public class ServiceConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceConfigServerApplication.class, args);
}
}
3、搭建客户端 service-config-client
添加 maven 依赖
<parent>
<groupId>com.hly</groupId>
<artifactId>06-spring-cloud-config</artifactId>
<version>1.0-SNAPSHOT</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
<version>2.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
添加 bootstrap.yml 配置文件,在SpringBoot 中 ,boootstrap.yml 的执行优先级高于applicatiom.yml,在这里我们指明了配置中心的地址为 8769
spring:
application:
name: config-client
cloud:
config:
uri: http://localhost:8769
fail-fast: true
profiles:
active: dev
SpringBoot 启动类
@SpringBootApplication
@RestController
public class ServiceConfigClientApplication {
public static void main(String[] args) {
SpringApplication.run(ServiceConfigClientApplication.class, args);
}
@Value("${hly}")
String hly;
@RequestMapping(value = "/hly")
public String hi(){
return hly;
}
}
演示
1、先启动配置中心,然后再启动客户端。
2、访问 http://localhost:8762/hly
显示 hly version 1 则可以看到服务从配置中心获取到了配置。
这是Spring Cloud Config 的基本使用,后面还会写一篇关于 apollo 配置中心的使用。
代码下载
06-spring-cloud-config:https://github.com/huangliangyun/Spring-Cloud-Finchley
关于
我的 Github:Github
CSDN: CSDN
个人网站: sirius 的博客
E-mail: [email protected]