1.1 分布式配置中心作用

在网络世界中配置文件是非常重要的,因为通过配置文件可以对程序进行修改或者管理,而网络世界主要是程序所构成的,所以配置文件对于我们的重要性不言而喻。
分布式配置中心可以做到统一管理,例如微服务中相同的配置不用冗余配置。
分布式配置中心可以做到对配置进行实时更新,当更新了配置后不用重启应用。

1.2 Spring Cloud分布式配置应用方式

两种方式使用分布式配置:
1. 直接使用远程仓库
在配置仓库中的文件中配置配置文件,然后在SpringBoot应用中bootstrap.yaml(注意不是application.yml文件)配置以下信息:

spring.cloud.config.name: equipment-data-sync
spring.cloud.config.profile:local
spring.cloud.config.label:master
spring.cloud.config.uri:http://127.0.0.1:80

配置说明:
spring.cloud.config.name:获取配置文件的名称
spring.cloud.config.profile: 获取配置的策略
spring.cloud.config.label:获取配置文件的分支,默认是master。
spring.cloud.config.uri:指定的配置中心地址

作用:
(1). 通过这样的方式就可以在SpringBoot应用不用通过项目资源下的application.yaml去加载配置,而是通过统一的配置中心拉取配置。
(2). SpringBoot应用在启动的时候,默认会从工程的classpath下加载配置信息并启动应用,只有配置了srping.cloud.config.uri的时候,客户端才会尝试连接Config Server拉取配置信息并初始化Spring环境配置。我们必须将uri这个属性参数配置到bootstrap.yml(或.properties)中,这个配置文件的优先级大于application.yml和其它文件,这样才能保证能正确加载远程配置。启动的时候客户端会去连接uri属性的值。

2. 使用Spring Cloud Config常用的模式
步骤如下:
(1). 创建服务与注册中心服务
(2). 创建Config-Server服务,此服务注册到注册中心,在程序主类额外增加**@EnableConfigServer**注解,该注解表示启用config配置中心功能。此服务是配置中心,指定名为springcloud-config-server,用来管理配置。
配置中心需要有application.yaml,如下配置:

spring.application.name=springcloud-config-server
 server.port=9005
 eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/
 spring.cloud.config.server.git.uri = https://github.com/xuwujing/springcloud-study/
 spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo
 spring.cloud.config.server.git.username = 
 spring.cloud.config.server.git.password =

spring.application.name: 这个是指定服务名称。
server.port:服务指定的端口。
eureka.client.serviceUrl.defaultZone: 这个是设置与Eureka Server交互的地址,客户端的查询服务和注册服务都需要依赖这个地址。
spring.cloud.config.server.git.uri: 配置的Git仓库的地址。
spring.cloud.config.server.git.search-paths: git仓库地址下的相对地址 多个用逗号","分割。
spring.cloud.config.server.git.username:git仓库的账号。
spring.cloud.config.server.git.password:git仓库的密码

注:
如果想使用本地方式读取配置信息,那么只需将spring.cloud.config.server.git的配置改成spring.profiles.active=native,然后在resources路径下新增一个文件即可。此次配置就是读取当前应用下的文件,在resources路径下新增一个客户端要读取的配置文件configclient.yaml。

(3). 创建Config-client服务,此服务也注册到注册中心,新增bootstrap.yaml文件
配置如下:

spring.cloud.config.name=configclient
spring.cloud.config.profile=test
spring.cloud.config.label=master
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=springcloud-config-server
eureka.client.serviceUrl.defaultZone=http://localhost:8005/eureka/

这样从configclient中的服务就可以不用添加application文件,使用@Value可以从配置服务端读取相应的配置(configclient.yaml),通过分支推送代码的方式实现动态刷新配置。