NACOS 2.4.1 数据库表详解

news/2025/10/24 10:13:42/文章来源:https://www.cnblogs.com/hanease/p/19162507

-----------------------------------------------------------------------------------------

NACOS 2.4.1 数据库表详解
 
在 Nacos 2.4.1 版本中,数据库表结构主要分为 配置管理、服务注册与发现、权限控制、集群管理 四大模块。以下是核心表的详细解析(基于官方 mysql-schema.sql 脚本):

一、配置管理核心表

1. config_info

  • 用途:存储配置中心的核心配置数据。
  • 核心字段:
    • id:主键(自增)。
    • data_id:配置 ID(唯一标识一个配置)。
    • group_id:配置分组(默认 DEFAULT_GROUP)。
    • tenant_id:命名空间 ID(多租户隔离)。
    • content:配置内容(文本类型)。
    • md5:内容的 MD5 值(用于变更检测)。
    • type:配置类型(如 propertiesyaml)。
    • gmt_create/gmt_modified:创建 / 修改时间戳。
  • 索引:
    • uk_configinfo_datagrouptenant:联合唯一索引(data_idgroup_idtenant_id)。
    • idx_did:基于 data_id 的索引,加速查询。

2. his_config_info

  • 用途:存储配置历史版本。
  • 核心字段:
    • nid:历史记录 ID(自增)。
    • data_id/group_id/tenant_id:关联 config_info 的配置信息。
    • op_type:操作类型(I- 插入、U- 更新、D- 删除)。
    • src_user:操作用户。
  • 关联关系:通过 data_id/group_id/tenant_id 与 config_info 关联。

3. config_info_aggr

  • 用途:存储聚合配置(多个子配置合并为一个)。
  • 核心字段:
    • datum_id:子配置 ID。
    • data_id/group_id/tenant_id:父配置信息。
    • content:子配置内容。
  • 场景:用于微服务中合并多个配置文件。

4. config_info_beta

  • 用途:存储灰度发布的配置(仅限特定 IP 可见)。
  • 核心字段:
    • beta_ips:允许访问的 IP 列表(逗号分隔)。
  • 关联关系:与 config_info 结构相同,新增 beta_ips 字段。

二、服务注册与发现核心表

1. service_info

  • 用途:存储服务的元数据(如服务名称、分组、命名空间等)。
  • 核心字段:
    • id:服务 ID(自增)。
    • service_name:服务名(格式为 group@@serviceName)。
    • namespace_id:所属命名空间 ID。
    • group_name:服务分组。
    • health_check_type:健康检查类型(如 HTTPTCP)。
    • up:服务整体是否可用(布尔值)。
  • 索引:
    • uk_service_name:联合唯一索引(service_namenamespace_id)。

2. instance_info

  • 用途:存储服务的具体实例信息(如 IP、端口、权重等)。
  • 核心字段:
    • id:实例 ID(自增)。
    • service_name:关联的服务名(与 service_info.service_name 对应)。
    • ip/port:实例地址和端口。
    • healthy:实例是否健康(布尔值)。
    • weight:负载均衡权重(默认 1.0)。
    • ephemeral:是否为临时实例(临时实例下线后自动删除)。
  • 索引:
    • idx_service_name:基于 service_name 的索引,加速服务查询。

3. cluster_info

  • 用途:存储服务集群信息(如集群名称、健康检查配置)。
  • 核心字段:
    • id:集群 ID(自增)。
    • service_name:关联的服务名。
    • cluster_name:集群名称(默认 DEFAULT)。
    • health_check_port:健康检查端口。
  • 关联关系:通过 service_name 与 service_info 关联。

三、权限控制表

1. users

  • 用途:存储系统用户信息(用于控制台登录)。
  • 核心字段:
    • username:用户名(主键)。
    • password:加密后的密码(默认 nacos 用户密码为 $2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu)。
    • enabled:用户是否启用。

2. roles

  • 用途:存储用户角色(如 ROLE_ADMIN)。
  • 核心字段:
    • username:关联的用户名。
    • role:角色名称。
  • 索引:
    • idx_user_role:联合唯一索引(usernamerole)。

3. permissions

  • 用途:存储角色权限(如某个角色对某个资源的操作权限)。
  • 核心字段:
    • role:角色名称。
    • resource:资源路径(如 /nacos/v1/ns/instance)。
    • action:操作类型(如 readwrite)。
  • 索引:
    • uk_role_permission:联合唯一索引(roleresourceaction)。

