springcloud-config手动刷新和自动刷新实现

当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现微服务中的所有系统的配置文件的统一管理,而且还可以实现当配置文件发生变化的时候,系统会自动更新获取新的配置

 

什么是手动刷新?

因为springcloud-config的服务端第一次读取远程git服务器的配置之后是会缓存一份配置在本地的,即使远程git修改了配置,config客户端也依然是读取缓存中的配置,而使用手动刷新可以强制刷新缓存,让config端读取最新配置文件.

 

什么是自动刷新?

springcloud-config的自动刷新需要配合springcloud-bus 消息总线来使用,会有线程实时监控配置是否修改,修改则自动刷新.但是这种方式比较损耗性能,如无必要刻意使用手动刷新.

 

springcloud config 实现步骤:

1. 引入依赖

客户端

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-config-client</artifactId>
   <version>2.0.1.RELEASE</version>
</dependency>
<!-- actuator监控中心 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

服务端

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
    <version>2.0.1.RELEASE</version>
</dependency>

2. 启动类添加注解

服务端启动类上加上@EnableConfigServer

 

3.抽取配置到远程git

远程git这里我使用码云,在码云开一个仓库,建立一个文件夹,然后文件夹下面放入测试的配置,文件名的取名一定是微服务应用名称+环境名称,因为最后config客户端来找配置文件是通过服务名和环境名称寻找

4. 客户端修改application.yml文件名为bootstrap.yml

如果不修改文件名,那么启动项目的时候回根据application.yml文件来启动,如果配置了数据库连接,当场就能报错,bootstrap.yml是专门启动的,在启动之前读取的配置文件

5.配置服务端和客户端的配置文件

服务端

 

客户端

6.在需要刷新的配置类上加上@RefreshScope注解

 

7. 调用刷新接口即可

然后调用http://127.0.0.1:8000/actuator/refresh即可刷新缓存,读取最新配置

 

这里只介绍手动刷新的方式,另外使用springcloud config其实不是最佳的选择,国内还有很多写的不错的分布式配置中心框架可以供大家选择,只是因为背景不如spring强大所以名声不显,但是很多比config好用不少,还自带后台管理.例如:携程Apollo,淘宝Diamond等,有兴趣的可以了解一下.

 

 

采坑介绍:

这里介绍一下新手可能会遇到的几个问题

1. config客户端的配置文件名称没改,我们需要改成bootstrap.yml

2. 远程配置文件读取失败,可能是文件名称不是以服务名和环境命名

3. 出现无法找到config服务端实例的情况,可能是你把eureka配置放到了远程git,因为config客户端需要拉去eureka的服务注册信息和config服务端通信

发布了60 篇原创文章 · 获赞 5 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_42214548/article/details/103133853
今日推荐