目录
config
简介
springcloud config
项目是一个解决分布式系统的配置管理方案。它包含了client
和server
两个部分,server
端提供配置文件的存储、以接口的形式将配置文件的内容提供出去,client
端通过接口获取数据、并依据此数据初始化自己的应用
目前springcloud config
的使用主要是通过git/svn
方式做一个配置中心,然后每个服务从其中获取自身配置所需的参数
springcloud config
也支持本地参数配置的获取。如果使用本地存储的方式,在application.properties
或application.yml
文件添加spring.profiles.active=native
配置即可,它会从项目的resources
路径下读取配置文件。如果是读取指定的配置文件,那么可以使用spring.cloud.config.server.native.searchLocations = file:D:/properties/
来读取
config
作用
springcloud config
是一个基于http
协议的远程配置实现方式。通过统一的配置管理服务器进行配置管理,客户端通过https
协议主动的拉取服务的的配置信息,完成配置获取
简单一点的说就是:在分布式环境中,很多的服务都是集群部署,那就意味着这些集群部署的服务都需要相同的配置文件。所以,这时候就引入了springcloud config
这个组件,使用该组件来进行众多的配置文件的统一管理。例如,我们在修改某一配置文件时,只需要在远程的gitHub
等工具上面修改即可,不用多次的在众多的配置文件中来回繁琐的修改
config
架构
springcloud config
分为服务端和客户端,服务端负责将本地git
或者svn
中存储的配置文件发布成REST
风格的接口,客户端可以从服务端REST
接口获取配置。但客户端并不能主动感知到配置的变化,从而主动去获取新的配置,这需要每个客户端通过POST
方法触发各自的/refresh
接口
config
配置中心的实现
创建子模块项目config
配置中心
依然使用上一篇 文章的项目,然后创建子模块项目config
配置中心,如下
Maven
依赖
消费方与提供方
作为config
配置中心的客户端,消费方与提供方都添加如下依赖
<!--springcloud config客户端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-client</artifactId></dependency>
config
配置中心
作为config
配置中心的服务端,也是要注册进eureka
注册中心的
<!--springcloud config服务端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency><!--springcloud eureka客户端--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>
配置文件
git
创建仓库
使用github
或gitee
创建仓库,用于存放统一管理的配置文件
config
配置中心的application.properties
server.port=8070#注册进eureka的名称
spring.application.name=eureka-client-config
eureka.client.service-url.defaultZone=http://eureka7001:8761/eureka/
eureka.instance.prefer-ip-address=true#gitee的仓库地址
spring.cloud.config.server.git.uri=https://gitee.com/chaojiangcj/springcloud-learn-config.git
spring.cloud.config.server.git.username=你的用户名
spring.cloud.config.server.git.password=你的密码#配置仓库需要找的文件路径
spring.cloud.config.server.git.search-paths=eureka-client-*
spring.cloud.config.server.git.search-paths
:需要访问仓库的子目录的话就配置- 在
spring.cloud.config.server.git.uri
和spring.cloud.config.server.git.searchPaths
同时配置的情况下,springcloud
会先在searchPaths
中寻找,寻找不到再到uri
中配置的库的根目录直接寻找
consumer
消费方配置文件
将application.properties
的配置全部复制到gitee
仓库的eureka-client-consumer
文件夹下的eureka-client-consumer-dev.properties
文件中,然后将application.properties
的配置全部注释掉。再然后在consumer
消费方创建配置文件bootstrap.properties
,内容如下
spring.application.name=eureka-client-consumer
spring.cloud.config.uri=http://127.0.0.1:8070
spring.cloud.config.label=master
spring.cloud.config.profile=dev
spring.cloud.config.uri
:要访问config
配置中心的url
spring.cloud.config.label
:指明要访问远程仓库的分支spring.cloud.config.profile
:指明要访问配置文件的环境,dev
开发环境配置文件,test
测试环境,prod
正式环境
producer
消费方配置文件
与上述方法一样,创建配置文件bootstrap.properties
,内容如下
spring.application.name=eureka-client-producer#连接config服务端,才能获取配置
spring.cloud.config.uri=http://localhost:8070#需要读取文件的所在分支
spring.cloud.config.label=master
spring.cloud.config.profile=dev
启动类
只需要在config
配置中心服务端添加注解@EnableConfigServer,@EnableEurekaClient
即可
@Slf4j@EnableConfigServer@EnableEurekaClient@SpringBootApplicationpublicclassAppConfig{publicstaticvoidmain(String[] args){SpringApplication.run(AppConfig.class, args);
log.info("------AppConfig Running------");}}
测试
http
访问config
配置中心配置文件的url
形式
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
分别启动eureka
注册中心config,producer,consumer
这4
个项目,postman
测试如下
访问成功,获取到了提供方producer
的配置信息。我们再次请求消费方consumer
的接口,postman
测试结果如下
请求消费方consumer
的接口成功,证明我们的配置都是正确的