1、Config服务
spring-cloud-config的服务,实际上是server提供一个配置获取接口,client在调用接口时传入参数,触发server调用SQL进行查询,最终获取到配置参数的过程。我们在调用GET /quality-file/dev/dev时,会执行
SELECT qkey , qvalue FROM config_server where APPLICATION='quality-file' and QPROFILE='dev' and LABEL='dev'
2、配置存储
配置中心管理着各个配置参数,主要分为两类:各微服务公共的配置和特有的配置。
比如说,所有的微服务基本上都会调用数据库,数据库相关的配置可以放在公共的配置中。有时候,有些微服务使用到了ElasticSearch搜索引擎,这个配置就是此微服务特有的。随之而产生了一个问题,如何去区分是公共配置还是特有配置?
配置参数终归是数据,只不过是比较特殊的数据,既然是数据,就必须存储起来才能进行管理。spring-cloud-config提供的存储方式中比较流行的有git文件与DB两种,由于git在权限管理、配置颗粒度和灵活性上的劣势,此处只对DB方式进行讲解。
存储参数的表结构:
select key, value from config_server where application = ? and profile = ? and label = ?
application默认值是application,此时配置是公有的,如果填写微服务名,则为该微服务特有配置
profile,一般分为dev、test、debug几种
label,用来标记版本, v2.1
3、配置刷新
配置中心不会主动给各微服务提供参数,都是各微服务主动向配置中心请求获取参数。如果配置中心的参数发生改变,需要各微服务主动来拉取最新的配置参数。拉取完成后,微服务还需要把这些参数重新热加载一遍,才算完成一次配置的刷新。
首先,配置中心参数改变时,各微服务是如何感知的?配置中心通过广播的方式,一个一个的通知。
其次,微服务如何拉取参数的?GET configServerHost/actuator 接口获取的。
最后,参数如何重新热加载的?actuator模块对管理的配置参数,进行赋值
bus/refresh接口与actuator监控和管理能力
@RefreshScope