本文共 2776 字,大约阅读时间需要 9 分钟。
配置中心用于统⼀管理配置, 快速切换各个环境的配置。
springcloud config是一个分布式的配置管理中心,分为config server、config client2部分,支持git仓库、svn仓库、数据库等多种方式存储配置,默认使用git仓库存放配置。
config server注册到注册中心上,每个服务都可以作为config client,config client从注册中心上获取config server节点列表,通过ribbon确定要使用的config server节点,从config server节点获取配置,config server节点从git仓库获取配置。
启动顺序:先启动注册中心,再启动config-server,然后启动各个服务。
配置仓库用于存放配置文件,可以用github、gitlab、gitee、svn等,国内的个人开发者建议使用gitee。
新建私人仓库,有2种方式区分不同环境的配置
1、通过文件名区分
配置文件都放在master分支下,通过文件名指定服务、环境,比如user-service的配置文件:user-service-dev.yml、user-service-test.yml、user-service-prod.yml。user-server.yml 这种文件名不带环境的,则为该服务所有环境的公共配置。
2、通过分支区分(推荐)
master下放生产环境的配置,新建分支dev、test,分别存放开发环境、测试环境的配置,同一服务的配置文件名相同,比如都是user-service.yml。
1、新建子模块config-server,创建时只需勾选Spring Cloud Config -> Config Server,Spring Cloud Discovery -> Eureka Discovery Client,也可以手动添加依赖
org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-config-server
2、引导类上加 @EnableEurekaClient(可缺省)、@EnableConfigServer
3、application.yml
server: port: 7502spring: application: name: config-server cloud: config: server: git: #git仓库地址 uri: https://gitee.com/xxx/config-mall.git #git账号、密码 username: xxx password: xxx #连接到git仓库的超时时间,单位s,默认5# timeout: 5 #设置默认分⽀,默认master。config client未指定要使用的分支时,默认使用config server设置的默认分支。# default-label: master eureka: client: serviceUrl: defaultZone: http://127.0.0.1:7501/eureka/
启动后访问 127.0.0.1:7502/master/user-service.yml (config-server的ip:port/分支名/文件名),能看到配置内容就说明config server搭建成功。
1、创建时勾选Spring Cloud Config -> Config Client,也可以手动添加依赖
org.springframework.cloud spring-cloud-starter-config
2、bootstrap.yml
spring: application: name: order-server cloud: config: discovery: #启用配置中心 enabled: true #配置中心的服务名 service-id: config-server #如果使用分支区分环境,可以用label指定要使用的分支。缺省label时默认使用config server中设置的默认分支# label: master #如果使用文件名区分环境,需要使用profile指定文件中的环境# profile: deveureka: client: serviceUrl: defaultZone: http://127.0.0.1:7501/eureka/
配置文件中只写服务名、config的配置、注册中心的配置即可,其它配置都可以提取到git仓库中。
如果要把应用端口提取到git仓库中,需把本地配置文件名改为bootstrap.yml。
不建议在各个服务中指定用 label 指定要使用的分支,尽量在config-server中用 default-label 统一指定,方便切换。
1、config-server本地缓存了服务的配置文件
当一个服务实例启动时,config-server会自动从git仓库拉取该服务的配置文件到本地,config-server再把配置文件返回给服务;如果git仓库没有对应的配置文件,config-server会从本地缓存的配置文件中找,如果有就返回给服务。
就是说:如果git仓库删除了配置文件,只要config-server之前拉取过,也能找到这些配置文件。
2、服务配置的更新问题
在git仓库修改配置后,配置不会自动下发到服务中,需要重启服务才会应用更新的配置。
重启应用时,config-server会从git仓库拉取最新的配置文件返回给服务。
可以使用springcloud bus来实现配置的自动刷新。
转载地址:http://bkhlb.baihongyu.com/