更新时间:2023-11-07 GMT+08:00

动态配置常见问题

动态配置的类型选择

微服务引擎2.0的配置中心支持text、yaml等多种格式。

  • 简单的key-value配置项

    可以使用text类型,配置中心的key对应于代码中的key。

  • 大量的配置

    使用yaml格式,配置中心的key会被忽略,全量的key-value在yaml文件中定义。

    ServiceComb引擎1.x不支持yaml格式,可以通过Spring Cloud Huawei适配,来使用yaml,需要在微服务bootstrap中增加如下配置:
    spring:
      cloud:
        servicecomb:
          config:
            fileSource: consumer.yaml # 需要按照yaml解析的配置项列表,以逗号分隔
  • 初次使用ServiceComb引擎2.x

    建议选择Spring Cloud Huawei的最新版本,最新版本包含更多的特性并针对历史问题进行了较好的优化。

List对象配置绑定

有些业务使用了List对象配置绑定,例如:

@ConfigurationProperties("example.complex")
public class ComplexConfigurationProperties {
  private List<String> stringList;
  private List<Model> modelList;
  ... ...
}

对于List对象,Spring Cloud默认都只会从一个PropertySource查询相关的配置项,如果其中一个PropertySource存在配置项的部分值,那么不会再查询其他值。 因此,在使用List对象绑定的时候,和这些List属性相关的配置,都必须全部放到配置中心,不支持部分元素在配置文件,部分元素在配置中心的场景。

可以将这个约束理解为“List配置的原子性”,即一个配置项(代码例子中的stringList或者modelList)不能被分割在不同的配置文件,保证配置项的原子性。