Skip to content

运维SDK

Nacos 的 运维SDK(或称Nacos-Maintainer-SDK),是一个针对 Nacos 配置中心、服务注册中心、分布式锁等功能运维场景下的的 Java SDK。旨在为Nacos的运维人员或部分特殊应用场景(如网关类应用控制台类应用 )提供稳定易用的配置中心、服务注册中心、分布式锁等功能,方便运维人员或特殊应用访问Nacos进行配置、服务和分布式锁的操作。

因为Nacos 的 运维SDK的定位,Nacos的运维SDK会提供大范围的数据获取API,因此Nacos的运维SDK需要使用较高权限的身份进行登录后才能使用,以防止存在数据泄漏的隐患。

如果您的使用场景不是运维人员操作或特殊应用场景(如网关类应用控制台类应用),请使用Nacos Client (如Nacos Java Client, Nacos Go Client等)。

目前 Nacos 的 运维SDK只支持Java SDK,后续会支持更多语言的SDK。

Nacos的运维SDK基于Nacos Admin API实现,相同的能力可以通过对应的Nacos Admin API进行操作。

1. 引用概述

1.1. Java 版本依赖

Nacos 的 Java SDK需要 JDK 1.8 及以上版本的Java运行环境。

1.2. Maven 坐标

<!-- 3.0.0 及以上 版本支持 -->
<dependency>-->
<groupId>com.alibaba.nacos</groupId>-->
<artifactId>nacos-maintainer-client</artifactId>-->
<version>${nacos.client.version}</version>-->
</dependency>-->

2. 初始化SDK

Nacos 初始化SDK时需要使用对应的工厂 Factory 类进行不同模块的创建:

Properties properties = new Properties();
# 指定Nacos-Server的地址
properties.setProperty("serverAddr","localhost:8848");
# 设置Nacos的管理员用户密码
properties.setProperty("username","nacos");
properties.setProperty("password","{your_admin_password}");
# 初始化配置中心的Nacos Maintainer Service
ConfigMaintainerService configMaintainerService = ConfigMaintainerFactory.createConfigMaintainerService(properties);
# 初始化注册中心的Nacos Maintainer Service
NamingMaintainerService maintainService = NamingMaintainerFactory.createNamingMaintainerService(properties);

3. 配置中心运维 API

3.1. 获取配置

描述

从 Nacos 获取配置。

ConfigDetailInfo getConfig(String dataId) throws NacosException;
ConfigDetailInfo getConfig(String dataId, String groupName) throws NacosException;
ConfigDetailInfo getConfig(String dataId, String groupName, String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
namespaceIdlong配置所属的命名空间ID。

返回值

参数类型描述
ConfigDetailInfo配置的具体信息

具体ConfigDetailInfo的内容如下:

参数名参数类型描述
idlong配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。
contentstring配置内容。
descstring配置的描述信息。
encryptedDataKeystring配置的加密密钥,当使用配置的加密功能时,该字段才有值。
createUserstring创建此配置的用户名。
createIpstring创建此配置的来源IP。
configTagsstring此配置的标签,多个标签用逗号,分隔。

请求示例

try {
# 以下3种调用均会获得 `public`命名空间下,groupName为`DEFAULT_GROUP`,dataId为`maintain.client.test`的配置信息。
ConfigDetailInfo configDetailInfo = configMaintainerService.getConfig("maintain.client.test");
configDetailInfo = configMaintainerService.getConfig("maintain.client.test", Constants.DEFAULT_GROUP);
configDetailInfo = configMaintainerService.getConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.2. 发布配置

描述

用于发布 Nacos 配置,以便通过自动化手段降低运维成本。

boolean publishConfig(String dataId, String content) throws NacosException;
boolean publishConfig(String dataId, String groupName, String content) throws NacosExceptio;
boolean publishConfig(String dataId, String groupName, String namespaceId, String content) throws NacosException;
boolean publishConfig(String dataId, String groupName, String namespaceId, String content, String desc) throws NacosException;
boolean publishConfig(String dataId, String groupName, String namespaceId, String content, String desc, String type) throws NacosException;
boolean publishConfig(String dataId, String groupName, String namespaceId, String content, String appName, String srcUser, String configTags, String desc, String type) throws NacosException;

请求参数

参数名参数类型描述
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 256 字节。
groupNamestring配置分组。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 128 字节。
namespaceIdlong配置所属的命名空间ID。
contentstring配置内容,不超过 100K 字节。
descstring配置的描述内容。
typestring配置类型,见 com.alibaba.nacos.api.config.ConfigType,默认为TEXT
appNamestring配置所属的应用名称。
srcUserstring创建此配置的用户名,即代理此用户进行配置发布,此配置的createUser将为此用户,若传入空字串,则表示当前登录的用户名作为createUser
configTagsstring此配置的标签,多个标签用逗号,分隔。

返回参数

参数类型描述
boolean是否发布成功

请求示例

try {
# 以下调用均会在 `public`命名空间下,创建groupName为`DEFAULT_GROUP`,dataId为`maintain.client.test`的配置, 配置内容为`testContent`。
boolean result = configMaintainerService.publishConfig("maintain.client.test", "testContent");
result = configMaintainerService.publishConfig("maintain.client.test", Constants.DEFAULT_GROUP, "testContent");
result = configMaintainerService.publishConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, "testContent");
result = configMaintainerService.publishConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, "testContent", "test");
result = configMaintainerService.publishConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, "testContent", "test", "TEXT");
result = configMaintainerService.publishConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, "testContent", "testApp", null, "testTag", "test", "TEXT");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.3. 删除配置

描述

用于删除 Nacos 配置,以便通过自动化手段降低运维成本。

