什么是springcloud的config?为什么我们要使用它?
springcloud的config的组件是一种用于微服务的多环境的在外部管理我们的配置文件的组件,通过添加bootstrap.yml配置文件,在该配置文件中配置config配置中心的信息。让我们的工程能够从配置中心读取配置.
优点:
集中管理
不同环境下动态刷新
配置信息修改不需要重新启动服务.
将config注册到eureka中,当服务A需要配置文件的时候可以从eureka注册中心中拉取对应的config_server,然后config_server在远程去调用云端上的配置文件.
步骤一:
微服务连接配置中心(这里我用的是eureka)
1、添加依赖 spring-cloud-starter-netflix-eureka-client
2、启动类添加注解 @EnableEurekaClient
步骤二:
搭建配置中心服务
1、添加依赖 spring-cloud-config-server
2、启动类添加注解 @EnableConfigServer
3、配置版本库地址和注册中心地址
Git配置
SVN配置
步骤三:
创建版本库,放置配置文件
应
用
名
−
{应用名}-
应用名−{profile环境}.properties/yml
Git
SVN
步骤四:
当微服务使用云端的配置文件
1.添加依赖 spring-cloud-starter-config
2.添加bootstrap.yml文件
# 配置config-server地址
# 配置获得配置文件的名称等信息
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作为配置中心存在的问题:
当外部的配置文件一旦修改了我们需要做到自动的配置文件自动刷新.
通过发送一个post请求
使用springcloud的组件bus消息总线和mq
config的服务端将消发送给bus,通过消息中间件传递给每一个微服务,每一个微服务自动修改所对应的配置
- 分别在 config-server 和 config-client中引入 bus依赖:bus-amqp
<!-- bus -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
- 分别在 config-server 和 config-client中配置 RabbitMQ
#配置rabbitmq信息
rabbitmq:
host: localhost
port: 5672
username: guest
password: guest
virtual-host: /
- 在config-server中设置暴露监控断点:bus-refresh
# 暴露bus的刷新端点
management:
endpoints:
web:
exposure:
include: 'bus-refresh'
- 启动测试
使用consul和nacos作为配置中心
这里还可以使用consul或者nacos来取代eureka的服务治理和springcloud的config组件.
因为consul和nacos不仅可以使用服务治理的功能还有文件管理功能,使用这一个技术点可以取代eureka和spring cloud的config组件.
使用consul来作为配置中心
Consul提供的key/value存储作为配置中心
1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
2.bootstrap.yml配置
spring:
profiles:
active: dev #激活环境!!
cloud:
consul:
host: localhost
port: 8500
config:
enabled: true #开启配置中心,默认是true
prefix: config #基础文件夹,默认值 config
default-context: application #应用文件夹,默认值 application
profile-separator: ',' # 环境分隔符,默认值 ","
format: yaml #配置格式,默认 key-value,其他可选:yaml/files/properties
data-key: data #配置 key 值,value 对应整个配置文件
#以上配置后,我们的配置文件在consul中的完整的key为 config/application,dev/data
watch:
enabled: true #启用配置自动刷新
delay: 1000 # 刷新频率,单位:毫秒
wait-time: 55
注意:
支持配置的动态刷新 : @RefreshScope
框架级别的配置: 会自动刷新属性配置类!!!
@Bean标签不一定会自动刷新!!
使用nacos来作为配置中心
1.导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.0.RELEASE </version>
</dependency>
2.bootstrap.yml配置
spring:
profiles:
active: dev #激活环境!!
cloud:
nacos:
config:
enabled: true
server-addr: 127.0.0.1:8848 #nacos的服务器地址
prefix: user #应用名称 对应nacos配置中的dataid
file-extension: yaml #yaml 和 properties
group: user-group #对应nacos配置中的group
#dataId: ${prefix}-${spring.profiles.active}.${file-extension}
#user-dev.yaml
3.支持配置的动态刷新:@RefreshScope
注意:
框架级别的配置: 会自动刷新属性配置类!!!
—> @Bean标签不一定会自动刷新!!