nacos:健康检查机制

Nacos 实例类型 + 健康检查 完整总结

一、实例类型(核心分类)

表格

类型 健康检查方式 数据存储 典型比喻 适用场景
临时实例(默认) 客户端主动心跳上报 仅存内存 临时工,自己打卡,不上报就被清 动态微服务业务实例
非临时实例(持久实例) 服务端反向探测(主动 ping) 持久化到数据库 正式工,老板主动检查,失联也不删 固定中间件(DB、MQ 等)

二、健康检查机制详解

1. 临时实例:客户端主动心跳上报

  • 服务实例启动后,主动向 Nacos 发送心跳包,默认 5 秒一次
  • Nacos 15 秒内没收到心跳 → 标记为 "不健康"
  • 30 秒仍无心跳 → 自动从服务列表剔除(无需手动删除)
  • 服务正常关闭会主动注销,避免等待超时
  • 特点:高效、轻量,适合动态微服务,异常下线能快速被感知

2. 非临时实例:服务端反向探测

  • 由 Nacos 主动发起探测(TCP 端口探测 / HTTP 健康接口探测)
  • 即使实例失联,也不会自动从服务列表删除,需要手动处理
  • 数据持久化在数据库中,重启 Nacos 实例依然存在
  • 特点:适合固定节点,稳定性优先,不随服务上下线自动消失

三、实例类型的关键限制

  1. 类型不可直接修改

    • 不允许临时实例直接改为非临时实例,也不允许非临时实例改为临时实例
    • 因为 Nacos 会记录每个实例的 IP、端口和类型,这些信息一旦写入,不能动态切换
  2. 如需修改类型,必须清理数据操作步骤:

    1. 停止 Nacos 服务
    2. 删除 Nacos 数据目录下的 data/protocol/raft 文件夹
    3. 重启 Nacos 服务
    4. 重启你的服务实例,重新注册即可生效

四、和负载均衡的联动关系

  1. 第一步:健康检查过滤
    • 临时实例:心跳超时自动剔除,负载均衡直接跳过
    • 非临时实例:服务端探测失败仅标记不健康,需手动处理
  2. 第二步:集群与权重策略
    • 优先选择同集群内的健康实例
    • 同集群内按权重分配流量(权重 0 不接收请求)
  3. 第三步:跨集群兜底
    • 同集群内无可用实例时,才会降级访问其他集群实例

五、一句话核心记忆

  • 临时实例:心跳保活,超时自动清,微服务用
  • 非临时实例:主动探测,不自动删,中间件用
  • 实例类型一旦注册,不能直接改,必须删数据重注册
相关推荐
LayZhangStrive3 天前
后端开发中间件 - Nacos下载并快速使用教程
中间件·nacos
就叫_这个吧6 天前
java springcloud熔断降级组件sentinel基础应用及nacos持久化处理
java·spring cloud·nacos·sentinel
成为你的宁宁10 天前
【APISIX:部署、路由与 Nacos 集成】
微服务·nacos·apisix·api网关
linweidong13 天前
钉钉Java面经及参考答案
nacos·协程·垃圾收集器·jvm调优·spring ioc·脏读·mysql索引
EXI-小洲15 天前
MacOS 微服务网关双雄:Nacos + Higress 安装与 Dubbo 配置实战
macos·微服务·nacos·dubbo
欢醉1 个月前
线上惊魂:Nacos 抖动导致大面积服务掉线,我们是怎么兜底的
nacos·springcloud
一只小小Java1 个月前
Naocs本地部署&安装3.2.3+Spring boot 3.2.0
java·spring boot·后端·nacos
豆瓣鸡1 个月前
Guava RateLimiter 限流实战:从令牌桶原理到 Nacos 动态配置
spring boot·微服务·nacos·guava
rebibabo1 个月前
Java进阶(1) | 微服务入门:从单体到 Spring Cloud 全家桶
spring cloud·微服务·nacos·openfeign·服务注册与发现·java进阶·单体架构
不能只会打代码2 个月前
校享云 — 高校智慧后勤平台微服务架构设计与实践
spring cloud·docker·微服务·nacos·vue·校享云