三、什么是namespace
一、什么是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
进入应用后,点击左下角的添加namesapce
,进入添加页面:
可以看到,右上角可以选择关联公共Namespace
和创建Namespace
。这里选择创建Namespace,同时将自动添加部门前缀去掉:
填写Namespace的名称和配置属性类型,这里选择properties类型,下面选择Namespace的权限类型,这里选择private。点击提交创建Namespace。
接下来建立关联Namespace。首先新建公共的应用:
AppId为common_app,同时在里面新建公共的名为common的Namespace。
然后进入my_app001应用,点击左下角的添加Namespace,并选择关联Namespace:
关联刚才新建的common namespace。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