一、什么是Namespace?
Namespace是配置项的集合,类似于一个配置文件的概念。
二、 什么是“application”的Namespace?
Apollo在创建项目的时候,都会默认创建一个“application”的Namespace。顾名思义,“application”是给应用自身使用的,熟悉Spring Boot的同学都知道,Spring Boot项目都有一个默认配置文件application.yml。在这里application.yml就等同于“application”的Namespace。对于90%的应用来说,“application”的Namespace已经满足日常配置使用场景了。
客户端获取“application” Namespace的代码如下:
Config config = ConfigService.getAppConfig();
客户端获取非“application” Namespace的代码如下:
Config config = ConfigService.getConfig(namespaceName);
三、Namespace的格式有哪些?
配置文件有多种格式,例如:properties、xml、yml、yaml、json等。同样Namespace也具有这些格式。在Portal UI中可以看到“application”的Namespace上有一个“properties”标签,表明“application”是properties格式的。
注意:非properties格式的namespace,在客户端使用时需要调用ConfigService.getConfigFile(String namespace, ConfigFileFormat configFileFormat)来获取,如果使用Http接口直接调用时,对应的namespace参数需要传入namespace的名字加上后缀名,如datasources.json。
四、 Namespace的获取权限分类
Namespace的获取权限分为两种:
-
private (私有的)
-
public (公共的)
这里的获取权限是相对于Apollo客户端来说的。
private权限
private权限的Namespace,只能被所属的应用获取到。一个应用尝试获取其它应用private的Namespace,Apollo会报“404”异常。
public权限
public权限的Namespace,能被任何应用获取。
五、Namespace的类型
Namespace类型有三种:
-
私有类型
-
公共类型
-
关联类型(继承类型)
私有类型
私有类型的Namespace具有private权限。例如上文提到的“application” Namespace就是私有类型。
公共类型
公共类型的Namespace具有public权限。公共类型的Namespace相当于游离于应用之外的配置,且通过Namespace的名称去标识公共Namespace,所以公共的Namespace的名称必须全局唯一。
使用场景:
-
部门级别共享的配置
-
小组级别共享的配置
-
几个项目之间共享的配置
-
中间件客户端的配置
关联类型
关联类型又可称为继承类型,关联类型具有private权限。关联类型的Namespace继承于公共类型的Namespace,用于覆盖公共Namespace的某些配置。例如公共的Namespace有两个配置项
k1 = v1
k2 = v2
然后应用A有一个关联类型的Namespace关联了此公共Namespace,且覆盖了配置项k1,新值为v3。那么在应用A实际运行时,获取到的公共Namespace的配置为:
k1 = v3
k2 = v2
标签:namespace,什么,Namespace,private,application,公共,类型,权限
From: https://www.cnblogs.com/shigongp/p/17512383.html