
# 配置中心概述
配置中心用来管理微服务应用的配置。微服务连接配置中心，能够从配置中心获取配置信息及其变化。配置中心还是其他微服务管控功能的核心部件，比如服务治理规则的下发，也是通过配置中心实现的。
ServiceComb引擎支持的配置中心为：config-center和kie。
![](https://support.huaweicloud.com/devg-cse/public_sys-resources/note_3.0-zh-cn.png)
- 当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，这些配置项就会对该微服务生效。
  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指定多个服务，这样配置项就可以对多个服务和应用生效，非常灵活。
     
  
  
  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 ``` |
     
  配置创建方法请参考[创建1.x版本ServiceComb引擎配置](https://support.huaweicloud.com/usermanual-cse/cse_03_0168.html)。
  应用程序中会发现4个配置项：cse.example.key1=value1，cse.example.key2=value2，cse.example.key3=value3和cse.example.key4=value4。
  
 