四、集群与元数据表

1. raft_config

  • 用途:存储集群模式下的 Raft 配置(如节点状态、日志索引)。
  • 核心字段:
    • id:主键。
    • key:配置键(如 raft_termcommit_index)。
    • value:配置值。

2. distributed_lock

  • 用途:存储分布式锁信息(用于协调集群节点操作)。
  • 核心字段:
    • lock_key:锁键(唯一标识一个锁)。
    • lock_value:锁持有者信息。
    • expire_time:锁过期时间。

五、其他辅助表

1. tenant_info

  • 用途:存储命名空间(租户)的基本信息。
  • 核心字段:
    • tenant_id:命名空间 ID(主键)。
    • tenant_name:命名空间名称。
    • description:描述。

2. group_capacity

  • 用途:存储分组的容量限制(如配置数量、单个配置大小上限)。
  • 核心字段:
    • group_id:分组 ID。
    • quota:配额(0 表示无限制)。
    • usage:已使用量。

六、表结构关联关系

  1. 配置管理:
    • config_info 与 his_config_info 通过 data_id/group_id/tenant_id 关联。
    • config_info_beta 是 config_info 的扩展表,新增 beta_ips 字段。
  2. 服务注册:
    • service_info 与 instance_info 通过 service_name 关联。
    • service_info 与 cluster_info 通过 service_name 关联。
  3. 权限控制:
    • users → roles → permissions 通过 username/role 关联。

七、数据库初始化

  1. 脚本来源:
    • 从 Nacos 官方仓库下载对应版本的 mysql-schema.sql
      bash
       
       
      wget https://raw.githubusercontent.com/alibaba/nacos/2.4.1/distribution/conf/mysql-schema.sql
      
       
       
  2. 执行步骤:
    • 创建数据库(如 nacos_config)。
    • 执行 SQL 脚本创建所有表。
  3. 配置连接:
    • 修改 nacos/conf/application.properties,添加数据库连接信息:
      properties
       
       
      spring.datasource.platform=mysql
      db.num=1
      db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8
      db.user=root
      db.password=your_password
      
       
       

八、版本差异说明

  • 2.4.1 vs 2.5.0:
    • 2.5.0 新增 config_info_gray 表(灰度发布),而 2.4.1 使用 config_info_beta
    • 部分字段(如 namespace_id)的索引策略可能微调,但核心结构一致。
通过以上表结构,Nacos 实现了配置持久化、服务注册与发现、权限控制等核心功能。实际使用中,可根据业务需求扩展表字段或添加索引以优化性能。

-----------------------------------------------------------------------------------------

Nacos 2.x各个版本数据库库表的变化
 
Nacos 2.x 版本在迭代过程中,数据库表结构的变化主要围绕功能增强(如权限细化、灰度发布、配置加密等)、性能优化(索引调整)和兼容性改进。以下是 2.x 主要版本的库表核心变化梳理(基于官方 mysql-schema.sql 及 Release Notes):

一、2.0.x 基础版本(2.0.0 ~ 2.0.4)

作为 2.x 系列的初始版本,奠定了核心表结构,主要包含:
  • 配置管理:config_infohis_config_infoconfig_info_aggrconfig_info_beta(灰度配置)。
  • 服务发现:service_infoinstance_infocluster_info
  • 权限控制:users(用户)、roles(角色)、permissions(权限)。
  • 集群管理:raft_config(Raft 协议配置)、distributed_lock(分布式锁)。
  • 命名空间:tenant_info
核心特点:
  • 权限表(users/roles/permissions)首次在 2.x 中稳定支持,实现基于角色的权限控制(RBAC)。
  • 服务发现表中 ephemeral 字段(临时实例标识)成为核心字段,区分持久化与临时实例。

二、2.1.x 版本(2.1.0 ~ 2.1.2)

主要优化配置管理和权限控制的细节,表结构变化较小:
  1. config_info 表新增字段:
    • encrypted_data_key:用于存储配置内容的加密密钥(支持配置加密功能)。
    • 背景:2.1.x 引入配置内容加密特性,该字段用于解密 content 字段的加密内容。
  2. permissions 表优化:
    • 新增 resource 字段的长度调整(从 varchar(255) 扩展为 varchar(1024)),支持更长的资源路径(如复杂的 API 路径)。
  3. 索引优化:
    • 为 config_info 的 encrypted_data_key 新增索引,加速加密配置的查询。

