SpringCloud配置中心

SpringCloud配置中心
jwangSpring Cloud Config
分布式系统中,由于服务数量非常多,配置文件分散在不同微服务项目中,管理极其不方便。为了方便配置文件集中管理,需要分布式配置中心组件。在Spring Cloud中,提供了Spring Cloud Config,它支持配置文件放在配置服务的本地,也支持配置文件放在远程仓库Git(GitHub、码云)。配置中心本质上是一个微服务,同样需要注册到Eureka服务中心!
Git配置管理
远程Git仓库
- 知名的Git远程仓库有国外的GitHub和国内的码云(gitee);
- GitHub主服务在外网,访问经常不稳定,如果希望服务稳定,可以使用码云;
- 码云访问地址:http://gitee.com
测试地址:
https://gitee.com/skllll/config.git |
创建远程仓库
首先使用码云上的git仓库需要先注册账户
账户注册完成,然后使用账户登录码云控制台并创建公开仓库
配置仓库 名称和路径
创建配置文件
在新建的仓库中创建需要被统一配置管理的配置文件
文件命名有规则:
配置文件的命名方式:{application}-{profile}.yml或{application}-{profile}.properties |
创建一个user-provider-dev.yml文件
将user-provider工程里的配置文件application.yml内容复制进去。
创建完user-provider-dev.yml配置文件之后,gitee中的仓库如下:
搭建配置中心微服务
实现步骤:
1. 创建配置中心SpringBoot项目config_server |
实现过程:
(1)创建工程
工程坐标
<artifactId>config-server</artifactId> |
(2)pom.xml依赖
|
(3)创建启动类
在config-server工程中创建启动类com.jwang.ConfigServerApplication,代码如下:
|
(4)application.yml配置文件
# 注释版本 |
注意:上述spring.cloud.config.server.git.uri是在码云创建的仓库地址
(5)测试
启动config-server,访问<http://localhost:18085/user-provider-dev.yml>,效果如下:
可以查看到码云上的文件数据,并且可以在gitee上修改user-dev.yml,然后刷新上述测试地址也能及时更新数据
服务去获取配置中心配置
目标:改造user-provider工程,配置文件不再由微服务项目提供,而是从配置中心获取。
实现步骤:
1. 添加配置中心客户端启动依赖 |
实现过程:
(1)添加依赖
<!--spring cloud 配置中心--> |
(2)修改配置
删除user-provider工程的application.yml文件
创建user-provider工程bootstrap.yml配置文件,配置内容如下
# 注释版本 |
关于application.yml和bootstrap.yml文件的说明:
- bootstrap.yml文件是SpringBoot的默认配置文件,而且其加载时间相比于application.yml更早。 |
启动测试:
启动服务中心、配置中心、用户中心user_service
如果启动没报错,其实已经使用上配置中心内容了
可以在服务中心查看也可以检验user_service的服务
配置中心存在的问题
(1)修改码云配置文件
修改在码云上的user-provider-dev.yml文件,添加一个属性test.message,如下操作:
(2)读取配置文件数据
在user-provider工程中创建一个com.jwang.controller.LoadConfigController读取配置文件信息,代码如下:
|
启动运行user-provider,访问<http://localhost:18081/config/load>
修改码云上的配置后,发现项目中的数据仍然没有变化,只有项目重启后才会变化。
小结
配置中心的作用:将各个微服务的配置文件集中到一起进行统一管理。
能搭建配置中心
需要在application.yml配置文件中指定需要远程更新的仓库地址。
修改微服务,从配置中心获取修改的配置
创建bootstrap.yml,并在bootstrap.yml中配置
# 注释版本
spring:
cloud:
config:
name: user-provider # 与远程仓库中的配置文件的application保持一致,{application}-{profile}.yml
profile: dev # 远程仓库中的配置文件的profile保持一致
label: master # 远程仓库中的版本保持一致
discovery:
enabled: true # 使用配置中心
service-id: config-server # 配置中心服务id
#向Eureka服务中心集群注册服务
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka













