运维SDK

运维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;

请求参数

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

返回值

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

具体ConfigDetailInfo的内容如下:

参数名 参数类型 描述
id long 配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceId string 配置所属的命名空间ID。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节。
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、””),不超过 256 字节。
md5 string 配置内容的md5值。
type string 配置的类型,如properties、json、yaml等,主要用于标记和展示。
appName string 配置所属的应用名称。
createTime long 配置的创建时间,为时间戳,单位为毫秒。
modifyTime long 配置的最新更新时间,为时间戳,单位为毫秒。
content string 配置内容。
desc string 配置的描述信息。
encryptedDataKey string 配置的加密密钥,当使用配置的加密功能时,该字段才有值。
createUser string 创建此配置的用户名。
createIp string 创建此配置的来源IP。
configTags string 此配置的标签,多个标签用逗号,分隔。

请求示例

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 配置,以便通过自动化手段降低运维成本。

运维SDK - 图1 注意

创建和修改配置时使用的同一个发布接口,当配置不存在时会创建配置,当配置已存在时会更新配置。

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;

请求参数

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

返回参数

参数类型 描述
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 配置,以便通过自动化手段降低运维成本。

运维SDK - 图2 注意

当配置已存在时会删除该配置,当配置不存在时会直接返回成功消息。

boolean deleteConfig(String dataId) throws NacosException;

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

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

请求参数

参数名 参数类型 描述
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、” ”),不超过 256 字节。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、””),不超过128字节。
namespaceId long 配置所属的命名空间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;

请求参数

参数名 参数类型 描述
ids List<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;

请求参数

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

返回参数

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

具体Page及ConfigBasicInfo的内容如下:

参数名 参数类型 描述
totalCount int 符合该条件下的配置总数。
pageNumber int 当前页码。
pagesAvailable int 分页的总页数。
pageItems List<ConfigBasicInfo> 当前页的配置列表。
参数名 参数类型 描述
--- --- ---
id long 配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceId string 配置所属的命名空间ID。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节。
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、””),不超过 256 字节。
md5 string 配置内容的md5值。
type string 配置的类型,如properties、json、yaml等,主要用于标记和展示。
appName string 配置所属的应用名称。
createTime long 配置的创建时间,为时间戳,单位为毫秒。
modifyTime long 配置的最新更新时间,为时间戳,单位为毫秒。

请求示例

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。

运维SDK - 图3 注意

此接口较为消耗性能,建议谨慎使用,特别是通过配置内容进行搜索时,性能将严重下降。

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;

请求参数

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

返回参数

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

具体Page及ConfigBasicInfo的内容如下:

参数名 参数类型 描述
totalCount int 符合该条件下的配置总数。
pageNumber int 当前页码。
pagesAvailable int 分页的总页数。
pageItems List<ConfigBasicInfo> 当前页的配置列表。
参数名 参数类型 描述
--- --- ---
id long 配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceId string 配置所属的命名空间ID。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节。
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、””),不超过 256 字节。
md5 string 配置内容的md5值。
type string 配置的类型,如properties、json、yaml等,主要用于标记和展示。
appName string 配置所属的应用名称。
createTime long 配置的创建时间,为时间戳,单位为毫秒。
modifyTime long 配置的最新更新时间,为时间戳,单位为毫秒。

请求示例

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,可以将所指定的配置克隆到另一个命名空间下,克隆时可以指定新的groupName及dataId.

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

请求参数

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

其中ConfigCloneInfo中的参数详情为:

参数名 参数类型 描述
configId long 配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
targetGroupName string 目标配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节,为空时则使用配置当前的分组。
targetDataId string 目标配置 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. 获取命名空间下所有配置列表

描述

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

运维SDK - 图4 注意

此API不同于查询配置列表,不会进行分页,而是将命名空间下所有的配置一次性返回,需要确保使用此API时,命名空间下的配置数量不能太大,否则可能会导致内存溢出。 尽量使用查询配置列表,进行分页查询。

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

请求参数

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

返回参数

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

具体ConfigBasicInfo的内容如下:

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

请求示例

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;

请求参数

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

返回参数

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

其中ConfigListenerInfo的内容如下:

参数名 参数类型 描述
queryType string 此接口固定返回config
listenersStatus Map<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;

请求参数

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

返回参数

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

其中ConfigListenerInfo的内容如下:

参数名 参数类型 描述
queryType string 此接口固定返回ip
listenersStatus Map<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 配置,方便修改配置时进行测试,降低因配置错误导致的应用故障范围。

运维SDK - 图5 注意

灰度发布的配置不能重复灰度,若该配置已经存在一个Beta灰度配置存在,则该接口将发布失败,需要先停止灰度后,再重新发布。

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

请求参数

