三分钟让你快速了解Spring Cloud Config分布式配置

引言

很明显,在面向服务开发的分布式架构中,我们如果服务的数量非常多,且配置文件分散在不同的微服务项目中并且管理不方便。那么,为了方便配置文件集中管理,需要分布式配置中心组件。

1、分布式配置

在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库(GitHub、码云)。

三分钟让你快速了解Spring Cloud Config分布式配置

这里请注意:配置中心本质上也是一个微服务,同样需要注册到Eureka服务注册中心!

2、配置步骤

本文以码云为例子,创建一个配置仓库,将配置文件放置于配置仓库中。

2.1 新建仓库

三分钟让你快速了解Spring Cloud Config分布式配置

2.2 创建仓库内容

这里我已经创建过了,可以根据自己的需要来即可。

三分钟让你快速了解Spring Cloud Config分布式配置

2.3 创建配置文件

在新建的仓库中创建需要被统一管理的配置文件。

配置文件的命名方式:

{application}-{profile}.yml 或 {application}-{profile}.properties
  • application为应用名称
  • profile用于区分开发环境,测试环境、生产环境等

我这里将bill-service工程的配置文件application.yml文件的内容复制作为bill-dev.yml文件的内容,具体配置如下图所示:

三分钟让你快速了解Spring Cloud Config分布式配置

这里我的user-dev.yml,就是用户微服务开发环境下使用的配置文件。

最后配置如下:

三分钟让你快速了解Spring Cloud Config分布式配置

2.4 搭建配置中心的微服务内容

1、创建服务并添加依赖如下:

<dependencies>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.cloud</groupId>
		<artifactId>spring-cloud-config-server</artifactId>
	</dependency>
</dependencies>

前面说过要注册服务。

2、启动类

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer //开启配置服务
public class ConfigServerApplication {
	public static void main(String[] args) {
		SpringApplication.run(ConfigServerApplication.class, args);
	}
}

3、配置文件

server:
	port: 12000
spring:
	application:
		name: config-server
	cloud:
		config:
			server:
				git:
					uri: https://gitee.com/xiaoaifu20/my-config.git
eureka:
	client:
	service-url:
		defaultZone: http://127.0.0.1:10000/eureka

上述的 spring.cloud.config.server.git.uri 是在码云创建的仓库地址,这里要修改为我们自己创建的仓库地址。

4、启动测试

三分钟让你快速了解Spring Cloud Config分布式配置

2.5 获取配置中心的配置

前面已经完成了配置中心微服务的搭建,下面我们就需要改造一下用户微服务 user-service ,配置文件信息不再由微服务项目提供,而是从配置中心获取。

1、添加依赖

<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

2、修改配置

spring:
	cloud:
		config:
			# 要与仓库中的配置文件的application保持一致
			name: user
			# 要与仓库中的配置文件的profile保持一致
			profile: dev
			# 要与仓库中的配置文件所属的版本(分支)一样
			label: master
			discovery:
				# 使用配置中心
				enabled: true
				# 配置中心服务名
				service-id: config-server
eureka:
	client:
		service-url:
			defaultZone: http://127.0.0.1:10000/eureka

后续的目录如下:

三分钟让你快速了解Spring Cloud Config分布式配置

这里说明几点:

  • 我这儿创建的bootstrap.yml文件也是Spring Boot的默认配置文件
  • application.yml和bootstrap.yml虽然都是Spring Boot的默认配置文件,但是定位却不相同。
  • bootstrap.yml文件相当于项目启动时的引导文件,内容相对固定。而application.yml文件是微服务 的一些常规配置参数,变化比较频繁。

3、启动测试

启动测试成功后,注册中心能够检测到user-service内容

总结

我们完成上面简单的配置,那么带着以下问题来想想,如果git配置文件需要更改,那么服务该如何准时接收呢?后续就是对Bus总线的理解和实现了。谢谢大家的阅读。

上一篇:分布式事务系列---【配置 Seata-Client】


下一篇:SpringBoot项目配置文件外置