Spring Cloud Config分布式配置中心
Config概述
- SpringCloud Config解决了在分布式场景下多环境配置文件的管理和维护
- 使用SpringCloud Config的好处:
- 集中管理配置文件
- 不同环境不同配置,动态化的配置更新
- 配置信息改变时,不需要重启即可更新配置信息到服务
Config快速入门
config server服务端搭建
步骤:
-
使用gitee创建远程仓库,上传配置文件
-
搭建config server模块
-
导入config-server依赖
<!--config-server的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
-
编写配置,设置gitee远程仓库地址
server: port: 9527 #默认8888 spring: application: name: config-server #spring cloud config的配置 cloud: config: server: #git的远程地址 git: uri: https://gitee.com/ww2016002615/qiyun-configs.git # username: # password: label: master #分支配置
-
测试访问远程配置文件
http://localhost:9527/config-dev.yml
#####config client客户端搭建
步骤:
-
导入starter-config依赖
<!--config-client的依赖--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency>
-
创建bootstrap.yml文件(必须为此名)
-
在bootstrap.yml文件配置config server地址,读取配置文件名称等信息
#1.配置config-server的地址 #2.配置获得配置文件的名称等信息 spring: cloud: config: #配置config-server的地址 uri: http://localhost:9527 #配置获得配置文件的名称等信息 name: config #文件名 profile: dev #profile指定,config-dev.yml label: master #分支
-
获取配置值
@Value("${qiyun}") private String qiyun;
-
启动测试
http://localhost:8001/goods/findOne/2
config client刷新
配置信息改变时,不需要重启即可更新配置信息到服务,但是客户端需要进行config client刷新才能生效
步骤:
-
在config客户端引入actuator依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
-
获取配置信息类,添加@RefreshScope注解(谁获取配置信息就在谁那里加)
-
添加配置
#1.配置config-server的地址 #2.配置获得配置文件的名称等信息 spring: cloud: config: #配置config-server的地址 uri: http://localhost:9527 #配置获得配置文件的名称等信息 name: config #文件名 profile: dev #profile指定,config-dev.yml label: master #分支 management: endpoints: web: exposure: include: '*' #refresh
-
使用curl工具发送post请求
curl -X POST http://localhost:8001/actuator/refresh
config集成eureka
yml文件中的uri文件写得太固定,耦合度太强,后期的维护成本太高,所以需要集成eureka
-
config-client配置:
#1.配置config-server的地址 #2.配置获得配置文件的名称等信息 spring: cloud: config: #配置config-server的地址 # uri: http://localhost:9527 #配置获得配置文件的名称等信息 name: config #文件名 profile: dev #profile指定,config-dev.yml label: master #分支 #从注册中心中去寻找config-server的地址 discovery: enabled: true service-id: CONFIG-SERVER management: endpoints: web: exposure: include: '*' #refresh
-
config-server配置:
#将自己注册到eureka中 eureka: client: service-url: defaultZone: http://localhost:8761/eureka