参数名 参数类型 描述
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“ ”),不超过 256 字节。
groupName string 配置分组。只允许英文字符和 4 种特殊字符(“.”、“:”、“-”、“”),不超过 128 字节。
namespaceId long 配置所属的命名空间ID。
content string 配置内容,不超过 100K 字节。
desc string 配置的描述内容。
type string 配置类型,见 com.alibaba.nacos.api.config.ConfigType,默认为TEXT
appName string 配置所属的应用名称。
srcUser string 创建此配置的用户名,即代理此用户进行配置发布,此配置的createUser将为此用户,若传入空字串,则表示当前登录的用户名作为createUser。
configTags string 此配置的标签,多个标签用逗号,分隔。
betaIps string 配置的灰度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配置

运维SDK - 图6 注意

只有通过发布Beta灰度配置将配置变更为Beta发布中的状态,调用此接口才能停止Beta发布状态。

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

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

请求参数

参数名 参数类型 描述
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、” ”),不超过 256 字节。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、””),不超过128字节。
namespaceId string 配置所属的命名空间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配置

运维SDK - 图7 注意

只有通过发布Beta灰度配置将配置变更为Beta发布中的状态,调用此接口才能查询Beta发布状态。

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

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

请求参数

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

返回参数

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

其中ConfigGrayInfo的内容如下:

参数名 参数类型 描述
id long 配置在实际存储介质中的ID,没有业务含义,仅作为配置在存储介质中的唯一标识。一般为唯一自增ID。
namespaceId string 配置所属的命名空间ID。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节。
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、””),不超过 256 字节。
md5 string 配置内容的md5值。
type string 配置的类型,如properties、json、yaml等,主要用于标记和展示。
appName string 配置所属的应用名称。
createTime long 配置的创建时间,为时间戳,单位为毫秒。
modifyTime long 配置的最新更新时间,为时间戳,单位为毫秒。
content string 配置内容。
desc string 配置的描述信息。
encryptedDataKey string 配置的加密密钥,当使用配置的加密功能时,该字段才有值。
createUser string 创建此配置的用户名。
createIp string 创建此配置的来源IP。
configTags string 此配置的标签,多个标签用逗号,分隔。
grayName string 灰度名称,固定为beta
grayRule string 灰度的规则,格式为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;

请求参数

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

返回参数

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

其中Page及ConfigHistoryBasicInfo的内容如下:

参数名 参数类型 描述
totalCount int 符合该条件下的配置历史版本总数。
pageNumber int 当前页码。
pagesAvailable int 分页的总页数。
pageItems List<ConfigHistoryBasicInfo> 当前页的配置历史版本列表。
参数名 参数类型 描述
--- --- ---
id long 配置历史版本的ID,没有业务含义,仅作为配置历史版本在存储介质中的唯一标识。一般为唯一自增ID。
namespaceId string 配置所属的命名空间ID。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节。
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、””),不超过 256 字节。
md5 string 配置内容的md5值。
type string 配置的类型,如properties、json、yaml等,主要用于标记和展示。
appName string 配置所属的应用名称。
createTime long 配置的创建时间,为时间戳,单位为毫秒。
modifyTime long 配置的最新更新时间,为时间戳,单位为毫秒。
srcUser string 操作此版本的用户名。
srcIp string 操作此版本的来源IP。
opType string 此历史版本的操作类型,I为创建,U为更新,D为删除
publishType string 此历史版本的发布类型,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;

请求参数

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

返回参数

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

其中ConfigHistoryDetailInfo的内容如下:

参数名 参数类型 描述
id long 配置历史版本的ID,没有业务含义,仅作为配置历史版本在存储介质中的唯一标识。一般为唯一自增ID。
namespaceId string 配置所属的命名空间ID。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节。
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、””),不超过 256 字节。
md5 string 配置内容的md5值。
type string 配置的类型,如properties、json、yaml等,主要用于标记和展示。
appName string 配置所属的应用名称。
createTime long 配置的创建时间,为时间戳,单位为毫秒。
modifyTime long 配置的最新更新时间,为时间戳,单位为毫秒。
content string 配置历史版本的内容。
encryptedDataKey string 配置解密的密钥,仅当配置为加密配置时返回。
grayName string 配置历史版本的灰度发布名称,当此次历史版本为灰度发布时存在,一般为beta
extInfo string 历史版本的扩展信息,目前存储灰度发布时的发布规则,如灰度的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;

请求参数

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

返回参数

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

其中ConfigHistoryDetailInfo的内容如下:

参数名 参数类型 描述
id long 配置历史版本的ID,没有业务含义,仅作为配置历史版本在存储介质中的唯一标识。一般为唯一自增ID。
namespaceId string 配置所属的命名空间ID。
groupName string 配置分组。只允许英文字符和4种特殊字符(”.”、”:”、”-”、” ”),不超过128字节。
dataId string 配置 ID。只允许英文字符和 4 种特殊字符(”.”、”:”、”-”、””),不超过 256 字节。
md5 string 配置内容的md5值。
type string 配置的类型,如properties、json、yaml等,主要用于标记和展示。
appName string 配置所属的应用名称。
createTime long 配置的创建时间,为时间戳,单位为毫秒。
modifyTime long 配置的最新更新时间,为时间戳,单位为毫秒。
content string 配置历史版本的内容。
encryptedDataKey string 配置解密的密钥,仅当配置为加密配置时返回。
grayName string 配置历史版本的灰度发布名称,当此次历史版本为灰度发布时存在,一般为beta
extInfo string 历史版本的扩展信息,目前存储灰度发布时的发布规则,如灰度的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;