三、2.2.x 版本(2.2.0 ~ 2.2.3)

聚焦服务发现的稳定性和配置灰度能力增强:
  1. instance_info 表新增字段:
    • metadata:存储实例的元数据(如环境标签、版本信息等),支持更丰富的实例属性扩展。
    • instance_id:实例唯一标识(原依赖 ip:port 组合,新增独立字段便于唯一标识)。
  2. cluster_info 表优化:
    • 新增 health_check_timeout 字段:健康检查超时时间(毫秒),细化健康检查配置。
  3. distributed_lock 表调整:
    • 新增 lock_owner 字段:记录锁持有者的节点 ID,便于集群锁冲突排查。

四、2.3.x 版本(2.3.0 ~ 2.3.2)

强化配置管理的历史追踪和服务发现的扩展性:
  1. his_config_info 表新增字段:
    • app_name:关联的应用名称,便于按应用筛选配置历史。
    • tenant_id 字段从 varchar(128) 扩展为 varchar(256),支持更长的命名空间 ID。
  2. service_info 表新增字段:
    • selector:服务选择器配置(JSON 格式),支持基于标签的服务路由。
    • metadata:服务级别的元数据(如服务描述、版本等)。
  3. 新增 config_tags_relation 表:
    • 用途:存储配置与标签的关联关系,支持通过标签快速筛选配置。
    • 核心字段:idtag_name(标签名)、tag_type(标签类型)、data_idgroup_idtenant_id

五、2.4.x 版本(2.4.0 ~ 2.4.1)

优化配置灰度发布和权限粒度:
  1. config_info_beta 表增强:
    • 新增 beta_desc 字段:灰度配置的描述信息,便于管理灰度规则。
  2. roles 表新增字段:
    • role_desc:角色描述,支持对角色的用途进行说明(如 “只读角色”“管理员角色”)。
  3. 索引优化:
    • 为 service_info 的 selector 字段新增索引,加速基于选择器的服务查询。
    • 为 instance_info 的 metadata 字段新增全文索引,支持元数据的模糊查询。

六、2.5.x 版本(2.5.0 ~ 2.5.3)

重构灰度发布机制,引入新表支持更灵活的配置推送策略:
  1. 新增 config_info_gray 表:
    • 替代 config_info_beta 表,专门存储灰度配置(支持按 IP、标签等多维度灰度)。
    • 核心字段:gray_ips(灰度 IP 列表)、gray_tags(灰度标签)、gray_desc(灰度描述)。
  2. config_info 表字段调整:
    • 移除 beta_ips 字段(灰度逻辑迁移至 config_info_gray)。
    • 新增 schema_version 字段:配置的 schema 版本,用于兼容不同格式的配置解析。
  3. instance_info 表字段扩展:
    • weight 字段从 double(10,2) 调整为 double(16,6),支持更精细的权重设置(如 0.000001 粒度)。

七、总结:核心变化趋势

  1. 配置管理:从基础配置存储 → 支持加密、灰度(betagray)、标签关联,表结构更细分。
  2. 服务发现:实例 / 服务元数据(metadata)字段逐步丰富,支持更灵活的路由和筛选。
  3. 权限控制:字段长度扩展、新增描述信息,权限粒度更细。
  4. 性能优化:针对高频查询字段(如 service_namemetadata)持续优化索引。
升级建议:
  • 跨版本升级时,需执行官方提供的 schema-upgrade.sql 脚本(位于 nacos/conf 目录),自动处理表结构变更。
  • 若自定义扩展表字段,升级前需备份数据,避免冲突。

-----------------------------------------------------------------------------------------

Nacos 2.x 为啥没有服务发现:service_info、instance_info、cluster_info表
 
Nacos 2.x 中并非没有 service_infoinstance_infocluster_info 这三张服务发现相关的表,这三张表是服务注册与发现功能的核心存储载体,在 2.x 版本中依然存在。如果在实际使用中没有找到这些表,通常与存储模式选择或初始化配置有关,具体原因如下:

一、Nacos 服务发现数据的存储模式

Nacos 的服务发现数据存储有两种核心模式,不同模式下对表的 “可见性” 不同:

