Apollo配置中心中的Namespace

前言:Apollo(阿波罗)是携程研发的开源配置管理中心,能够集中管理应用不同环境、不同集群的配置。同一环境统一集群的配置下有namespace概念,具体信息官方文档如下:

  1. namespace是配置项的集合,类似于一个配置文件的概念。
  2. application的namespace:Apollo在创建项目的时候,都会默认创建一个“application”的namespace。顾名思义,“application”是给应用自身使用的。
  3. namespace的格式:配置文件有多种格式,例如:properties、xml、yml、yaml、json等,同样的,namespace也有具有这些格式。
    1. 非properties格式的namespace,在客户端使用时需要调用ConfigService.getConfigFile(String namespace, ConfileFormat configFileFormat)来获取;如果使用http接口调用时,对应的namespace参数需要传入namespace的名字加上后缀名,如datasources.json.
    2. apollo-client 1.3.0版本开始对yaml/yml做了更好的支持,使用起来和properties格式一致:Config config = ConfigService.getConfig("application.yml");,Spring的注入方式也和properties一致。
  4. namespace的获取权限分类(这里的获取权限是相对于Apollo客户端来说的)
    • private:只能被所属应用获取到,一个应用尝试获取其他应用private的namespace,Apollo会报“404”异常。
    • Public :能被任何应用获取。http请求直接传public的集群+namespace名称,就可以获取到公共配置。
  5. namespace的类型
    • 私有类型:具有private权限。
    • 公共类型:具有public权限,公共类型的namespace通过名称标识,因此名称必须全局唯一。具体使用场景如下:
      • 部门级别共享的配置
      • 小组级别共享的配置
      • 几个项目之间共享的配置
      • 中间件客户端的配置
    • 关联类型:又称为继承类型,具有private权限。关联类型的name space继承于公共类型的name space,用于覆盖公共namespace的某些配置。

原文:https://github.com/ctripcorp/apollo/wiki/Apollo核心概念之“Namespace”

posted @ 2020-11-25 19:50  AmyZYX  阅读(7475)  评论(0编辑  收藏  举报