请求参数

参数名 参数类型 描述
logName string 日志模块名称,如config-server, config-dump等
logLevel string 日志级别(如INFO、DEBUG)

返回参数

参数类型 描述
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.metadata Map<String,String> 服务的元数据
Service.selector Selector 服务的实例选择器,默认为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. 更新服务

描述

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

运维SDK - 图8 注意

该接口更新时会覆盖掉服务原来的内容信息,因此更新时需要传入完整的服务信息,避免在更新部分数据时将其他信息丢失。

另外当服务不存在时,更新时将会失败,请使用创建服务。

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.metadata Map<String,String> 服务的元数据
Service.selector Selector 服务的实例选择器,默认为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的元数据等。

运维SDK - 图9 注意

此接口返回的服务详情不包含服务下的实例列表数据,仅包含元数据等信息,若需要获取服务下的实例列表及实例信息,请使用查询服务实例列表

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中的详细内容有:

参数名 参数类型 描述
namespaceId string 服务的命名空间ID
groupName string 服务的分组名称
serviceName string 服务的名称
ephemeral boolean 服务的持久化属性
protectThreshold float 服务的保护阈值
selector Selector 服务的实例选择器
metadata Map<String,String> 服务的元数据
clusterMap Map<String, ClusterInfo> 服务下的逻辑集群信息Map,其中key为逻辑集群名称,value为详细信息
clusterMap.${key}.clusterName string 逻辑集群的名称
clusterMap.${key}.healthyCheckPort int 逻辑集群的健康检查断藕
clusterMap.${key}.useInstancePortForCheck boolean 逻辑集群是否使用实例信息的端口进行健康检查
clusterMap.${key}.healthChecker AbstractHealthChecker 逻辑集群的健康检查类型
clusterMap.${key}.metadata Map<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;

请求参数

参数名 参数类型 描述
namespaceId string 服务所属的命名空间ID
groupNameParam string 服务的分组名称模版,支持使用__进行前缀后缀的模糊匹配,为空时获取所有分组。
serviceNameParam string 服务的名称模版,支持使用``进行前缀后缀的模糊匹配,为空时获取所有服务。
ignoreEmptyService boolean 是否忽略空服务,默认为true,为true将不返回空服务。
pageNo int 分页页码,默认为1。
pageSize int 分页每页大小,默认为100。

返回参数

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

具体Page及ServiceView的内容如下:

参数名 参数类型 描述
totalCount int 符合该条件下的服务总数。
pageNumber int 当前页码。
pagesAvailable int 分页的总页数。
pageItems List<ConfigBasicInfo> 当前页的服务列表。
参数名 参数类型 描述
--- --- ---
name string 服务的名称
groupName string 服务的分组名称
clusterCount int 服务下逻辑集群的个数
ipCount int 服务下的实例总数
healthyInstanceCount int 服务下的健康实例总数
triggerFlag boolean 是否触发了阈值保护

请求示例

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. 查询服务列表(携带实例信息)

描述

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

运维SDK - 图10 注意

此接口性能较差,可能返回很大量的数据导致带宽,内存处于高负载状态,请谨慎使用;建议使用获取服务列表配合查询服务实例列表按需获取。

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;

请求参数

参数名 参数类型 描述
namespaceId string 服务所属的命名空间ID
groupNameParam string 服务的分组名称模版,支持使用__进行前缀后缀的模糊匹配,为空时获取所有分组。
serviceNameParam string 服务的名称模版,支持使用``进行前缀后缀的模糊匹配,为空时获取所有服务。
pageNo int 分页页码,默认为1。
pageSize int 分页每页大小,默认为100。

返回参数

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

具体Page及ServiceDetailInfo的内容如下:

参数名 参数类型 描述
totalCount int 符合该条件下的服务总数。
pageNumber int 当前页码。
pagesAvailable int 分页的总页数。
pageItems List<ConfigBasicInfo> 当前页的服务列表。
参数名 参数类型 描述
--- --- ---
namespaceId string 服务的命名空间ID
groupName string 服务的分组名称
serviceName string 服务的名称
ephemeral boolean 服务的持久化属性
protectThreshold float 服务的保护阈值
selector Selector 服务的实例选择器
metadata Map<String,String> 服务的元数据
clusterMap Map<String, ClusterInfo> 服务下的逻辑集群信息Map,其中key为逻辑集群名称,value为详细信息
clusterMap.${key}.clusterName string 逻辑集群的名称
clusterMap.${key}.healthyCheckPort int 逻辑集群的健康检查断藕
clusterMap.${key}.useInstancePortForCheck boolean 逻辑集群是否使用实例信息的端口进行健康检查
clusterMap.${key}.healthChecker AbstractHealthChecker 逻辑集群的健康检查类型
clusterMap.${key}.metadata Map<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 异常。

(本文超出站点单文档体积上限,已按小节截断)