1. 嵌入式存储(默认单机模式)

Nacos 2.x 单机模式默认使用 Derby 嵌入式数据库(无需额外配置),服务发现的 service_infoinstance_infocluster_info 表会被创建,但数据存储在 Nacos 进程内部的内存或本地文件(nacos/data/derby-data)中,无法通过外部数据库客户端(如 MySQL 客户端)直接查看表结构。
这也是很多用户在单机模式下 “找不到表” 的主要原因 —— 并非表不存在,而是存储在嵌入式数据库中,不对外暴露表结构。

2. 外部数据库存储(推荐生产模式)

若配置了外部数据库(如 MySQL),Nacos 会将服务发现数据持久化到外部数据库中,此时 service_infoinstance_infocluster_info 表会被显式创建,可通过数据库客户端直接查看。
如果配置了外部数据库但仍未找到表,可能是以下原因:
  • 初始化脚本未执行完整:Nacos 2.x 的数据库初始化脚本(mysql-schema.sql)包含所有核心表(包括服务发现相关表),若只执行了部分脚本(如仅配置管理相关表),会导致服务发现表缺失。
  • 数据库连接配置错误:Nacos 实际连接的数据库与用户查看的数据库不一致(如配置文件中 db.url 指向的库未初始化脚本)。
  • 版本不匹配:使用了低版本的初始化脚本(如 1.x 脚本),而 2.x 对表结构有扩展,低版本脚本可能缺少部分字段,但核心表(service_info 等)仍会存在。

二、临时实例与持久化实例的存储差异

Nacos 服务实例分为临时实例(ephemeral=true)和持久化实例(ephemeral=false):
  • 临时实例:依赖客户端心跳维持存活,数据默认不持久化到数据库(仅在内存中存储,集群模式下通过 Raft 协议同步),因此 instance_info 表中可能看不到临时实例的数据,但表本身依然存在。
  • 持久化实例:数据会持久化到 instance_info 表,即使客户端下线,数据也不会删除(需手动注销)。
如果服务注册时使用的是临时实例,可能会因表中无数据而误以为表不存在,但表结构本身是存在的。

三、如何确认表是否存在?

  1. 切换到外部数据库存储:在 nacos/conf/application.properties 中配置 MySQL 连接,执行官方 2.x 版本的 mysql-schema.sql 脚本(可从 Nacos 仓库 下载对应版本),初始化后即可在 MySQL 中看到 service_infoinstance_infocluster_info 表。
  2. 检查嵌入式数据库文件:单机模式下,Derby 数据库文件位于 nacos/data/derby-data,可通过 Derby 客户端工具(如 ij)连接查看表结构(需了解 Derby 连接方式,操作较复杂,不推荐)。

总结

Nacos 2.x 中 service_infoinstance_infocluster_info 表是存在的,未找到的原因通常是:
  • 使用默认嵌入式 Derby 数据库,表结构不对外暴露;
  • 外部数据库初始化不完整或连接配置错误;
  • 仅使用临时实例,表中无数据导致误判。
若需显式查看这些表,建议配置外部数据库(如 MySQL)并执行完整的初始化脚本。

 

-----------------------------------------------------------------------------------------

/nacos/v1/ns/catalog/services?hasIpCount=true&withInstances=false&pageNo=1&pageSize=20&serviceNameParam=&groupNameParam=&namespaceId=prod
 
你提到的这个 URL 是 Nacos 服务发现模块的 服务列表查询 API,用于获取指定命名空间下的服务元信息列表。以下是对该接口的详细解析:

一、接口作用

该接口属于 Nacos Open API 中的 服务目录查询接口,用于分页查询某个命名空间下的服务列表,支持按服务名、分组名筛选,并可指定是否返回实例数量等信息。

二、参数说明

URL 中的查询参数含义如下:
参数名含义示例值 / 说明
hasIpCount 是否返回每个服务的实例数量(健康 + 不健康的总实例数) true(返回)/ false(不返回)
withInstances 是否返回每个服务的具体实例详情(如 IP、端口等) false(不返回实例详情)
pageNo 分页页码(从 1 开始) 1(查询第 1 页)
pageSize 每页条数 20(每页返回 20 个服务)
serviceNameParam 服务名模糊查询参数(为空时查询所有服务) 如 order-service 可筛选包含该名称的服务
groupNameParam 服务分组模糊查询参数(为空时查询所有分组) 如 DEFAULT_GROUP 可筛选该分组的服务
namespaceId 命名空间 ID(服务隔离的维度,通常对应环境如 prod/test/dev) prod(查询生产环境的服务)

