常用场景:将连接服务器等相关敏感配置信息参数抽取出来,独立成一个spring cloud 服务节点
前提: spring clound pom.xml 基础依赖
<!--spring cloud 引入-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<!--Zookeeper 引入-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
一、服务端配置
1.1依赖架包(pom.xml)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zookeeper-discovery</artifactId>
</dependency>
1.2 配置项(application.yml)
配置 zookeeper 服务地址,即git 仓库地址url
spring:
cloud:
zookeeper:
connect-string: 192.168.3.201:2181
config:
server:
git:
uri: https://gitee.com/gerry123/config-repos
username: 271314998@qq.com
password: zxvnmqt@.123
1.3 启动类配置(@EnableConfigServer
)
@EnableConfigServer
启动服务配置
测试:http://localhost:9090/provider-xxx.yml
输出为上面配置的provider.yml 信息
- 测试格式说明:
- / { 应用名 } / { 环境名 } [ / { 分支名 } ]
- / { 应用名 } - { 环境名 }.yml
- / { 应用名 } - { 环境名 }.properties
- / { 分支名 } / { 应用名 } - { 环境名 }.yml
- / { 分支名 } / { 应用名 } - { 环境名 }.properties
- /{application}/{profile}[/{label}]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
二、客户端配置
2.1依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
2.2配置项 (bootstrap.yml)
spring:
application:
name: provider #本客户端的应用名称,根据此名称获取zookeeper 注册中心,服务节点config上所提供的provider.yml配置项信息
cloud:
config:
discovery:
enabled: true
service-id: config # 配置zookeeper注册中心,服务节点名称, (对应其服务springboot工程的spirng.application.name配置项值)
三、Spring Cloud Bus 手动实现刷配置(不重启项目情况下)
3.1 安装RabbitMQ (其依赖Erlang)
详细安装,请查看此篇文章–Linux RabbitMQ安装(Erlang 安装)
3.2 依赖(pom.xml)
服务端和客户端 都需要引入
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-bus-amqp</artifactId>
</dependency>
- 服务端config application.yml 配置
spring:
rabbitmq:
host: 114.67.72.129
port: 5672
username: nova
password: 2611119
management:
endpoints:
web:
exposure:
include: '*'
-
客户端配置项,通常zooker注册中心,服务节点config,git 远程provider.yml文件
图中字段 author 可用于当测试使用
-
@RefreshScope
局部刷新,@Value("${author}")
远程配置项的一个参数,测试是否连接生效
3.3 手动刷新
#利用idea Terminal命令窗口 执行下面命令 访问配置config服务节点下的 /actuator/bus-refresh手动刷新
curl -X POST http://localhost:9090/actuator/bus-refresh
测试流程:
1.前提:客户端和服务端 项目启动正常
2.修改远程git uri 配置信息项
3.服务config 访问刷新路径/actuator/bus-refresh
手动更新
则可通过rabbitmq 通知 客户端和服务端更新
查看客户端是否已经更新
http://localhost:8090/config
显示的auhtor 为最新值,即表示更新同步成功
四、 使用WebHooks 自动刷新配置
config服务节点添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-monitor</artifactId>
</dependency>
编译运行,控制窗口日志有/monitor 表示集成成功
手动刷新指令
curl -X POST http://localhost:9090/actuator/bus-refresh
,也可用postman post 该路径
利用webHook,每次git更新后,通知指定URL (http://ip:port/monitor
)
config服务节点会重新拉去最新的provider.yml 到本地
客户端,同接收到通知,然后去刷新获取最新的配置(provider.yml)