引言
很明显,在面向服务开发的分布式架构中,我们如果服务的数量非常多,且配置文件分散在不同的微服务项目中并且管理不方便。那么,为了方便配置文件集中管理,需要分布式配置中心组件。
1、分布式配置
在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库(GitHub、码云)。
这里请注意:配置中心本质上也是一个微服务,同样需要注册到Eureka服务注册中心!
2、配置步骤
本文以码云为例子,创建一个配置仓库,将配置文件放置于配置仓库中。
2.1 新建仓库
2.2 创建仓库内容
这里我已经创建过了,可以根据自己的需要来即可。
2.3 创建配置文件
在新建的仓库中创建需要被统一管理的配置文件。
配置文件的命名方式:
{application}-{profile}.yml 或 {application}-{profile}.properties
- application为应用名称
- profile用于区分开发环境,测试环境、生产环境等
我这里将bill-service工程的配置文件application.yml文件的内容复制作为bill-dev.yml文件的内容,具体配置如下图所示:
这里我的user-dev.yml,就是用户微服务开发环境下使用的配置文件。
最后配置如下:
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、启动测试
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
后续的目录如下:
这里说明几点:
- 我这儿创建的bootstrap.yml文件也是Spring Boot的默认配置文件
- application.yml和bootstrap.yml虽然都是Spring Boot的默认配置文件,但是定位却不相同。
- bootstrap.yml文件相当于项目启动时的引导文件,内容相对固定。而application.yml文件是微服务 的一些常规配置参数,变化比较频繁。
3、启动测试
启动测试成功后,注册中心能够检测到user-service内容
总结
我们完成上面简单的配置,那么带着以下问题来想想,如果git配置文件需要更改,那么服务该如何准时接收呢?后续就是对Bus总线的理解和实现了。谢谢大家的阅读。