概念
统一管理微服务的配置文件
微服务集成配置中心的架构图
配置文件格式
/{name}-{profiles}.properties
/{name}-{profiles}.yml
/{name}-{profiles}.json
/{label}/{name}-{profiles}.yml
name: 微服务名称
profile: 环境名称,如 dev, test, prod
label: 配置中心的分支名称,默认master
配置文件加载顺序
bootstrap.yml 优先级高于application.yml, 因此,集成配置中心后,要在boostrap.yml中填好配置中心的地址
使用过程
配置工程
在git 服务器上创建一下存放配置文件的工程,git 服务器可以使用自建服务器,或者直接从 github 上创建
如:在github上创建工程 config-center, 放了配置文件 user-consumer-dev.yml, 文件中的内容为 myconfig: v1
服务端
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
启动类添加 @EnableConfigServer
服务启动后验证(省略基本过程):
客户端
引入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
修改客户端(user-consumer)bootstrap 配置
#URL方式查找配置中心
spring.cloud.config.uri=http://localhost:9999/
#注册中心方式查找
#spring.cloud.config.discovery.enabled=true
#spring.cloud.config.discovery.service-id=config-center
spring.cloud.config.profile=dev
spring.cloud.config.label=master
服务启动时,会从配置中心加载 user-consumer-dev 相关的 json, properties, yml 文件
配置刷新 - bus
依赖 amqp 协议, 安装好erlang,和 rabbitmq即可使用
服务配置
配置文件
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=admin
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
成功启动后,在 rabbitmq 控制台,可以看到增加了一个跟bus相关的队列
1. 可以通过配置心的 /actuator/bus-refresh 请求,动态更新所有服务的配置
2. 或者通过具体微服务的 /actuator/bus-refresh 请求,更新指定服务所有实例的配置
3. 也可以通过具体微服务的 /actuator/refresh 请求,更新指定服务指定实例的配置
对于第3点,需要以下2个操作:
1. 开启actuator中的refresh端点
2. 在使用动态配置的类上添加 @RefreshScope