配置中心概述
配置中心用来管理微服务应用的配置。微服务连接配置中心,能够从配置中心获取配置信息及其变化。配置中心还是其他微服务管控功能的核心部件,比如服务治理规则的下发,也是通过配置中心实现的。
ServiceComb引擎支持的配置中心为:config-center和kie。
- 当ServiceComb引擎版本为1.x时,取值为config-center。
- 当ServiceComb引擎版本为2.x时,取值为kie或config-center,推荐使用kie作为配置中心。
本章节介绍不同微服务开发框架使用配置中心的一些开发细节,包括如何配置依赖、连接配置中心有关的配置项等,并简单的介绍微服务应用中如何读取配置和响应配置变化。
- ServiceComb引擎使用kie作为配置中心。
微服务默认会读取配置中心应用配置、服务配置、自定义配置。应用配置指环境、应用和微服务相同的配置;服务配置指环境、应用、微服务名称和微服务相同的配置。微服务可以在配置文件中指定一个特定的label及label值,自定义配置指label及label值与微服务相同的配置。
简单的场景,可以使用应用级配置和服务级配置。应用级配置被该应用下的所有微服务共享,是公共配置;服务级配置只对具体微服务生效,是独享配置。
复杂的场景,可以通过使用customLabel和customLabelValue来定义配置。例如某些配置,是对所有应用共享的,那么就可以使用这个机制。在配置文件增加如下配置(以Spring Cloud为例):spring: cloud: servicecomb: config: kie: customLabel: public# 默认值是public customLabelValue: default # 默认值是空字符串
只要配置项带有public标签,并且标签值为default,这些配置项就会对该微服务生效。
- 把配置中心当成数据库的一个表tbl_configurations,key是主键,每个label都是属性。
- 客户端会根据如下3个条件查询配置:
- 自定义配置
select * from tbl_configurations where customLabel=customLabelValue & match=false
- 应用级配置
select * from tbl_configurations where app=demo_app & environment=demo_environment & match=true
- 服务级配置
select * from tbl_configurations where app=demo_app & environment=demo_environment & service=demo_service & match=true
其中,match为true的时候,表示有且只有条件里面指定的属性;match为false的时候,表示除了条件里面的属性,允许有其他的属性。还可以给标签app指定多个应用,或者给标签service指定多个服务,这样配置项就可以对多个服务和应用生效,非常灵活。
- 自定义配置
ServiceComb引擎的TEXT、XML等类型,SDK会简单的当成key-value对使用;YAML和Properties类型, SDK会解析内容,应用程序将内容作为实际的应用程序配置项。比如:
类型:TEXT key: cse.examples.hello value: World
应用程序会发现1个配置项: cse.examples.hello = World。
类型:YAML key: cse.examples.hello value: | cse: key1: value1 key2: value2
应用程序会发现2个配置项: cse.key1 = value1和cse.key2 = value2。
- ServiceComb引擎使用config-center作为配置中心。
微服务默认会读取配置中心全局配置、服务配置。全局配置指环境和微服务相同的配置;服务配置指环境、应用、微服务名称和微服务相同的配置。
ServiceComb引擎只支持key-value的配置项。如果用户需要使用yaml格式的配置文件,可以使用具体SDK提供的fileSource功能。通过在配置文件中指定fileSource的key列表,SDK会将这些key对应的value全部当成yaml解析。以Spring Cloud为例,在bootstrap.yml中增加配置项:
spring: cloud: servicecomb: config: fileSource: file1.yaml,file2.yaml
并且在配置中心创建配置,“配置项”及其对应的“值”的示例如下表所示。其中,值的格式为yaml。
配置项
值
file1.yaml
cse.example.key1: value1 cse.example.key2: value2
file2.yaml
cse.example.key3: value3 cse.example.key4: value4
配置创建方法请参考配置管理中的“创建配置”操作。
应用程序中会发现4个配置项:cse.example.key1=value1,cse.example.key2=value2,cse.example.key3=value3和cse.example.key4=value4。