更新时间:2024-10-23 GMT+08:00

配置中心概述

配置中心用来管理微服务应用的配置。微服务连接配置中心,能够从配置中心获取配置信息及其变化。配置中心还是其他微服务管控功能的核心部件,比如服务治理规则的下发,也是通过配置中心实现的。

微服务引擎支持的配置中心为:config-center和kie。

  • 当微服务引擎版本为1.x时,取值为config-center。
  • 当微服务引擎版本为2.x时,取值为kie或config-center,推荐使用kie作为配置中心。

本章节介绍不同微服务开发框架使用配置中心的一些开发细节,包括如何配置依赖、连接配置中心有关的配置项等,并简单的介绍微服务应用中如何读取配置和响应配置变化。

  • 微服务引擎使用kie作为配置中心。

    微服务默认会读取配置中心应用配置、服务配置、自定义配置。应用配置指环境、应用和微服务相同的配置;服务配置指环境、应用、微服务名称和微服务相同的配置。微服务可以在配置文件中指定一个特定的label及label值,自定义配置指label及label值与微服务相同的配置。

    简单的场景,可以使用应用级配置和服务级配置。应用级配置被该应用下的所有微服务共享,是公共配置;服务级配置只对具体微服务生效,是独享配置。

    复杂的场景,可以通过使用customLabel和customLabelValue来定义配置。例如某些配置,是对所有应用共享的,那么就可以使用这个机制。在配置文件增加如下配置(以Spring Cloud为例):
    spring:
      cloud:
        servicecomb:
          config:
            kie:
              customLabel: public# 默认值是public
              customLabelValue: default # 默认值是空字符串

    只要配置项带有public标签,并且标签值为default,这些配置项就会对该微服务生效。

    1. 把配置中心当成数据库的一个表tbl_configurations,key是主键,每个label都是属性。
    2. 客户端会根据如下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指定多个服务,这样配置项就可以对多个服务和应用生效,非常灵活。

    微服务引擎的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。

  • 微服务引擎使用config-center作为配置中心。

    微服务默认会读取配置中心全局配置、服务配置。全局配置指环境和微服务相同的配置;服务配置指环境、应用、微服务名称和微服务相同的配置。

    微服务引擎只支持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。