三、什么是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。

posted @   shigp1  阅读(234)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示