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

实例生命周期

实例生命周期描述一个服务实例从注册到被发现、更新、注销和清理的过程。理解这个过程,有助于排查实例丢失、健康状态异常和订阅结果不符合预期的问题。

注册实例

注册实例时,需要指定所属服务和实例地址:

字段说明
namespaceId命名空间,默认 public
groupName分组,默认 DEFAULT_GROUP
serviceName服务名。
ip / port实例地址。
clusterName集群名,默认 DEFAULT
ephemeral是否临时实例,必须和所属 Service 类型匹配。
metadata实例元数据。

临时实例通常由应用运行进程注册。持久实例通常由管理流程维护。不要把持久实例当成不会健康检查的临时实例,也不要把临时实例当成长期持久数据。

临时实例

临时实例是运行时状态。它依赖客户端存活。

对于 gRPC SDK 客户端,实例挂在客户端连接上。连接断开后,服务端会移除连接维度的 publisher 和 subscriber 状态。客户端重连后,SDK 会根据 redo 数据重新注册实例和恢复订阅。

对于 HTTP 或兼容客户端,需要通过心跳续约维持实例存活。Nacos 3.x HTTP OpenAPI 中,注册和续约使用同一接口,通过 heartBeat=true 表示续约。

续约请求只表示实例仍然存活。它不会重新解析完整实例元数据。实例已经过期被移除时,客户端需要重新注册完整实例信息。

持久实例

持久实例通过服务端持久路径维护。它适合由控制台、Admin API 或 Maintainer SDK 管理。

持久实例写入失败时,不会回退到临时 Distro 路径。它需要对应 CP 路径可用。持久实例恢复依赖服务端 snapshot 和元数据恢复。

持久服务和临时服务不能在同一个 Service 身份下混用。如果一个服务已经按临时服务创建,再尝试写入持久实例,应先调整服务设计,而不是强行混合。

注销实例

注销会从所属 client 或持久路径中移除实例,并触发服务变更事件。

为了方便运行时客户端处理,注销不存在的实例通常可以视为成功 no-op。应用退出时,应尽量主动调用注销接口或关闭 SDK,让服务端尽快清理运行时状态。

更新实例

实例更新常用于调整:

  • enabled 状态。
  • weight 权重。
  • 实例扩展元数据。

通过管理路径写入的 instance metadata 属于运维态元数据。它会覆盖运行时注册元数据中的同名 key。更多规则见 健康、权重与元数据

批量注册

批量注册适合 SDK 或接入层一次发布多个临时实例。服务端会把这些发布信息挂到所属 client 下,并触发服务变更事件。

批量注册不是批量管理接口。批量管理、列表和诊断应使用 Admin API 或 Maintainer SDK。

清理行为

常见清理来源包括:

  • gRPC 连接断开。
  • HTTP 心跳超时。
  • 临时 client 过期。
  • 空服务清理。
  • 元数据过期清理。

清理会影响订阅推送和服务发现结果。排查实例“突然消失”时,需要同时看客户端连接、心跳日志、服务端清理日志和 Distro 同步状态。