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