三、返回结果格式

接口返回 JSON 格式数据,结构如下(以 hasIpCount=true 为例):
json
 
 
{"totalCount": 50,        // 符合条件的服务总数量"pageNumber": 1,         // 当前页码"pagesAvailable": 3,     // 总页数(totalCount / pageSize 向上取整)"serviceList": [         // 服务列表数组{"name": "DEFAULT_GROUP@@order-service",  // 服务名(格式:分组名@@服务名)"groupName": "DEFAULT_GROUP",            // 服务分组"namespaceId": "prod",                   // 命名空间ID"ipCount": 3                             // 该服务的实例总数(因 hasIpCount=true 才返回)},{"name": "DEFAULT_GROUP@@user-service","groupName": "DEFAULT_GROUP","namespaceId": "prod","ipCount": 2}// ... 更多服务]
}
 
  • 若 withInstances=true,每个服务项会新增 instanceList 字段,包含该服务的所有实例详情(IP、端口、健康状态等)。
  • 若查询无结果,serviceList 为空数组,totalCount=0

四、调用注意事项

  1. 权限认证:若 Nacos 开启了认证(nacos.core.auth.enabled=true),调用时需在 HTTP 头中携带认证信息:
    http
     
     
    Header: Authorization=Bearer {token}
    
     
     
    token 可通过登录接口 /nacos/v1/auth/login 获取)。
  2. 命名空间存在性:namespaceId=prod 需已在 Nacos 中创建(否则返回空列表)。
  3. 服务可见性:只有注册到该命名空间的服务才会被查询到(临时实例和持久化实例均会被统计,除非实例被手动删除)。

五、使用场景

  • 后端服务需要动态获取某个环境(如 prod)的所有服务列表,用于服务治理、监控或网关路由配置。
  • 前端控制台展示服务清单,配合分页功能减轻数据加载压力。
通过该接口,可高效查询 Nacos 中指定范围的服务元信息,是服务发现功能的核心 API 之一。


-----------------------------------------------------------------------------------------

nacos ephemeral=true 在哪配置
 
在 Nacos 中,ephemeral=true 用于指定服务实例为临时实例(依赖客户端心跳维持存活,客户端下线后实例会被自动删除)。该参数的配置位置取决于服务注册的客户端类型(如 Spring Cloud 应用、原生 SDK 等),核心是在服务实例注册时指定该属性。

一、Spring Cloud Alibaba 应用(最常用场景)

如果你的服务是基于 Spring Cloud Alibaba 框架开发的,通过 spring-cloud-starter-alibaba-nacos-discovery 注册到 Nacos,可在配置文件(application.properties 或 application.yml)中直接配置:

配置示例:

yaml
 
 
# application.yml
spring:cloud:nacos:discovery:server-addr: 127.0.0.1:8848  # Nacos 服务端地址ephemeral: true  # 设置为临时实例(默认值就是 true,可省略)# 其他配置(如命名空间、服务名等)namespace: prodservice: order-service
 
  • 默认值:ephemeral 默认值为 true,即不配置时默认是临时实例。
  • 若要改为持久化实例,需显式设置 ephemeral: false

二、原生 SDK 注册(如 Java SDK)

如果通过 Nacos 原生 SDK 手动注册服务实例,需在创建 Instance 对象时,通过 setEphemeral(true) 方法指定:

代码示例:

java
 
