跳转到内容
OpenClaw 不踩坑恶意 Skills ,企业需 Skills Registry:Nacos 3.2 发布点此了解

服务发现概览

Nacos 服务发现用于管理服务、实例、集群、健康状态和订阅关系。服务提供者把实例注册到 Nacos,服务消费者按服务名查询或订阅实例列表,再选择合适的实例发起调用。

服务发现关注的是“某个服务现在有哪些可用实例”。它不是通用流量治理引擎,也不是服务网格控制面。权重、健康保护、元数据和客户端 selector 都服务于发现语义,不应被理解成完整的流量治理系统。

资源模型

服务发现的顶层资源是 Service:

namespaceId -> groupName -> serviceName

Cluster 和 Instance 是从属资源:

namespaceId -> groupName -> serviceName -> clusterName -> instance
资源说明
Namespace隔离环境、租户或业务域。
Group在命名空间内继续分组服务。
Service服务发现单元。消费者通常按服务名查询实例。
ClusterService 下的集群分组,常用于机房、区域或部署单元。
Instance具体服务实例,通常由 IP、端口、cluster 和元数据描述。

临时服务和持久服务

每个 Service 都有服务类型。服务类型决定实例状态由哪条一致性路径维护。

服务类型含义主要状态路径
临时服务实例由存活客户端持有。客户端断开、心跳过期或连接释放后,实例会被移除。偏 AP 的运行时 client state 和 Distro 同步。
持久服务实例作为持久资源管理,可从服务端 snapshot 恢复。偏 CP 的持久 client state 和元数据持久化。

ephemeral 是 Service 级语义。实例请求中的 ephemeral 必须和所属 Service 类型匹配。不要在同一个 Service 下混用临时实例和持久实例。

运行面和管理面

接口面适合做什么
Client SDK注册实例、注销实例、查询服务、订阅服务变化、本地缓存和 failover。
Client OpenAPI面向自定义 HTTP 客户端,注册、续约、注销和查询指定服务实例。
Admin API管理 Service、Instance、Cluster、健康状态、client、subscriber 和日志级别。
Console API支撑控制台服务发现页面。
Maintainer SDK以 Java SDK 方式执行管理和诊断操作。

普通业务应用通常只需要注册自己、注销自己、查询已知下游服务,或订阅已知服务变化。服务列表、订阅者列表、client 诊断、元数据批量修改等属于管理能力。

发现视图

Nacos 返回给消费者的不是原始存储数据,而是经过过滤和保护后的发现视图。常见影响因素包括:

  • cluster 过滤。
  • enabled 状态。
  • healthy 状态。
  • 服务端内部过滤规则。
  • 保护阈值。
  • 客户端 selector 和权重选择。

因此,查询结果和管理页看到的全部实例可能不同。排查时要先确认自己看的是运行时发现视图,还是管理视图。

推荐阅读