定义
在分布式系统中,由于有很多系统组成,那么管理这些系统的配置文件就显得比较麻烦。spring cloud config 为了解决这个问题提供了文件管理中心用来集中管理外部文件。也同时支持从开发环境到测试环境到生成环境不同配置的管理及切换。文件管理中心默认集成git,能很容易支持不同版本的配置文件,也可以实现在线配置的更改。
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
Http服务有以上格式的资源,application 注入的是 config.name,label是git标签,默认是master。
例子
例子源码请参见https://github.com/githubweili/springcloud/tree/master/spring-cloud-learn/cloud-config
首先新建项目 cloud-config,pom文件需要增加依赖spring-cloud-config-server
然后 application.properties
git.uri:配置文件所在git 仓库地址
git.searchPaths:配置文件所在项目目录路径
config.label:git项目所在分支
git.username:如果是私有仓库,git账号
git.password:如果是私有仓库,git密码
java 代码 ConfigApplication
@EnableConfigServer:启动配置服务的注解
启动项目,访问项目路径http://localhost:8888//foo/dev,说明配置服务启动成功。
新建客户端 cloud-config -client,pom文件需要引入依赖 spring-cloud-starter-config。
配置文件 bootstrap.properties
config.label=master:远程仓库分支
config.profile=dev:配置开发环境,dev开发环境,test测试环境,pro生产环境
config.uri= http://localhost:8888/:配置中心地址
config.name=config-client:服务中心服务名
java 代码 ConfigClientApplication
启动 cloud-config-client,访问http://localhost:8882/hi,显示参数值,说明请求成功。
实时刷新配置文件
服务中心是利用 spring cloud bus 来实现节点文件变更的通知。
首先我们需要启动 rabbitmq 客户端,然后在 cloud-config-client 的pom文件增加依赖 spring-cloud-starter-bus-amqp。
修改 bootstrap.properties 文件。
spring.rabbitmq.host:消息服务的服务名
spring.rabbitmq.port:端口
spring.rabbitmq.username:账号
spring.rabbitmq.password:密码
启动客户端两个实利,8882,8883,这时候可先去git修改变量值,再执行localhost:8882/actuator/bus-refresh,来刷新配置中心的值。这时候再访问localhost:8882/hi,发现读取的变量值以改变。再访问locahost:8883/hi,变量值也已经修改,说明消息已经通知节点8883更新了配置。
作者:把代码写成诗
版权所有,转载请注明出处
欢迎关注,沟通交流https://github.com/githubweili
网友评论