boolean deleteConfig(String dataId) throws NacosException;
boolean deleteConfig(String dataId, String groupName) throws NacosException;
boolean deleteConfig(String dataId, String groupName, String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
namespaceIdlong配置所属的命名空间ID。

返回参数

参数类型描述
boolean是否删除成功

请求示例

try {
# 以下3种调用均会删除 `public`命名空间下,groupName为`DEFAULT_GROUP`,dataId为`maintain.client.test`的配置信息。
boolean result = configMaintainerService.deleteConfig("maintain.client.test");
result = configMaintainerService.deleteConfig("maintain.client.test", Constants.DEFAULT_GROUP);
result = configMaintainerService.deleteConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.4. 批量删除配置

描述

用于批量删除 Nacos 配置,以便通过自动化手段降低运维成本。

boolean deleteConfigs(List<Long> ids) throws NacosException;

请求参数

参数名参数类型描述
idsList<Long>待删除配置的ID列表,此ID为配置在实际存储介质中的ID,需要从获取配置获取配置列表API中的id字段获取。

返回值

参数类型描述
boolean是否删除成功

请求示例

try {
ConfigDetailInfo configDetailInfo = configMaintainerService.getConfig("maintain.client.test");
boolean result = configMaintainerService.deleteConfigs(Collections.singletonList(configDetailInfo.getId()));
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.5. 获取配置列表

描述

可以通过此API,获取获取满足条件的配置列表,不支持模糊查询,若需要进行模糊查询,请使用搜索配置列表API。

Page<ConfigBasicInfo> listConfigs(String namespaceId) throws NacosException;
Page<ConfigBasicInfo> listConfigs(String dataId, String groupName, String namespaceId) throws NacosException;
Page<ConfigBasicInfo> listConfigs(String dataId, String groupName, String namespaceId, String type) throws NacosException;
Page<ConfigBasicInfo> listConfigs(String dataId, String groupName, String namespaceId, String type, String configTags, String appName) throws NacosException;
Page<ConfigBasicInfo> listConfigs(String dataId, String groupName, String namespaceId, String type, String configTags, String appName, int pageNo, int pageSize) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdlong配置所属的命名空间ID。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节, 默认为"",不为空时则只会匹配dataId为此值的配置。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节,默认为"",不为空时则只会匹配groupName为此值的配置。
typestring配置类型,见 com.alibaba.nacos.api.config.ConfigType,默认为"",不为空时则只会匹配类型为此值的配置。
configTagsstring此配置的标签,多个标签用逗号,分隔,默认为"",不为空时则只会匹配标签为此值的配置。
appNamestring配置所属的应用名称,默认为"",不为空时则只会匹配应用名为此值的配置。
pageNoint配置列表的分页页码,默认为1。
pageSizeint配置列表的分页大小,默认为100。

返回参数

参数类型描述
Page<ConfigBasicInfo>配置列表的分页结果

具体Page及ConfigBasicInfo的内容如下:

参数名参数类型描述
totalCountint符合该条件下的配置总数。
pageNumberint当前页码。
pagesAvailableint分页的总页数。
pageItemsList<ConfigBasicInfo>当前页的配置列表。
参数名参数类型描述
idlong配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。

请求示例

try {
# 获取`public`命名空间下所有配置的第一页(最大100个)。
Page<ConfigBasicInfo> result = configMaintainerService.listConfigs(Constants.DEFAULT_NAMESPACE_ID);
# 获取`public`命名空间下配置分组为`DEFAULT_GROUP`的所有配置的第一页(最大100个)。
result = configMaintainerService.listConfigs("", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);
# 获取`public`命名空间下类型为`JSON`的所有配置的第一页(最大100个)。
result = configMaintainerService.listConfigs("", "", Constants.DEFAULT_NAMESPACE_ID, "JSON");
# 获取`public`命名空间下带有标签为`testTag1`且配置所属应用为`testApp`的所有配置的第一页(最大100个)。
result = configMaintainerService.listConfigs("", "", Constants.DEFAULT_NAMESPACE_ID, "", "testTag1", "testApp");
# 获取`public`命名空间下所有配置的第一页(最大10个)。
result = configMaintainerService.listConfigs("", "", Constants.DEFAULT_NAMESPACE_ID, "", "", "", 1, 10);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.6. 搜索配置列表

描述

可以通过此API,获取获取满足条件的配置列表,支持模糊查询,若需要进行精确查询,请使用查询配置列表API。

Page<ConfigBasicInfo> searchConfigs(String dataId, String groupName, String namespaceId) throws NacosException;
Page<ConfigBasicInfo> searchConfigs(String dataId, String groupName, String namespaceId, String type) throws NacosException;
Page<ConfigBasicInfo> searchConfigs(String dataId, String groupName, String namespaceId, String configDetail, String type) throws NacosException;
Page<ConfigBasicInfo> searchConfigs(String dataId, String groupName, String namespaceId, String configDetail, String type, String configTags, String appName) throws NacosException;
Page<ConfigBasicInfo> searchConfigs(String dataId, String groupName, String namespaceId, String configDetail, String type, String configTags, String appName, int pageNo, int pageSize) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdlong配置所属的命名空间ID。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节, 默认为"",不为空时则只会匹配所有dataId包含此值的配置。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节,默认为"",不为空时则只会匹配groupName包含此值的配置。
typestring配置类型,见 com.alibaba.nacos.api.config.ConfigType,默认为"",不为空时则只会匹配类型为此值的配置。
configDetailstring配置的内容,默认为"",不为空时则只会匹配配置内容包含此值的配置。
configTagsstring此配置的标签,多个标签用逗号,分隔,默认为"",不为空时则只会匹配标签为此值的配置。
appNamestring配置所属的应用名称,默认为"",不为空时则只会匹配应用名为此值的配置。
pageNoint配置列表的分页页码,默认为1。
pageSizeint配置列表的分页大小,默认为100。

返回参数

参数类型描述
Page<ConfigBasicInfo>配置列表的分页结果

具体Page及ConfigBasicInfo的内容如下:

参数名参数类型描述
totalCountint符合该条件下的配置总数。
pageNumberint当前页码。
pagesAvailableint分页的总页数。
pageItemsList<ConfigBasicInfo>当前页的配置列表。
参数名参数类型描述
idlong配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。

请求示例

try {
# 获取`public`命名空间下配置分组包含`test`字符的所有配置的第一页(最大100个)。
Page<ConfigBasicInfo> result = configMaintainerService.searchConfigs("", "test", Constants.DEFAULT_NAMESPACE_ID);
# 获取`public`命名空间下类型为`JSON`的所有配置的第一页(最大100个)。
result = configMaintainerService.searchConfigs("", "", Constants.DEFAULT_NAMESPACE_ID, "JSON");
# 获取`public`命名空间下配置内容包含`test`字符的所有配置的第一页(最大100个)。
result = configMaintainerService.searchConfigs("", "", Constants.DEFAULT_NAMESPACE_ID, "test", "");
# 获取`public`命名空间下标签为`testTag1`且配置所属应用为`testApp`的所有配置的第一页(最大100个)。
result = configMaintainerService.searchConfigs("", "", Constants.DEFAULT_NAMESPACE_ID, "", "", "testTag1", "testApp");
# 获取`public`命名空间下所有配置的第一页(最大10个)。
result = configMaintainerService.searchConfigs("", "", Constants.DEFAULT_NAMESPACE_ID, "", "", "", "", 1, 10);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.7. 克隆配置

描述

通过此API,可以将所指定的配置克隆到另一个命名空间下,克隆时可以指定新的groupNamedataId.

Map<String, Object> cloneConfig(String namespaceId, List<ConfigCloneInfo> cloneInfos, String srcUser, SameConfigPolicy policy) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring克隆的目标命名空间ID
cloneInfosList<ConfigCloneInfo>需要克隆的配置列表
srcUserstring克隆此配置的用户名,即代理此用户进行配置克隆,克隆的配置的createUser将为此用户,若传入空字串,则表示当前登录的用户名作为createUser
policySameConfigPolicy克隆配置时出现冲突后的处理策略,默认为ABORT,可选值为ABORT(终止),SKIP(跳过),OVERWRITE(覆盖)。

其中ConfigCloneInfo中的参数详情为:

参数名参数类型描述
configIdlong配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
targetGroupNamestring目标配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节,为空时则使用配置当前的分组。
targetDataIdstring目标配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节,为空时则使用配置当前的 ID。

返回参数

参数类型描述
Map<String, Object>克隆配置的结果,根据policy的不同,可能返回成功的数量,失败的数量,跳过的数量,或覆盖的数量

请求示例

try {
# 将配置ID为1的配置克隆到`cloue-test`命名空间下,克隆策略为`ABORT`,即如果目标命名空间下有同名配置,则克隆失败。
ConfigCloneInfo configCloneInfo = new ConfigCloneInfo();
configCloneInfo.setConfigId(1L);
Map<String, Object> result = configMaintainerService.cloneConfig("cloue-test", Collections.singletonList(configCloneInfo), "", SameConfigPolicy.ABORT);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.8. 获取命名空间下所有配置列表

描述

通过此接口,可以获取指定命名空间下所有的配置列表。

List<ConfigBasicInfo> getConfigListByNamespace(String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring配置所属的命名空间ID

返回参数

参数类型描述
List<ConfigBasicInfo>配置列表的分页结果

具体ConfigBasicInfo的内容如下:

参数名参数类型描述
idlong配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。

请求示例

try {
List<ConfigBasicInfo> result = configMaintainerService.getConfigListByNamespace(Constants.DEFAULT_NAMESPACE_ID);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.9. 获取配置订阅者列表

描述

通过此接口,可以获取某个配置的订阅者列表。若希望获取某个配置订阅者订阅了哪些配置,请使用获取某个订阅者订阅的所有配置列表

ConfigListenerInfo getListeners(String dataId, String groupName) throws NacosException;
ConfigListenerInfo getListeners(String dataId, String groupName, String namespaceId, boolean aggregation) throws NacosException;

请求参数

参数名参数类型描述
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
namespaceIdstring配置所属的命名空间ID。
aggregationboolean是否聚合查询,默认为true,为false时仅查询请求所在节点的订阅者列表,为true时查询整个集群中此配置的订阅者列表。

返回参数

参数类型描述
ConfigListenerInfo配置的订阅者信息

其中ConfigListenerInfo的内容如下:

参数名参数类型描述
queryTypestring此接口固定返回config
listenersStatusMap<String, List<String>>订阅者列表,key为订阅者的IP,value为此订阅者订阅到的配置的md5值

请求示例

try {
# 以下两种调用,均获取`public`命名空间ID,`DEFAULT_GROUP`分组,`maintain.client.test`配置的全集群的订阅者列表。
ConfigListenerInfo result = configMaintainerService.getListeners("maintain.client.test", Constants.DEFAULT_GROUP);
result = configMaintainerService.getListeners("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, true);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.10. 获取某个订阅者订阅的所有配置列表

描述

通过此接口,可以获取某个配置订阅者所订阅的配置列表。若希望查询配置的订阅者列表,请使用获取配置订阅者列表

ConfigListenerInfo getAllSubClientConfigByIp(String ip, boolean all, String namespaceId, boolean aggregation) throws NacosException;

请求参数

参数名参数类型描述
ipstring配置订阅者的IP
allboolean是否查询所有相同IP的订阅者所订阅的配置列表,默认为false,为false时仅返回第一个匹配到ip的订阅者订阅的配置列表,为true时返回所有匹配到ip的订阅者订阅的配置列表。
namespaceIdstring配置所属的命名空间ID。
aggregationboolean是否聚合查询,默认为true,为false时仅查询请求所在节点的订阅者列表,为true时查询整个集群中此配置的订阅者列表。

返回参数

参数类型描述
ConfigListenerInfo配置的订阅者信息

其中ConfigListenerInfo的内容如下:

参数名参数类型描述
queryTypestring此接口固定返回ip
listenersStatusMap<String, List<String>>订阅者列表,key为订阅的配置的dataId+groupName+namespaceId,value为此订阅者订阅到的配置的md5值

请求示例

try {
ConfigListenerInfo result = configMaintainerService.getAllSubClientConfigByIp("127.0.0.1", false, Constants.DEFAULT_NAMESPACE_ID, true);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.11. 发布Beta灰度配置

描述

用于灰度发布 Nacos 配置,方便修改配置时进行测试,降低因配置错误导致的应用故障范围。

boolean publishBetaConfig(String dataId, String groupName, String namespaceId, String content, String appName, String srcUser, String configTags, String desc, String type, String betaIps) throws NacosException;

请求参数

参数名参数类型描述
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 256 字节。
groupNamestring配置分组。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“_”),不超过 128 字节。
namespaceIdlong配置所属的命名空间ID。
contentstring配置内容,不超过 100K 字节。
descstring配置的描述内容。
typestring配置类型,见 com.alibaba.nacos.api.config.ConfigType,默认为TEXT
appNamestring配置所属的应用名称。
srcUserstring创建此配置的用户名,即代理此用户进行配置发布,此配置的createUser将为此用户,若传入空字串,则表示当前登录的用户名作为createUser
configTagsstring此配置的标签,多个标签用逗号,分隔。
betaIpsstring配置的灰度IP列表,多个IP用逗号,分隔。

返回参数

参数类型描述
boolean是否发布成功

请求示例

try {
# 对`127.0.0.1`这个ip进行`maintain.client.test`配置的Beta灰度。
boolean result = configMaintainerService.publishBetaConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, "testBeta", "testApp", "", "testTag1", "test", "TEXT", "127.0.0.1");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.12. 停止配置Beta灰度

描述

停止指定配置的Beta配置

boolean stopBeta(String dataId, String groupName) throws NacosException;
boolean stopBeta(String dataId, String groupName, String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
namespaceIdstring配置所属的命名空间ID。

返回参数

参数类型描述
boolean是否停止Beta灰度成功

请求示例

try {
# 对`127.0.0.1`这个ip进行`maintain.client.test`配置的Beta灰度。
boolean result = configMaintainerService.publishBetaConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, "testBeta", "testApp", "", "testTag1", "test", "TEXT", "127.0.0.1");
# 停止`maintain.client.test`配置的Beta灰度
result = configMaintainerService.stopBeta("maintain.client.test", Constants.DEFAULT_GROUP);
result = configMaintainerService.stopBeta("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.13. 查询Beta灰度的配置

描述

查询指定配置的Beta配置

ConfigGrayInfo queryBeta(String dataId, String groupName) throws NacosException;
ConfigGrayInfo queryBeta(String dataId, String groupName, String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
namespaceIdstring配置所属的命名空间ID。

返回参数

参数类型描述
ConfigGrayInfo灰度配置的信息

其中ConfigGrayInfo的内容如下:

参数名参数类型描述
idlong配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。
contentstring配置内容。
descstring配置的描述信息。
encryptedDataKeystring配置的加密密钥,当使用配置的加密功能时,该字段才有值。
createUserstring创建此配置的用户名。
createIpstring创建此配置的来源IP。
configTagsstring此配置的标签,多个标签用逗号,分隔。
grayNamestring灰度名称,固定为beta
grayRulestring灰度的规则,格式为json,其中的expr为灰度的ip列表

请求示例

try {
# 对`127.0.0.1`这个ip进行`maintain.client.test`配置的Beta灰度。
boolean publishResult = configMaintainerService.publishBetaConfig("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, "testBeta", "testApp", "", "testTag1", "test", "TEXT", "127.0.0.1");
# 查询`maintain.client.test`配置的Beta灰度
ConfigGrayInfo result = configMaintainerService.queryBeta("maintain.client.test", Constants.DEFAULT_GROUP);
result = configMaintainerService.queryBeta("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);}
catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.14. 获取配置历史历史版本列表

描述

获取指定配置的历史版本列表

Page<ConfigHistoryBasicInfo> listConfigHistory(String dataId, String group, String namespaceId, Integer pageNo, Integer pageSize) throws NacosException;

请求参数

参数名参数类型描述
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
namespaceIdstring配置所属的命名空间ID。
pageNoint配置历史版本列表的分页页码,默认为1。
pageSizeint配置历史版本列表的分页大小,默认为100。

返回参数

参数类型描述
Page<ConfigHistoryBasicInfo>配置历史版本列表的分页结果

其中Page及ConfigHistoryBasicInfo的内容如下:

参数名参数类型描述
totalCountint符合该条件下的配置历史版本总数。
pageNumberint当前页码。
pagesAvailableint分页的总页数。
pageItemsList<ConfigHistoryBasicInfo>当前页的配置历史版本列表。
参数名参数类型描述
idlong配置历史版本的ID,没有业务含义,仅作为配置历史版本在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。
srcUserstring操作此版本的用户名。
srcIpstring操作此版本的来源IP。
opTypestring此历史版本的操作类型,I为创建,U为更新,D为删除
publishTypestring此历史版本的发布类型,formal为正式发布,gray为灰度发布

请求示例

try {
# 查询`maintain.client.test`配置的历史版本列表。
Page<ConfigHistoryBasicInfo> configHistoryBasicInfoPage = configMaintainerService.listConfigHistory("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, 1, 10);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.15. 获取配置历史历史版本详情

描述

通过此API,可以查询某一配置的某一个历史版本详情。

ConfigHistoryDetailInfo getConfigHistoryInfo(String dataId, String groupName, String namespaceId, Long nid) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
nidlong目标历史版本在的Id, 通过获取配置历史历史版本列表接口获取。

返回参数

参数类型描述
ConfigHistoryDetailInfo配置历史版本的详细信息

其中ConfigHistoryDetailInfo的内容如下:

参数名参数类型描述
idlong配置历史版本的ID,没有业务含义,仅作为配置历史版本在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。
contentstring配置历史版本的内容。
encryptedDataKeystring配置解密的密钥,仅当配置为加密配置时返回。
grayNamestring配置历史版本的灰度发布名称,当此次历史版本为灰度发布时存在,一般为beta
extInfostring历史版本的扩展信息,目前存储灰度发布时的发布规则,如灰度的ip地址列表,格式为json

请求示例

try {
# 查询`maintain.client.test`配置的历史版本列表。
Page<ConfigHistoryBasicInfo> configHistoryBasicInfoPage = configMaintainerService.listConfigHistory("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, 1, 10);
int nid = configHistoryBasicInfoPage.getPageItems().get(0).getId();
# 查询`maintain.client.test`配置的历史版本列表中第一个历史版本的详细信息。
ConfigHistoryDetailInfo result = configMaintainerService.getConfigHistoryInfo("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, nid);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.16. 查询配置上一版本信息详情

描述

获取指定配置的上一历史版本的信息详情

ConfigHistoryDetailInfo getPreviousConfigHistoryInfo(String dataId, String groupName, String namespaceId, Long id) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
idlong配置在实际存储介质中的ID,通过获取配置 获取

返回参数

参数类型描述
ConfigHistoryDetailInfo配置历史版本的详细信息

其中ConfigHistoryDetailInfo的内容如下:

参数名参数类型描述
idlong配置历史版本的ID,没有业务含义,仅作为配置历史版本在存储介质中的唯一标识。一般为唯一自增ID。
namespaceIdstring配置所属的命名空间ID。
groupNamestring配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、”_”),不超过128字节。
dataIdstring配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、”_”),不超过 256 字节。
md5string配置内容的md5值。
typestring配置的类型,如properties、json、yaml等,主要用于标记和展示。
appNamestring配置所属的应用名称。
createTimelong配置的创建时间,为时间戳,单位为毫秒。
modifyTimelong配置的最新更新时间,为时间戳,单位为毫秒。
contentstring配置历史版本的内容。
encryptedDataKeystring配置解密的密钥,仅当配置为加密配置时返回。
grayNamestring配置历史版本的灰度发布名称,当此次历史版本为灰度发布时存在,一般为beta
extInfostring历史版本的扩展信息,目前存储灰度发布时的发布规则,如灰度的ip地址列表,格式为json

请求示例

try {
# 获取`maintain.client.test`配置的ID。
int id = configMaintainerService.getConfig("maintain.client.test").getId();
# 获取`maintain.client.test`配置的上一历史版本的详细信息。
ConfigHistoryDetailInfo result = configMaintainerService.getPreviousConfigHistoryInfo("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, id);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.17. 触发Nacos Server从存储介质中dump数据到磁盘缓存中

描述

手动触发从存储中加载所有配置数据到Nacos Server本地缓存。

String updateLocalCacheFromStore() throws NacosException;

请求参数

返回参数

参数类型描述
String触发dump操作的返回信息

请求示例

try {
configMaintainerService.updateLocalCacheFromStore();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

3.18. 设置配置中心日志级别

描述

动态设置指定模块的日志级别

String setLogLevel(String logName, String logLevel) throws NacosException;

请求参数

参数名参数类型描述
logNamestring日志模块名称,如config-server, config-dump
logLevelstring日志级别(如INFODEBUG

返回参数

参数类型描述
String设置日志级别的结果信息

请求示例

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4. 服务发现运维API

4.1. 创建服务

描述

创建一个新的空服务,默认为持久化服务。

String createService(String serviceName) throws NacosException;
String createService(String groupName, String serviceName) throws NacosException;
String createService(String namespaceId, String groupName, String serviceName) throws NacosException;
String createService(String namespaceId, String groupName, String serviceName, boolean ephemeral) throws NacosException;
String createService(String namespaceId, String groupName, String serviceName, boolean ephemeral, float protectThreshold) throws NacosException;
String createService(Service service) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
ephemeral(Service.ephemeral)boolean是否临时服务,默认为false
protectThreshold(Service.protectThreshold)float服务的防护阈值,默认为0.0
Service.metadataMap<String,String>服务的元数据
Service.selectorSelector服务的实例选择器,默认为None

返回参数

参数类型描述
String创建服务的结果描述

请求示例

try {
# 以下请求均创建一个名为`maintain.client.test`的持久化服务。
String result = namingMaintainerService.createService("maintain.client.test");
result = namingMaintainerService.createService("maintain.client.test", Constants.DEFAULT_GROUP);
result = namingMaintainerService.createService("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);
result = namingMaintainerService.createService("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, false);
result = namingMaintainerService.createService("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, false, 0.0f);
Service service = new Service();
service.setName("maintain.client.test");
service.setGroupName(Constants.DEFAULT_GROUP);
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
result = namingMaintainerService.createService(service);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.2. 更新服务

描述

更新服务信息,包括保护阈值元数据实例选择器等,服务的名称分组命名空间持久化信息无法修改。

String updateService(String serviceName, Map<String, String> newMetadata, float newProtectThreshold, Selector newSelector) throws NacosException;
String updateService(String groupName, String serviceName, Map<String, String> newMetadata, float newProtectThreshold, Selector newSelector) throws NacosException;
String updateService(String namespaceId, String groupName, String serviceName, Map<String, String> newMetadata, float newProtectThreshold, Selector newSelector) throws NacosException;
String updateService(String namespaceId, String groupName, String serviceName, boolean ephemeral, Map<String, String> newMetadata, float newProtectThreshold, Selector newSelector) throws NacosException;
String updateService(Service service) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
ephemeral(Service.ephemeral)boolean是否临时服务,默认为false
protectThreshold(Service.protectThreshold)float服务的防护阈值,默认为0.0
Service.metadataMap<String,String>服务的元数据
Service.selectorSelector服务的实例选择器,默认为None

返回参数

参数类型描述
String更新服务的结果描述

请求示例

try {
# 以下请求均对名为`maintain.client.test`的持久化服务进行更新
String result = namingMaintainerService.updateService("maintain.client.test", new HashMap<>(), 0.0f, new NoneSelector());
result = namingMaintainerService.updateService("maintain.client.test", Constants.DEFAULT_GROUP, new HashMap<>(), 0.0f, new NoneSelector());
result = namingMaintainerService.updateService("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, new HashMap<>(), 0.0f, new NoneSelector());
result = namingMaintainerService.updateService("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID, false, new HashMap<>(), 0.0f, new NoneSelector());
Service service = new Service();
service.setName("maintain.client.test");
service.setGroupName(Constants.DEFAULT_GROUP);
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
result = namingMaintainerService.updateService(service);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.3. 删除服务

描述

删除服务,仅在服务下不存在实例时可以进行删除。若删除的服务已经不存在,则也会返回删除成功。

String removeService(String serviceName) throws NacosException;
String removeService(String groupName, String serviceName) throws NacosException;
String removeService(String namespaceId, String groupName, String serviceName) throws NacosException;
String removeService(Service service) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID

返回参数

参数类型描述
String删除服务的结果描述

请求示例

try {
# 以下请求均删除一个名为`maintain.client.test`的服务。
String result = namingMaintainerService.removeService("maintain.client.test");
result = namingMaintainerService.removeService("maintain.client.test", Constants.DEFAULT_GROUP);
result = namingMaintainerService.removeService("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);
Service service = new Service();
service.setName("maintain.client.test");
service.setGroupName(Constants.DEFAULT_GROUP);
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
result = namingMaintainerService.removeService(service);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.4. 查询服务详情

描述

查询服务详情,返回服务的元数据、保护阈值、实例选择器以及服务下的逻辑集群Cluster的元数据等。

ServiceDetailInfo getServiceDetail(String serviceName) throws NacosException;
ServiceDetailInfo getServiceDetail(String groupName, String serviceName) throws NacosException;
ServiceDetailInfo getServiceDetail(String namespaceId, String groupName, String serviceName) throws NacosException;
ServiceDetailInfo getServiceDetail(Service service) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID

返回参数

参数类型描述
ServiceDetailInfo服务的详细信息

其中ServiceDetailInfo中的详细内容有:

参数名参数类型描述
namespaceIdstring服务的命名空间ID
groupNamestring服务的分组名称
serviceNamestring服务的名称
ephemeralboolean服务的持久化属性
protectThresholdfloat服务的保护阈值
selectorSelector服务的实例选择器
metadataMap<String,String>服务的元数据
clusterMapMap<String, ClusterInfo>服务下的逻辑集群信息Map,其中key为逻辑集群名称,value为详细信息
clusterMap.${key}.clusterNamestring逻辑集群的名称
clusterMap.${key}.healthyCheckPortint逻辑集群的健康检查断藕
clusterMap.${key}.useInstancePortForCheckboolean逻辑集群是否使用实例信息的端口进行健康检查
clusterMap.${key}.healthCheckerAbstractHealthChecker逻辑集群的健康检查类型
clusterMap.${key}.metadataMap<String,String>逻辑集群的元数据

请求示例

try {
# 以下请求均获取一个名为`maintain.client.test`的服务详情信息。
ServiceDetailInfo result = namingMaintainService.getServiceDetail("maintain.client.test");
result = namingMaintainService.getServiceDetail("maintain.client.test", Constants.DEFAULT_GROUP);
result = namingMaintainService.getServiceDetail("maintain.client.test", Constants.DEFAULT_GROUP, Constants.DEFAULT_NAMESPACE_ID);
Service service = new Service();
service.setName("maintain.client.test");
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
result = namingMaintainService.getServiceDetail(service);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.5. 查询服务列表

描述

获取满足条件的服务列表。通过该接口获得的服务列表不带有实例信息,若需要获取服务下的实例列表及实例信息,请使用查询服务实例列表

Page<ServiceView> listServices(String namespaceId) throws NacosException;
Page<ServiceView> listServices(String namespaceId, String groupNameParam, String serviceNameParam) throws NacosException;
Page<ServiceView> listServices(String namespaceId, String groupNameParam, String serviceNameParam, boolean ignoreEmptyService, int pageNo, int pageSize) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring服务所属的命名空间ID
groupNameParamstring服务的分组名称模版,支持使用*进行前缀后缀的模糊匹配,为空时获取所有分组。
serviceNameParamstring服务的名称模版,支持使用*进行前缀后缀的模糊匹配,为空时获取所有服务。
ignoreEmptyServiceboolean是否忽略空服务,默认为true,为true将不返回空服务。
pageNoint分页页码,默认为1。
pageSizeint分页每页大小,默认为100。

返回参数

参数类型描述
Page<ServiceView>满足条件服务列表的分页结果

具体Page及ServiceView的内容如下:

参数名参数类型描述
totalCountint符合该条件下的服务总数。
pageNumberint当前页码。
pagesAvailableint分页的总页数。
pageItemsList<ConfigBasicInfo>当前页的服务列表。
参数名参数类型描述
namestring服务的名称
groupNamestring服务的分组名称
clusterCountint服务下逻辑集群的个数
ipCountint服务下的实例总数
healthyInstanceCountint服务下的健康实例总数
triggerFlagboolean是否触发了阈值保护

请求示例

try {
# 以下请求均获取所有服务列表(最多前100个)。
Page<ServiceView> result = namingMaintainService.listServices(Constants.DEFAULT_NAMESPACE_ID);
result = namingMaintainService.listServices(Constants.DEFAULT_NAMESPACE_ID, "", "");
result = namingMaintainService.listServices(Constants.DEFAULT_NAMESPACE_ID, "", "", true, 1, 100);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.6. 查询服务列表(携带实例信息)

描述

获取满足条件的服务列表。通过该接口获得的服务列表会带有实例信息。

Page<ServiceDetailInfo> listServicesWithDetail(String namespaceId) throws NacosException;
Page<ServiceDetailInfo> listServicesWithDetail(String namespaceId, String groupNameParam, String serviceNameParam) throws NacosException;
Page<ServiceDetailInfo> listServicesWithDetail(String namespaceId, String groupNameParam, String serviceNameParam, int pageNo, int pageSize) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring服务所属的命名空间ID
groupNameParamstring服务的分组名称模版,支持使用*进行前缀后缀的模糊匹配,为空时获取所有分组。
serviceNameParamstring服务的名称模版,支持使用*进行前缀后缀的模糊匹配,为空时获取所有服务。
pageNoint分页页码,默认为1。
pageSizeint分页每页大小,默认为100。

返回参数

参数类型描述
Page<ServiceDetailInfo>满足条件服务列表的分页结果

具体Page及ServiceDetailInfo的内容如下:

参数名参数类型描述
totalCountint符合该条件下的服务总数。
pageNumberint当前页码。
pagesAvailableint分页的总页数。
pageItemsList<ConfigBasicInfo>当前页的服务列表。
参数名参数类型描述
namespaceIdstring服务的命名空间ID
groupNamestring服务的分组名称
serviceNamestring服务的名称
ephemeralboolean服务的持久化属性
protectThresholdfloat服务的保护阈值
selectorSelector服务的实例选择器
metadataMap<String,String>服务的元数据
clusterMapMap<String, ClusterInfo>服务下的逻辑集群信息Map,其中key为逻辑集群名称,value为详细信息
clusterMap.${key}.clusterNamestring逻辑集群的名称
clusterMap.${key}.healthyCheckPortint逻辑集群的健康检查断藕
clusterMap.${key}.useInstancePortForCheckboolean逻辑集群是否使用实例信息的端口进行健康检查
clusterMap.${key}.healthCheckerAbstractHealthChecker逻辑集群的健康检查类型
clusterMap.${key}.metadataMap<String,String>逻辑集群的元数据

请求示例

try {
# 以下请求均获取所有服务列表(最多前100个)。
Page<ServiceDetailInfo> result = namingMaintainService.listServicesWithDetail(Constants.DEFAULT_NAMESPACE_ID);
result = namingMaintainService.listServicesWithDetail(Constants.DEFAULT_NAMESPACE_ID, "", "");
result = namingMaintainService.listServicesWithDetail(Constants.DEFAULT_NAMESPACE_ID, "", "", 1, 10);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.7. 查询服务的订阅者列表

描述

查询指定服务的订阅者列表。

Page<SubscriberInfo> getSubscribers(String serviceName) throws NacosException;
Page<SubscriberInfo> getSubscribers(String groupName, String serviceName) throws NacosException;
Page<SubscriberInfo> getSubscribers(String namespaceId, String groupName, String serviceName) throws NacosException;
Page<SubscriberInfo> getSubscribers(String namespaceId, String groupName, String serviceName, int pageNo, int pageSize) throws NacosException;
Page<SubscriberInfo> getSubscribers(String namespaceId, String groupName, String serviceName, int pageNo, int pageSize, boolean aggregation) throws NacosException;
Page<SubscriberInfo> getSubscribers(Service service, int pageNo, int pageSize, boolean aggregation) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
pageNoint分页页码,默认为1。
pageSizeint分页每页大小,默认为100。
aggregationboolean是否聚合查询,默认为false,为false时仅查询请求所在节点的订阅者列表,为true时查询整个集群中此配置的订阅者列表。

返回参数

参数类型描述
Page<SubscriberInfo>订阅者列表的分页结果

请求示例

try {
# 以下请求均获取服务`maintain.client.test`的所有订阅者列表(最多前100个)。
Page<SubscriberInfo> result = namingMaintainService.getSubscribers("maintain.client.test");
result = namingMaintainService.getSubscribers(Constants.DEFAULT_GROUP, "maintain.client.test");
result = namingMaintainService.getSubscribers(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test");
result = namingMaintainService.getSubscribers(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", 1, 100);
result = namingMaintainService.getSubscribers(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", 1, 100, false);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.8. 查询支持的服务实例选择器列表

描述

通过此接口获取支持的服务实例选择器列表,仅返回实例选择器的名称列表。

List<String> listSelectorTypes() throws NacosException;

请求参数

返回参数

参数类型描述
List<String>实例选择器的名称列表

请求示例

try {
List<String> result = namingMaintainService.listSelectorTypes();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.9. 注册实例

描述

通过该接口注册一个服务的实例,默认注册为持久化实例。

String registerInstance(String serviceName, String ip, int port) throws NacosException;
String registerInstance(String groupName, String serviceName, String ip, int port) throws NacosException;
String registerInstance(String namespaceId, String groupName, String serviceName, String ip, int port) throws NacosException;
String registerInstance(String serviceName, String ip, int port, String clusterName) throws NacosException;
String registerInstance(String groupName, String serviceName, String ip, int port, String clusterName) throws NacosException;
String registerInstance(String namespaceId, String groupName, String serviceName, String ip, int port, String clusterName) throws NacosException;
String registerInstance(String serviceName, Instance instance) throws NacosException;
String registerInstance(String groupName, String serviceName, Instance instance) throws NacosException;
String registerInstance(String namespaceId, String groupName, String serviceName, Instance instance);
String registerInstance(Service service, Instance instance) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
clusterName(Instance.clusterName)string实例所属的逻辑集群名称
ip(Instance.ip)string实例的IP地址,支持域名
port(Instance.port)int实例的端口信息,取值0~65535
Instance.ephemeralboolean实例的持久化属性
Instance.weightdouble实例的权重
Instance.healthyboolean实例的健康状态
Instance.enabledboolean实例的上下线状态
Instance.instanceIdstring实例的ID
Instance.metadataMap<String,String>实例的元数据信息

返回参数

参数类型描述
String实例的注册结果描述

请求示例

try {
# 以下请求均给服务`maintain.client.test`注册一个实例,实例的ip为`127.0.0.1`,端口为`8080`。
String result = namingMaintainService.registerInstance("maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.registerInstance(Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.registerInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.registerInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.registerInstance("maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
result = namingMaintainService.registerInstance(Constants.DEFAULT_GROUP,"maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
result = namingMaintainService.registerInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP,"maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
Instance instance = new Instance();
instance.setIp("127.0.0.1");
instance.setPort(8080);
instance.setEphemeral(false);
result = namingMaintainService.registerInstance("maintain.client.test", instance);
result = namingMaintainService.registerInstance(Constants.DEFAULT_GROUP,"maintain.client.test", instance);
result = namingMaintainService.registerInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", instance);
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
result = namingMaintainService.registerInstance(service, instance);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.10. 注销实例

描述

通过该接口注销一个服务的实例。

String deregisterInstance(String serviceName, String ip, int port) throws NacosException;
String deregisterInstance(String groupName, String serviceName, String ip, int port) throws NacosException;
String deregisterInstance(String namespaceId, String groupName, String serviceName, String ip, int port) throws NacosException;
String deregisterInstance(String serviceName, String ip, int port, String clusterName) throws NacosException;
String deregisterInstance(String groupName, String serviceName, String ip, int port, String clusterName) throws NacosException;
String deregisterInstance(String namespaceId, String groupName, String serviceName, String ip, int port, String clusterName) throws NacosException;
String deregisterInstance(String serviceName, Instance instance) throws NacosException;
String deregisterInstance(String groupName, String serviceName, Instance instance) throws NacosException;
String deregisterInstance(String namespaceId, String groupName, String serviceName, Instance instance) throws NacosException;
String deregisterInstance(Service service, Instance instance) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
clusterName(Instance.clusterName)string实例所属的逻辑集群名称
ip(Instance.ip)string实例的IP地址,支持域名
port(Instance.port)int实例的端口信息,取值0~65535
Instance.ephemeralboolean实例的持久化属性

返回参数

参数类型描述
String实例的注销结果描述

请求示例

try {
# 以下请求均给服务`maintain.client.test`注销一个实例,实例的ip为`127.0.0.1`,端口为`8080`。
String result = namingMaintainService.registerInstance("maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.deregisterInstance(Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.deregisterInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.deregisterInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.deregisterInstance("maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
result = namingMaintainService.deregisterInstance(Constants.DEFAULT_GROUP,"maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
result = namingMaintainService.deregisterInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP,"maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
Instance instance = new Instance();
instance.setIp("127.0.0.1");
instance.setPort(8080);
instance.setEphemeral(false);
result = namingMaintainService.deregisterInstance("maintain.client.test", instance);
result = namingMaintainService.deregisterInstance(Constants.DEFAULT_GROUP,"maintain.client.test", instance);
result = namingMaintainService.deregisterInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", instance);
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
result = namingMaintainService.deregisterInstance(service, instance);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.11. 更新实例

描述

通过该接口注销一个服务实例的元数据信息,但实例的所属服务IP地址端口逻辑集群无法修改

String updateInstance(String serviceName, Instance instance) throws NacosException;
String updateInstance(String groupName, String serviceName, Instance instance) throws NacosException;
String updateInstance(String namespaceId, String groupName, String serviceName, Instance instance) throws NacosException;
String updateInstance(Service service, Instance instance) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
Instance.clusterNamestring实例所属的逻辑集群名称
Instance.ipstring实例的IP地址,支持域名
Instance.portint实例的端口信息,取值0~65535
Instance.ephemeralboolean实例的持久化属性
Instance.weightdouble实例的权重
Instance.healthyboolean实例的健康状态
Instance.enabledboolean实例的上下线状态
Instance.instanceIdstring实例的ID
Instance.metadataMap<String,String>实例的元数据信息

返回参数

参数类型描述
String实例的更新结果描述

请求示例

try {
Instance instance = new Instance();
instance.setIp("127.0.0.1");
instance.setPort(8080);
instance.setEphemeral(false);
instance.setEnabled(false);
# 以下请求均给更新服务`maintain.client.test`下的一个实例,实例的ip为`127.0.0.1`,端口为`8080`, 将实例的`enabled`修改为`false`。
String result = namingMaintainService.registerInstance("maintain.client.test", instance);
result = namingMaintainService.registerInstance(Constants.DEFAULT_GROUP,"maintain.client.test", instance);
result = namingMaintainService.registerInstance(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", instance);
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
result = namingMaintainService.registerInstance(service, instance);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.12. 批量更新实例元数据

描述

批量对指定服务下部分或全部实例更新元数据。

InstanceMetadataBatchResult batchUpdateInstanceMetadata(Service service, List<Instance> instances, Map<String, String> newMetadata) throws NacosException;

请求参数

参数名参数类型描述
Service.serviceNamestring服务的名称
Service.groupNamestring服务的分组名称
Service.namespaceIdstring服务所属的命名空间ID
instancesList<Instance>需要更新元数据的实例列表,仅需要传入ip,port,clusterName
newMetadataMap<String,String>新的元数据信息

返回参数

参数类型描述
InstanceMetadataBatchResult实例元数据更新的结果

其中InstanceMetadataBatchResult中的内容为:

参数名参数类型描述
updatedList<String>更新成功的实例id

请求示例

try {
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
Instance instance = new Instance();
instance.setIp("127.0.0.1");
instance.setPort(8080);
Map<String, String> newMetadata = Collections.singletonMap("testK", "testV");
InstanceMetadataBatchResult result = namingMaintainService.batchUpdateInstanceMetadata(service, Collections.singletonList(instance), newMetadata);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.13. 批量移除实例元数据

描述

批量对指定服务下部分或全部实例移除元数据。

InstanceMetadataBatchResult batchDeleteInstanceMetadata(Service service, List<Instance> instances, Map<String, String> newMetadata) throws NacosException;

请求参数

参数名参数类型描述
Service.serviceNamestring服务的名称
Service.groupNamestring服务的分组名称
Service.namespaceIdstring服务所属的命名空间ID
instancesList<Instance>需要更新元数据的实例列表,仅需要传入ip,port,clusterName
newMetadataMap<String,String>需要移除的元数据信息

返回参数

参数类型描述
InstanceMetadataBatchResult实例元数据更新的结果

其中InstanceMetadataBatchResult中的内容为:

参数名参数类型描述
updatedList<String>移除成功的实例id

请求示例

try {
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
Instance instance = new Instance();
instance.setIp("127.0.0.1");
instance.setPort(8080);
Map<String, String> newMetadata = Collections.singletonMap("testK", "testV");
InstanceMetadataBatchResult result = namingMaintainService.batchDeleteInstanceMetadata(service, Collections.singletonList(instance), newMetadata);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.14. 更新实例的部分元数据

描述

更新实例的部分元数据。相比更新实例API,仅会更新有传入内容的元数据,若实例元数据中的key不再接口传入的参数中时,则不进行更新。

例如当前元数据为k1=v1,k2=v2,接口传入k2=v3,则元数据变为k1=v1,k2=v3,而不是k2=v3

但需要注意的是,Instance对象中部分内容存在默认值(如权重等),需要传入对应值,否则会默认值被覆盖。

String partialUpdateInstance(Service service, Instance instance) throws NacosException;

请求参数

参数名参数类型描述
Service.serviceNamestring服务的名称
Service.groupNamestring服务的分组名称
Service.namespaceIdstring服务所属的命名空间ID
Instance.clusterNamestring实例所属的逻辑集群名称
Instance.ipstring实例的IP地址,支持域名
Instance.portint实例的端口信息,取值0~65535
Instance.ephemeralboolean实例的持久化属性
Instance.weightdouble实例的权重
Instance.healthyboolean实例的健康状态
Instance.enabledboolean实例的上下线状态
Instance.metadataMap<String,String>实例的元数据信息

返回参数

参数类型描述
String实例的更新结果描述

请求示例

try {
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.15. 查询服务实例列表

描述

查询指定服务下满足条件的所有实例列表。

List<Instance> listInstances(String serviceName, String clusterName, boolean healthyOnly) throws NacosException;
List<Instance> listInstances(String groupName, String serviceName, String clusterName, boolean healthyOnly) throws NacosException;
List<Instance> listInstances(String namespaceId, String groupName, String serviceName, String clusterName, boolean healthyOnly) throws NacosException;
List<Instance> listInstances(Service service, String clusterName, boolean healthyOnly) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
clusterNamestring实例所属的逻辑集群名称,为空时返回所有逻辑集群的实例,需要查询多个逻辑集群是,使用逗号,分割
healthyOnlyboolean是否仅返回健康的实例

返回参数

参数类型描述
List<Instance>实例信息列表

请求示例

try {
List<Instance> result = namingMaintainService.listInstances("maintain.client.test", "", false);
result = namingMaintainService.listInstances(Constants.DEFAULT_GROUP, "maintain.client.test", "", false);
result = namingMaintainService.listInstances(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "", false);
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
result = namingMaintainService.listInstances(service, "", false);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.16. 查询指定服务实例的详情

描述

查询指定服务实例的详情,主要用于查询该实例的元数据及其他附属信息(如权重等)。

Instance getInstanceDetail(String serviceName, String ip, int port) throws NacosException;
Instance getInstanceDetail(String groupName, String serviceName, String ip, int port) throws NacosException;
Instance getInstanceDetail(String namespaceId, String groupName, String serviceName, String ip, int port) throws NacosException;
Instance getInstanceDetail(String serviceName, String ip, int port, String clusterName) throws NacosException;
Instance getInstanceDetail(String groupName, String serviceName, String ip, int port, String clusterName) throws NacosException;
Instance getInstanceDetail(String namespaceId, String groupName, String serviceName, String ip, int port, String clusterName) throws NacosException;
Instance getInstanceDetail(Service service, Instance instance) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
clusterName(Instance.clusterName)string实例所属的逻辑集群名称
ip(Instance.ip)string实例的IP地址,支持域名
port(Instance.port)int实例的端口信息,取值0~65535

返回参数

参数类型描述

请求示例

try {
Instance result = namingMaintainService.getInstanceDetail("maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.getInstanceDetail(Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.getInstanceDetail(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "127.0.0.1", 8080);
result = namingMaintainService.getInstanceDetail("maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
result = namingMaintainService.getInstanceDetail(Constants.DEFAULT_GROUP,"maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
result = namingMaintainService.getInstanceDetail(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP,"maintain.client.test", "127.0.0.1", 8080, Constants.DEFAULT_CLUSTER_NAME);
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
Instance instance = new Instance();
instance.setIp("127.0.0.1");
instance.setPort(8080);
instance.setClusterName(Constants.DEFAULT_CLUSTER_NAME);
result = namingMaintainService.getInstanceDetail(service, instance);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.17. 查询注册中心相关的统计信息

描述

查询注册中心相关的统计信息,主要用于查询注册中心中可用状态,实例个数,服务个数等。

MetricsInfo getMetrics(boolean onlyStatus) throws NacosException;

请求参数

参数名参数类型描述
onlyStatusboolean是否仅查询可用状态。

返回参数

参数类型描述
MetricsInfo注册中心的统计信息

其中MetricsInfo中内容如下:

参数名参数类型描述
statusstring注册中心的可用状态,如UP
serviceCountint服务总个数
instanceCountint服务实例总个数
subscribeCountint服务订阅者总个数
clientCountint客户端连接总个数
connectionBasedClientCountint基于长连接的客户端总个数,对应SDK版本大于2.0以上的客户端数量
ephemeralIpPortClientCountint基于IP端口的临时客户端总个数,对应SDK版本小于2.0的版本客户端数量,及包括通过http openAPI及运维API注册的临时客户端。
persistentIpPortClientCountint基于IP端口的持久化客户端总个数,对应持久化实例的客户端数量。
responsibleClientCountint由此Nacos Server节点负责维护的客户端总个数, 包括直接长连接在此节点的connectionBasedClientCount以及Distro协议认为应该由此节点负责的ephemeralIpPortClientCountpersistentIpPortClientCount

请求示例

try {
MetricsInfo metricsInfo = namingMaintainService.getMetrics(false);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.18. 设置注册中心的日志级别

描述

设置注册中心相关模块日志的日志级别。

String setLogLevel(String logName, String logLevel) throws NacosException;

请求参数

参数名参数类型描述
:---------:-------:----------------------------------------
logNamestring日志模块名称,如naming-server, naming-event
logLevelstring日志级别(如INFODEBUG

返回参数

参数类型描述
String设置日志级别的结果信息

请求示例

try {
String result = namingMaintainService.setLogLevel("naming-server", "DEBUG");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.19. 更新持久化实例的健康状态。

描述

更新持久化实例的健康状态。

String updateInstanceHealthStatus(Service service, Instance instance) throws NacosException;

请求参数

参数名参数类型描述
serviceName(Service.serviceName)string服务的名称
groupName(Service.groupName)string服务的分组名称
namespaceId(Service.namespaceId)string服务所属的命名空间ID
clusterName(Instance.clusterName)string实例所属的逻辑集群名称
ip(Instance.ip)string实例的IP地址,支持域名
port(Instance.port)int实例的端口信息,取值0~65535
healthy(Instance.healthy)boolean实例的目标健康状态

返回参数

参数类型描述
String更新健康状态结果描述

请求示例

try {
# 更新`maintain.client.test`下的实例`127.0.0.1:8080`的健康状态为false.
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
Instance instance = new Instance();
instance.setIp("127.0.0.1");
instance.setPort(8080);
instance.setClusterName(Constants.DEFAULT_CLUSTER_NAME);
instance.setEphemeral(false)
instance.setHealthy(false);
String result = namingMaintainService.updateInstanceHealthStatus(service, instance);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.20. 查询支持的健康检查类型

描述

通过此接口查询支持的健康检查类型。

Map<String, AbstractHealthChecker> getHealthCheckers() throws NacosException;

请求参数

返回参数

参数类型描述
Map<String, AbstractHealthChecker>支持的健康检查方式的Map,key为类型,value为具体的健康检查器的对应配置内容

请求示例

try {
Map<String, AbstractHealthChecker> result = namingMaintainService.getHealthCheckers();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.21. 更新逻辑集群的元数据

描述

更新指定服务下指定逻辑集群的元数据。

String updateCluster(Service service, ClusterInfo cluster) throws NacosException;

请求参数

参数名参数类型描述
Service.serviceNamestring服务的名称
Service.groupNamestring服务的分组名称
Service.namespaceIdstring服务所属的命名空间ID
ClusterInfo.clusterNamestring逻辑集群的名称
ClusterInfo.healthCheckerstring逻辑集群的健康检查类型,通过查询支持的健康检查类型获取
ClusterInfo.healthyCheckPortstring健康检查的端口
ClusterInfo.useInstancePortForCheckstring是否使用实例所注册的端口进行健康检查,为true时将忽略healthyCheckPort设置的端口
ClusterInfo.metadataMap<String,String>实例所属的元数据信息

返回参数

参数类型描述

请求示例

try {
Service service = new Service();
service.setNamespaceId(Constants.DEFAULT_NAMESPACE_ID);
service.setGroupName(Constants.DEFAULT_GROUP);
service.setName("maintain.client.test");
ClusterInfo clusterInfo = new ClusterInfo();
clusterInfo.setClusterName(Constants.DEFAULT_CLUSTER_NAME);
clusterInfo.setHealthChecker(new AbstractHealthChecker.None());
clusterInfo.setUseInstancePortForCheck(true);
clusterInfo.setMetadata(Collections.singletonMap("testK", "testV"));
String result = namingMaintainService.updateCluster(service, clusterInfo);
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.22. 查询服务客户端列表

描述

获取注册中心中所有注册或订阅服务的客户端的列表。

List<String> getClientList() throws NacosException;

请求参数

返回参数

参数类型描述
List<String>客户端的clientId列表

请求示例

try {
List<String> result = namingMaintainService.getClientList();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.23. 查询服务客户端详情

描述

查询服务客户端的详细信息。不同版本的客户端信息,返回的内容可能有所不同。

ClientSummaryInfo getClientDetail(String clientId) throws NacosException;

请求参数

参数名参数类型描述
clientIdstring客户端的clientId,可通过日志或查询服务客户端列表获得

返回参数

参数类型描述
ClientSummaryInfo客户端总结信息

其中ClientSummaryInfo中的内容如下:

参数名参数类型描述
clientIdstring客户端id
ephemeralboolean是否为持久化服务的客户端
lastUpdatedTimelong客户端最后一次进行更新(注册或注销)的时间戳
clientTypestring客户端的类型,ipPortconnection,分别对应1.X客户端或HTTP openAPI访问 和 2.X及以上的客户端或GRPC openAPI访问。
connectTypestringclientTypeconnection时,该字段表示客户端的连接类型,当前为grpc
appNamestring客户端的应用名称,需要在客户端连接时添加在连接元数据中,默认为unknown
versionstring客户端的版本,如Nacos-Java-Client:v3.0.0
clientIpstring客户端的IP地址, 由于存在代理注册(如Nacos-Sync)的场景,此IP地址可能与此客户端所注册的服务实例的IP地址不同。
clientPortint客户端的Port地址, 表示此连接的remote port。

请求示例

try {
ClientSummaryInfo result = namingMaintainService.getClientDetail("127.0.0.1:8080#true");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.24. 查询指定服务客户端所注册的服务列表

描述

查询指定服务客户端所注册的服务列表。

List<ClientServiceInfo> getPublishedServiceList(String clientId) throws NacosException;

请求参数

参数名参数类型描述
clientIdstring客户端的clientId,可通过日志或查询服务客户端列表获得

返回参数

参数类型描述
List<ClientServiceInfo>客户端所注册的服务列表信息

其中ClientServiceInfo的内容如下:

参数名参数类型描述
namespaceIdstring服务所属的namespaceId
groupNamestring服务的分组名称
serviceNamestring服务的名称
publisherInfoClientPublisherInfo客户端所注册的服务实例信息
publisherInfo.ipstring实例的IP
publisherInfo.portstring实例的端口
publisherInfo.clusterNamestring实例的逻辑集群名称

请求示例

try {
List<ClientServiceInfo> result = namingMaintainService.getPublishedServiceList("127.0.0.1:8080#true");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.25. 查询指定服务客户端所订阅的服务列表

描述

查询指定服务客户端所订阅的服务列表。

List<ClientServiceInfo> getSubscribeServiceList(String clientId) throws NacosException;

请求参数

参数名参数类型描述
clientIdstring客户端的clientId,可通过日志或查询服务客户端列表获得

返回参数

参数类型描述
List<ClientServiceInfo>客户端所订阅的服务列表信息

其中ClientServiceInfo的内容如下:

参数名参数类型描述
namespaceIdstring服务所属的namespaceId
groupNamestring服务的分组名称
serviceNamestring服务的名称
subscriberInfoClientSubscriberInfo客户端的订阅者信息
subscriberInfo.appNamestring订阅者所属的应用名称,默认unknown
subscriberInfo.agentstring订阅者的客户端版本
subscriberInfo.addressstring订阅者的地址信息格式为IP:PORT

请求示例

try {
List<ClientServiceInfo> result = namingMaintainService.getSubscribeServiceList("127.0.0.1:8080#true");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.26. 查询注册了指定服务的服务客户端列表

描述

查询哪些客户端注册了指定的服务。

List<ClientPublisherInfo> getPublishedClientList(String namespaceId, String groupName, String serviceName, String ip, Integer port) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring服务所属的namespaceId
groupNamestring服务的分组名称
serviceNamestring服务的名称
ipstring服务实例的ip,为空时表示匹配所有服务实例
portint服务实例的端口,为空时表示匹配所有服务实例

返回参数

参数类型描述
List<ClientPublisherInfo>注册服务实例的客户端信息

其中ClientPublisherInfo的内容如下:

参数名参数类型描述
clientIdstring注册服务的客户端ID
ipstring注册的实例的IP
portstring注册的实例的端口
clusterNamestring注册的实例的逻辑集群名称

请求示例

try {
List<ClientPublisherInfo> result = namingMaintainService.getPublishedClientList(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "", "");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

4.27. 查询订阅了指定服务的服务客户端列表

描述

查询哪些客户端订阅了指定的服务。

List<ClientSubscriberInfo> getSubscribeClientList(String namespaceId, String groupName, String serviceName, String ip, Integer port) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring服务所属的namespaceId
groupNamestring服务的分组名称
serviceNamestring服务的名称
ipstring服务订阅者的ip,为空时表示匹配所有订阅者
portint服务订阅者的端口,为空时表示匹配所有订阅者

返回参数

参数类型描述
List<ClientSubscriberInfo>订阅服务的客户端信息

其中ClientSubscriberInfo的内容如下:

参数名参数类型描述
clientIdstring订阅服务的客户端ID
appNamestring订阅者所属的应用名称,默认unknown
agentstring订阅者的客户端版本
addressstring订阅者的地址信息格式为IP:PORT

请求示例

try {
List<ClientSubscriberInfo> result = namingMaintainService.getSubscribeClientList(Constants.DEFAULT_NAMESPACE_ID, Constants.DEFAULT_GROUP, "maintain.client.test", "", "");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5. 其他Nacos核心运维API

Nacos核心的运维API可以通过NacosNamingMaintainerServiceNacosConfigMaintainerService进行调用。

5.1. 查询Nacos Server的状态信息

描述

查询Nacos Server的状态信息,状态信息包括版本号, 运行模式, 开启鉴权, 运行的模块等信息

Map<String, String> getServerState() throws NacosException;

请求参数

返回参数

参数类型描述
Map<String, String>Nacos Server 的状态信息

请求示例

try {
Map<String,String> result = namingMaintainService.getServerState();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.2. 获取Nacos Server的存活状态

描述

获取Nacos Server的存活状态

Boolean liveness() throws NacosException;

请求参数

返回参数

参数类型描述
booleantrue代表存活,false代表存在问题

请求示例

try {
boolean result = namingMaintainService.liveness();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.3. 获取Nacos Server的就绪状态

描述

获取Nacos Server的就绪状态

Boolean readiness() throws NacosException;

请求参数

返回参数

参数类型描述
booleantrue代表就绪,false代表未就绪

请求示例

try {
boolean result = namingMaintainService.readiness();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.4. Nacos Raft操作

描述

通过此接口, 可以对Nacos Server中的Raft协议进行一定的运维操作,如重新选主进行快照等。

String raftOps(String command, String value, String groupId) throws NacosException;

请求参数

参数名参数类型描述
commandstringRaft 操作命令,见com.alibaba.nacos.core.distributed.raft.utils.JRaftOps
valuestringRaft 操作的目标值
groupIdstring操作的目标Raft Group, 为空时会对所有的Raft Group进行操作。

返回参数

参数类型描述
String操作结果

请求示例

try {
String result = namingMaintainService.raftOps("doSnapshot", "172.0.0.1:7848", "");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.5. 查询Nacos Server支持的分布式ID生成器列表

描述

查询Nacos Server支持的分布式ID生成器列表。如雪花Id生成器

List<IdGeneratorInfo> getIdGenerators() throws NacosException;

请求参数

返回参数

参数类型描述
List<IdGeneratorInfo>Id生成器信息列表

请求示例

try {
List<IdGeneratorInfo> result = namingMaintainService.getIdGenerators();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.6. 更新核心模块日志级别

描述

更新核心模块日志级别

void updateLogLevel(String logName, String logLevel) throws NacosException;

请求参数

参数名参数类型描述
logNamestring日志模块名称,如core-auth
logLevelstring日志级别(如INFODEBUG

返回参数

请求示例

try {
namingMaintainService.updateLogLevel("core-auth", "INFO");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.7. 查询Nacos Server节点列表

描述

查询Nacos Server节点列表。

Collection<NacosMember> listClusterNodes(String address, String state) throws NacosException;

请求参数

参数名参数类型描述
addressstringServer节点的地址,默认为"",为空时返回所有节点,不为空时返回满足前缀匹配的节点
statestringServer节点的状态,如UP,默认为"",为空时返回所有节点,不为空时返回满足此状态的节点

返回参数

参数类型描述
Collection<NacosMember>Nacos Server节点列表

其中NacosMember的字段说明如下:

参数名参数类型描述
ipstringServer节点的IP
portintServer节点的主端口
stateNodeStateServer节点的运行状态
extendInfoMap<String, Object>Server节点的拓展数据,如Raft的相关信息

请求示例

try {
Collection<NacosMember> result = namingMaintainService.namingMaintainService("", "");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.8. 更新Nacos Server的地址发现模式

描述

Nacos Server的地址发现模式是控制Nacos Server发现同集群的其他节点地址的方式,用于在Nacos Server启动和运行中组建Nacos集群。

通过此接口可以动态的修改Nacos Server的地址发现模式,实现使用不同的方式进行Nacos集群的组建。

Boolean updateLookupMode(String type) throws NacosException;

请求参数

参数名参数类型描述
typestring地址发现模式的类型,默认支持fileaddress

返回参数

参数类型描述
booleantrue代表更新成功

请求示例

try {
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.9. 查询当前Nacos Server节点的长连接列表

描述

查询连接到当前Nacos Server节点的长连接列表。

Map<String, ConnectionInfo> getCurrentClients() throws NacosException;

请求参数

返回参数

参数类型描述
Map<String, ConnectionInfo>长连接列表,key为连接ID,value为连接的详细信息

请求示例

try {
Map<String, ConnectionInfo> result = namingMaintainService.getCurrentClients();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.10. 均匀Nacos Server节点的长连接负载

描述

Nacos Server节点的长连接负载是控制Nacos Server节点的长连接负载的方式,用于在Nacos Server节点之间均匀的负载长连接。

String reloadConnectionCount(Integer count, String redirectAddress) throws NacosException;

请求参数

参数名参数类型描述
countint预期保留的长连接个数
redirectAddressstring预期重定向地址,默认为空,为空为随机进行负载

返回参数

参数类型描述
String均匀连接的结果

请求示例

try {
String result = namingMaintainService.reloadConnectionCount(10, "");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.11. 自动均匀Nacos Server节点的长连接负载

描述

让Nacos Server根据长连接数量自动进行Server见的均匀负载。

String smartReloadCluster(String loaderFactorStr) throws NacosException;

请求参数

参数名参数类型描述
loaderFactorStrstring自动均匀负载时的方差比例,默认0.1f,代表自动均匀负载时,集群节点间最大的连接数和最小的连接数差异在10%以内

返回参数

参数类型描述
String均匀连接的结果

请求示例

try {
String result = namingMaintainService.smartReloadCluster("0.1f");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.12. 指定单个Nacos客户端连接进行重载

描述

指定单个Nacos客户端连接进行重载。

String reloadSingleClient(String connectionId, String redirectAddress) throws NacosException;

请求参数

参数名参数类型描述
connectionIdstring连接Id
redirectAddressstring预期重定向地址,默认为空,为空为随机进行负载

返回参数

参数类型描述
String均匀连接的结果

请求示例

try {
String result = namingMaintainService.reloadSingleClient("111111111_127.0.0.1_10000");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.13. 查询Nacos Server长连接负载统计信息

描述

查询Nacos Server长连接负载统计信息。

ServerLoaderMetrics getClusterLoaderMetrics() throws NacosException;

请求参数

返回参数

参数类型描述
ServerLoaderMetrics长连接负载统计信息

请求示例

try {
ServerLoaderMetrics result = namingMaintainService.getClusterLoaderMetrics();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.14. 查询命名空间列表

描述

查询命名空间列表。

List<Namespace> getNamespaceList() throws NacosException;

请求参数

返回参数

参数类型描述
List<Namespace>命名空间列表

其中Namespace中的属性如下:

参数名参数类型描述
namespacestring命名空间id
namespaceShowNamestring命名空间的名字
namespaceDescstring命名空间的描述
quotaint命名空间下配置的个数配额(需要配合配置中心的容量管理使用,否则不实际生效),默认200
configCountint命名空间下配置的个数
typeint命名空间的类型,预留字段,目前均为1

请求示例

try {
List<Namespace> result = namingMaintainService.getNamespaceList();
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.15. 查询指定命名空间

描述

查询指定命名空间。

Namespace getNamespace(String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring命名空间ID

返回参数

参数类型描述
Namespace命名空间的详情

其中Namespace中的属性如下:

参数名参数类型描述
namespacestring命名空间id
namespaceShowNamestring命名空间的名字
namespaceDescstring命名空间的描述
quotaint命名空间下配置的个数配额(需要配合配置中心的容量管理使用,否则不实际生效),默认200
configCountint命名空间下配置的个数
typeint命名空间的类型,预留字段,目前均为1

请求示例

try {
Namespace result = namingMaintainService.getNamespace("public");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.16. 创建命名空间

描述

创建命名空间。

Boolean createNamespace(String namespaceName, String namespaceDesc) throws NacosException;
Boolean createNamespace(String namespaceId, String namespaceName, String namespaceDesc) throws NacosException;

请求参数

参数名参数类型描述
namespaceNamestring命名空间的名字
namespaceDescstring命名空间的描述
namespaceIdstring自定义的命名空间ID,默认为"",为空时将会由Nacos自动生成的UUID作为命名空间ID

返回参数

参数类型描述
boolean创建命名空间的结果

请求示例

try {
boolean result = namingMaintainService.createNamespace("test", "test");
result = namingMaintainService.createNamespace("test", "test", "test");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.17. 更新命名空间

描述

更新指定命名空间的名字或描述。

Boolean updateNamespace(String namespaceId, String namespaceName, String namespaceDesc) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring需要更新的命名空间ID。
namespaceNamestring修改后的命名空间名称。
namespaceDescstring修改后的命名空间描述。

返回参数

参数类型描述
boolean更新命名空间的结果

请求示例

try {
boolean result = namingMaintainService.updateNamespace("test", "testNamespaceName", "testNamespaceDesc");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.18. 删除命名空间

描述

删除指定命名空间。

Boolean deleteNamespace(String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring要删除的命名空间id

返回参数

参数类型描述
boolean删除命名空间的结果

请求示例

try {
boolean result = namingMaintainService.deleteNamespace("test");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

5.14. 检查命名空间是否存在

描述

检查命名空间是否存在。

Boolean checkNamespaceIdExist(String namespaceId) throws NacosException;

请求参数

参数名参数类型描述
namespaceIdstring待检查的命名空间id

返回参数

参数类型描述
boolean命名空间的检查结果,true表示该命名空间id已存在

请求示例

try {
boolean result = namingMaintainService.checkNamespaceIdExist("test");
} catch (NacosException e) {
e.printStackTrace();
}

异常说明

读取配置超时或网络异常,抛出 NacosException 异常。

收藏
收藏暂无数据,请从小助手对话框添加
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
无疑 专家智能答疑
当前服务输出的内容均由人工智能模型生成,其生成内容的准确性和完整性无法保证,不代表我们的态度或观点。
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
账号:CNPilot
专家答疑