文章目录
概述
- 用来维护和管理配置文件
- nacos提供了服务的注册中心(服务的注册和发现)和配置中心
- 而eureka只提供了服务的注册,需要单独进行springcloud的config配置
- nacos的配置数据是存在数据库中,而config配置中心就比较灵活, 可以存在数据库、本地文件、Git仓库中(默认是存在Git仓库中)
创建config子工程
添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置yml
server:
port: 6001
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/benwang6/cgb2107
search-paths: springcloud1/config
eureka:
client:
service-url:
defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka
- 其中:
- uri: 为远程仓库地址
- search-paths: config文件夹路径
-
本次测试将配置数据保存到Git远程仓库
-
新建config文件夹,将item、user、order的yml配置文件复制到config文件夹中
-
修改名字为一下
-
上传到远程仓库
-
通过config服务访问item的dev
-
localhost:6001/item-service/dev
-
说明成功了
-
添加item、user、order的依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
修改item、user、order的yml文件
-
注释掉application的文件
-
新建bootstrap文件
-
添加配置
-
# 链接注册表, 获得配置中心的地址, 再从配置中心下载 user-service-dev.yml eureka: client: service-url: # 可以从云服务商购买不同地点的 eureka 服务器 # 这里可以改成服务商提供的地点 # 自己的服务器只能用 defaultZone defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka spring: cloud: config: discovery: enabled: true # 允许使用服务发现, 去发现配置中心 service-id: config-server # 服务ID name: item-service # 文件名 profile: dev
-
测试
-
启动item、user、order服务
-
查看启动日志会发现从Git远程仓库下载配置
BUS 配置刷新
消息总线, 动态配置刷新, 通过配置中心 MQ 服务发送一个刷新指令, 其他配置中心客户端接收指令, 执行配置刷新
添加依赖
02/03/04/09
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-bus</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-rabbit</artifactId>
</dependency>
09单独添加
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
修改 yml 配置
-
添加 09 的 yml 配置
spring: rabbitmq: host: 192.168.64.140 port: 5672 username: admin password: admin virtual-host: / # 设置空间, 默认的可以不加 eureka: client: service-url: defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka management: endpoints: web: exposure: include: bus-refresh
-
添加 config 文件夹 yml
spring: rabbitmq: host: 192.168.64.140 port: 5672 username: admin password: admin virtual-host: / # 设置空间, 默认的可以不加 eureka: client: service-url: defaultZone: http://eureka1:2001/eureka, http://eureka2:2002/eureka management: endpoints: web: exposure: include: bus-refresh
- 提交 config 配置到远程仓库 (因为此项目配置中心数据是保存到远程仓库)
测试
检查
-
控制台连接 6001 的日志
-
RabbitMQ 服务器查看
配置刷新测试
- 向 POST http://localhost:6001/actuator/bus-refresh 发起请求
- 观察 2,3,4 控制台是否重新连接 6001, 刷新配置
测试 03 的配置添加新用户, 然后让 03 刷新配置
- 03 UserServiceImpl 添加注解 @RefreshScope
- 刷新到新的配置, 可以重新注入到对象中
-
重启 03
-
修改 config 目录的 User-Service-Dev.yml, 添加一个 99 用户
-
推送到远程仓库
-
03 刷新配置 POST http://localhost:6001/actuator/bus-refresh/user-server
-
访问添加的 99 用户 GET http://localhost:3001/user-service/99
-
不需要重启服务就可以刷新配置中心