运行
 
 
 
 
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingFactory;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;public class NacosRegisterExample {public static void main(String[] args) throws NacosException {// 初始化 NamingServiceNamingService namingService = NamingFactory.createNamingService("127.0.0.1:8848");// 创建实例对象Instance instance = new Instance();instance.setIp("192.168.1.100");  // 实例 IPinstance.setPort(8080);          // 实例端口instance.setEphemeral(true);     // 设置为临时实例(默认 true)// 注册实例(服务名、实例对象)namingService.registerInstance("order-service", instance);}
}
 

三、其他客户端(如 Go、Python 等)

其他语言的 Nacos SDK 注册实例时,同样需要在实例参数中指定 ephemeral 属性,逻辑与 Java SDK 类似:
  • Go SDK:在 Instance 结构体中设置 Ephemeral: true
  • Python SDK:在注册实例的参数中添加 ephemeral=True

核心说明

  1. ephemeral 是实例级别的属性,即同一个服务可以同时存在临时实例和持久化实例(通过不同客户端配置区分)。
  2. 临时实例(ephemeral=true)依赖客户端心跳:若心跳超时(默认 30 秒),Nacos 会将实例标记为不健康;若超过 90 秒未收到心跳,会删除该实例。
  3. 持久化实例(ephemeral=false)不依赖心跳,客户端下线后实例仍会保留在 Nacos 中,需手动调用注销接口删除。
根据你的服务注册方式,选择对应的配置位置即可。日常开发中,Spring Cloud Alibaba 应用的配置文件是最常用的方式。


-----------------------------------------------------------------------------------------

nacos 如何查看 ephemeral=true 临时实例的服务实例信息
在 Nacos 中,ephemeral=true 的临时实例默认不持久化到数据库(instance_info 表),而是存储在内存中(集群模式下通过 Raft 协议同步)。查看临时实例的服务信息,主要通过 Nacos 控制台 或 Open API,以下是具体方法:

一、通过 Nacos 控制台查看(最直观)

Nacos 控制台提供了可视化界面,可直接查看所有实例(包括临时实例)的详细信息,步骤如下:
  1. 登录控制台访问 Nacos 控制台地址(默认 http://<nacos-server-ip>:8848/nacos),输入用户名 / 密码(默认 nacos/nacos,若开启认证则使用配置的账号)。
  2. 进入服务详情页
    • 在左侧菜单选择 服务管理 > 服务列表。
    • 选择目标命名空间(如 prod),找到需要查询的服务(如 order-service),点击服务名进入详情页。
  3. 查看实例列表在服务详情页的 实例列表 中,会显示该服务的所有实例(包括临时实例和持久化实例)。
    • 临时实例会在 元数据 或 实例属性 中标记 ephemeral: true(不同 Nacos 版本显示位置可能略有差异)。
    • 也可通过 健康状态 辅助判断:临时实例依赖心跳,若心跳超时会显示 “不健康”;持久化实例不依赖心跳,默认 “健康”。

二、通过 Nacos Open API 查询(适合程序调用)

Nacos 提供了查询实例列表的 Open API,可通过接口返回的 ephemeral 字段筛选临时实例,具体如下:

1. 接口信息

  • 请求地址:/nacos/v1/ns/instance/list
  • 请求方式:GET
  • 核心参数:
    参数名含义示例值
    serviceName 服务名(必填) DEFAULT_GROUP@@order-service(格式:分组名 @@服务名)
    namespaceId 命名空间 ID(可选) prod
    healthyOnly 是否只返回健康实例 false(返回所有实例)

2. 调用示例(curl 命令)

bash
 
 
# 替换为实际的 Nacos 服务端地址、服务名和命名空间
curl "http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=DEFAULT_GROUP@@order-service&namespaceId=prod&healthyOnly=false"
 

3. 响应结果解析

返回的 JSON 数据中,hosts 数组包含所有实例信息,每个实例的 ephemeral 字段明确标识是否为临时实例:
json
 
 
{"name": "DEFAULT_GROUP@@order-service","groupName": "DEFAULT_GROUP","namespaceId": "prod","hosts": [{"ip": "192.168.1.100","port": 8080,"healthy": true,"ephemeral": true,  // 临时实例(ephemeral=true)"weight": 1.0,"metadata": {},// ... 其他字段(如集群名、心跳时间等)},{"ip": "192.168.1.101","port": 8081,"healthy": true,"ephemeral": false, // 持久化实例(对比参考)// ... 其他字段}],// ... 其他全局信息(如服务总数、集群信息等)
}
 
  • 筛选临时实例:遍历 hosts 数组,过滤出 ephemeral: true 的实例即可。

三、通过 Nacos 原生 SDK 查询(开发场景)

若需在代码中查询临时实例,可使用 Nacos 原生 SDK(以 Java 为例):
java
 
运行
 
 
 
 
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingFactory;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;import java.util.List;public class QueryEphemeralInstances {public static void main(String[] args) throws NacosException {// 初始化 NamingService(连接 Nacos 服务端)NamingService namingService = NamingFactory.createNamingService("127.0.0.1:8848");// 查询服务的所有实例(包括临时和持久化)List<Instance> instances = namingService.getAllInstances("order-service",    // 服务名"DEFAULT_GROUP",    // 分组名"prod"              // 命名空间 ID);// 筛选出临时实例(ephemeral=true)for (Instance instance : instances) {if (instance.isEphemeral()) {  // 判断是否为临时实例System.out.println("临时实例:" + instance.getIp() + ":" + instance.getPort());}}}
}
 

四、注意事项

  1. 临时实例的存储特性:临时实例(ephemeral=true)不会写入数据库 instance_info 表,因此直接查询数据库无法获取其信息,必须通过控制台、API 或 SDK 从 Nacos 服务端内存中读取。
  2. 权限认证:若 Nacos 开启了认证(nacos.core.auth.enabled=true),调用 API 或 SDK 时需先通过登录接口获取 token 并携带认证信息(具体参考 Nacos 认证文档)。
  3. 实例存活判断:临时实例依赖客户端心跳,若超过心跳超时时间(默认 30 秒),Nacos 会将其标记为 healthy: false;若超过 90 秒未收到心跳,实例会被从列表中删除。
通过以上方式,可快速查看 Nacos 中所有 ephemeral=true 的临时实例信息,其中控制台适合人工操作,API/SDK 适合程序自动化查询。


-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------

-----------------------------------------------------------------------------------------

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/944977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年硅砂模块实力厂家最新推荐排行榜:涵盖新型 / 第三代承插型等多类型产品,多维度解析优质企业优势

引言 当前海绵城市建设进程持续加快,硅砂模块作为雨水收集利用系统的核心组件,市场需求大幅增长。但市场乱象凸显,不仅厂家数量繁杂,产品质量更是差距悬殊,部分企业用劣质原料生产,导致模块抗压性弱、易腐蚀,直…

1基础的UActorComponent基类实现功能模块化

1基础的UActorComponent基类实现功能模块化组件模式(Component Pattern)​​​​实现方式​​:通过 UActorComponent基类实现功能模块化,例如 USceneComponent(场景组件)、UStaticMeshComponent(静态网格组件)…

2025 泳池设备厂家专业解决方案与设备优势,推荐 Firsle 法思乐,全产业链服务解析

行业背景 随着人们生活品质提升与文旅产业蓬勃发展,泳池与海洋馆建设需求持续增长,从私家别墅、高端民宿到大型商业综合体、文旅项目,对水质安全、设备稳定性及系统智能化的要求日益严苛。传统泳池设备存在安装复杂…

2025年10月杭州模拟人开发公司对比榜:服务链路深度拆解

正在找“杭州模拟人开发公司”的你,大概率面临三类场景:一是医学院或急救中心需要高仿真急救模拟人升级考核系统,预算充足却担心售后响应;二是科技初创团队想快速拿到可二次开发的数字人SDK,对交付周期敏感;三是…

医用制氧机哪家好?2025医用制氧机厂家权威排行榜

医用制氧机是保障医疗供氧的关键设备,需符合严格的国家与国际标准,核心指标包括氧浓度≥90%、流量稳定、运行安全且耐用。市面上有许多技术扎实、专注细分领域的实力厂家,它们的产品在性能、适配场景等方面各有优势…

NativeMessaging通信失败问题

最近遇到了一个奇怪的问题:NativeMessaging消息发出去,但插件没有执行任何操作。 后面排查后发现,发送的消息为JSON文件,文件超过1024KB: chrome要求,发送的消息最多不超过1MB,传回的消息不超过64MB,压缩代码,…

2025年10月自行车品牌评价榜:十款热门车型数据对比

国庆长假刚过,城市通勤、亲子郊游、周末骑行的需求集中释放,很多人第一次认真考虑“买一辆真正适合自己的自行车”。他们可能是早上七点被地铁挤到变形的白领,也可能是想陪孩子学会骑车的年轻父母,或是把骑行写进退…

2025年10月深圳酒店推荐榜:四海商圈高性价比住宿对比

深圳作为粤港澳大湾区核心引擎,会展、科技、旅游三类客流叠加,酒店需求常年高位。2025年国庆假期后,商务差旅错峰、秋季展会的集中举办,使南山、福田、宝安板块出现“高价仍满房”现象。对旅客而言,痛点集中在三点…

2025年10月中国电缆品牌评价榜:十强参数与口碑全解析

把电缆放进项目清单那一刻,多数采购经理脑子里先蹦出三个问题:交期赶不赶?价格压不压?验收能不能一次过?2025年电网投资继续高位运行,前八月全国新增220千伏及以上线路长度同比增7.4%,新能源并网、城网改造、数…

2025年10月杭州获客教育培训公司实力榜:六维对比看清谁更适合你

正在寻找“能真正带来客户”的教育培训伙伴,是杭州不少成长型机构当下的共同焦虑。招生成本逐年抬升,流量平台规则多变,团队自运营又缺方法、缺工具,于是“把获客外包给专业公司”成为快速试水的主流选项。市人社局…

2025年10月中国电线电缆厂家推荐榜:五强性能评价

正在招标的甲方、正在做配电改造的市政项目部、正在给精装楼盘选品牌的采购经理,都会在同一张Excel里反复比对:谁有CCC又有CE?谁能在10天内把阻燃低压电缆送到工地?谁能在质保期内做到“无条件包退”?电线电缆看似…

R-高性能编程-全-

R 高性能编程(全)原文:zh.annas-archive.org/md5/6fbdeff1b7c6634baa0ee71fe31e9dc1 译者:飞龙 协议:CC BY-NC-SA 4.0前言 在数据变得越来越重要的世界里,商人和科学家需要工具来高效地分析和处理大量数据。R 是…

oracle NVL和NVL2

oracle NVL和NVL2NVL(exp1,exp2) 如果exp1是null,则返回exp2的值;如果exp1不是null,则返回exp1的值;exp1和exp2的数据类型要一致。NVL2(exp1,exp2,exp3) 如果exp1是null,则返回exp3的值;如果exp1不是null,则返…

SSH 端口转发与跳板机

端口转发 什么是端口转发 SSH(Secure Shell),一种安全通道协议,主要用来实现字符界面的远程访问功能 除了基本的远程登录命令行,端口转发也是 SSH 的重要功能 端口转发用来在客户端和服务器之间建立一个加密的 SSH …

99.5%制氧机生产厂家盘点!2025高原制氧机厂家排行榜

在海拔较高的高原地区,空气稀薄、氧气含量低,不仅容易引发高原反应,还会影响医疗急救、日常居住等场景的正常需求。99.5% 高纯度制氧机作为应对高原缺氧的关键设备,能通过专业技术从稀薄空气中分离氧气,为不同场景…

2025年中国国际健康营养博览会(NHNE):深度解析亚洲旗舰展的供需对接效能

引言 本文聚焦“供需对接”这一核心维度,拆解2025年中国国际健康营养博览会(NHNE)如何在40,000平方米空间内把1200家展商与12万人次全渠道买家高效撮合,为行业提供可量化的交易参考。 背景与概况 “2025年11月19-2…

2025年10月上海装修公司服务榜:口碑排行十强

把房子变成家,是多数人在上海扎根的仪式感。可面对860亿元规模、投诉率却同比上升12%的家装市场,预算、工期、增项、售后每一环都可能踩坑。老房潮湿漏水、小户型收纳不足、公寓隔音差,这些典型痛点让“选一家靠谱的…

Qt-Creator-应用开发-全-

Qt Creator 应用开发(全)原文:annas-archive.org/md5/27c7d87c779f8446e54a74757f855137 译者:飞龙 协议:CC BY-NC-SA 4.0前言 无论您是刚开始学习编程,还是已经确定 Qt 是您项目的 GUI 工具包,Qt Creator 都是…

DBeaver - Met error: Public Key Retrieval is not allowed when connect to MySQL container database

DBeaver - Met error: Public Key Retrieval is not allowed when connect to MySQL container databaseThe errorPublic Key Retrieval is not allowed occurs when MySQL’s caching_sha2_password authentication p…

2025年10月肤色暗沉产品推荐榜:敏感肌可用提亮方案评价

照镜子时,肤色像蒙了一层灰,粉底越盖越厚却仍旧“透不出光”——这是很多人秋季的共同困扰。10月换季,紫外线指数并未骤降,但湿度下降、屏障易受损,暗沉反而更明显。国家药监局2024年化妆品注册年报显示,美白淡斑…