文章目录
- 1、Spring Cloud Config简介
- 2、Config Server开发
- 2.1 引入依赖
- 2.2 在启动类上面开启统一配置中心服务
- 2.3 创建远程仓库
- 2.4 在统一配置中心服务中修改配置文件指向远程仓库地址
- 2.5 启动统一配置中心服务
- 2.6 拉取远端配置
- 3、Config Client开发
- 3.1 项目中引入config client依赖
- 3.2 编写配置文件,告诉config server地址
- 3.3 编写测试controller
- 3.4 启动服务
- 4、手动配置刷新
- 4.1 说明
- 4.2 在config client端加入刷新暴露端点
- 4.3 在需要刷新代码的类中加入刷新配置的注解@RefreshScope
- 4.4 启动微服务并访问
- 4.5 修改远程配置
- 4.6 手动调用刷新配置接口
- 4.7 再次访问发现配置已经成功刷新
1、Spring Cloud Config简介
Spring Cloud Config项目是一个解决分布式系统的配置管理方案。它包含Client和Server两部分,Server提供配置文件地存储,以接口的形式将配置文件的内容提供出去;Client通过接口获取数据,并依据此数据初始化自己的应用。Spring Cloud Config使用Git或SVN存放配置文件,默认情况下使用Git。
Spring Cloud Config支持以下功能:
- 提供服务端和客户端支持。
- 集中管理各环境的配置文件。
- 配置文件修改之后,可以快速生效。
- 可以进行版本管理。
- 支持大的并发查询。
- 支持各种语言。
统一配置中心组件流程图如下:
2、Config Server开发
2.1 引入依赖
为了服务注册,我们将consul、actuator等等也引入
2.2 在启动类上面开启统一配置中心服务
2.3 创建远程仓库
创建仓库并复制远程仓库地址,这里我们创建公有仓库,如果是私有仓库的话必须在配置文件中指定用户名和密码。
同时添加三个配置文件
configclient.properties:
configclient-dev.properties:
configclient-prod.properties:
2.4 在统一配置中心服务中修改配置文件指向远程仓库地址
2.5 启动统一配置中心服务
2.6 拉取远端配置
3.1 项目中引入config client依赖
3.2 编写配置文件,告诉config server地址
springboot官方提供了一种解决方案,就是在使用统一配置中心时应该将微服务的配置文件名修改为bootstrap.(properties|yml),bootstrap.properties作为配置启动项目时,会优先拉取远程配置,远程配置拉取成功之后根据远程配置启动当前应用。
新建bootstrap.properties配置文件
3.3 编写测试controller
3.4 启动服务
从控制台的打印情况可看出configclient确实是从config server上拉取配置信息。
访问:http://localhost:8990/demo
虽然测试没有问题,但是这种方式如果我们远程的配置文件修改的话,必须要重启微服务才能读取最新的配置,有没有更好的解决方案呢?当然,下面请看手动配置刷新的解决方案。
4.1 说明
在生产环境中,微服务可能非常多,每次修改完远端配置之后,不可能对所有服务进行重新启动,这个时候需要让修改配置的服务能够刷新远端修改之后的配置,从而不要每次重启服务才能生效,进一步提高微服务系统的维护效率。在springcloud中也为我们提供了手动刷新配置和自动刷新配置两种策略,这里我们先使用手动配置文件刷新。
当远端git仓库中配置发生变化时,不需要重启微服务就可以直接读取远端修改之后的配置信息。
4.2 在config client端加入刷新暴露端点
4.3 在需要刷新代码的类中加入刷新配置的注解@RefreshScope
4.4 启动微服务并访问
4.5 修改远程配置
再次访问http://localhost:8990/demo
发现并没有自动刷新配置,必须调用刷新配置接口才能刷新配置。
4.6 手动调用刷新配置接口
使用postman或者curl工具发送post请求http://localhost:8990/actuator/refresh
4.7 再次访问发现配置已经成功刷新