一、SpringCloud 服务注册与发现整体流程

注册中心核心作用:统一管理所有微服务实例,解决服务硬编码地址问题,实现服务自动感知上下线。 整体流程分为四步:

  1. 服务注册:微服务启动时,携带自身服务名、IP、端口、元信息向注册中心注册自己;
  2. 服务续约(心跳):服务定时发送心跳包,证明实例健康存活;
  3. 服务拉取:客户端定时从注册中心拉取全量服务实例列表,本地缓存;
  4. 服务下线剔除
    • 主动下线:服务正常关闭,主动发注销请求;
    • 被动剔除:长时间没收到心跳,注册中心判定实例故障,剔除实例。

SpringCloud 主流注册中心:Eureka、Nacos、Consul、Zookeeper。现在新项目基本用 Nacos,老旧项目还残留 Eureka。

二、Eureka 核心特点(Netflix 开源,已停止维护)

  1. AP 设计,保证可用性,不保证强一致性 分布式 CAP 理论,Eureka 优先保证 A 可用性、P 分区容错,放弃 C 强一致。 集群节点之间数据同步有延迟,短时间内不同节点服务列表不一致,但不会因为同步故障导致注册中心整体不可用。
  2. 心跳续约机制 默认 30s 一次心跳,90s 未续约直接剔除故障实例。
  3. 自我保护机制(核心特性) 短时间内大量实例丢失心跳,Eureka 触发自我保护:不再剔除任何实例,防止网络抖动误删正常服务,此时可能读到故障实例,需要客户端负载均衡过滤故障节点。
  4. 集群模式 Eureka 集群对等节点,无主从,节点间互相复制注册信息,任意节点宕机不影响整体。
  5. 功能单一 只做服务注册发现,没有配置管理能力,配置中心需要单独搭配 SpringCloud Config。
  6. 维护状态 Netflix 停止迭代更新,SpringCloud 官方后续不再主推。

三、Nacos 核心特点(阿里开源,注册中心 + 配置中心二合一)

  1. 支持切换 CP/AP 两种模式,灵活适配业务
    • 集群默认 AP 模式(服务注册场景):高可用,适合微服务注册,容忍短暂数据不一致;
    • 切换 CP 模式:基于 Raft 一致性算法,强一致性,适合配置管理场景。
  2. 分层健康检查,区分临时实例、持久实例
    • 临时实例:普通微服务,依靠心跳续约,下线自动删除;
    • 持久实例:比如定时任务、网关,不依赖心跳,手动上下线;
  3. 无自我保护机制,精准剔除故障实例 Nacos 有主动健康探测,不仅依靠客户端心跳,服务端会主动 TCP/HTTP 探测实例状态,网络波动也不会保留故障节点,服务列表更准确。
  4. 集群 Raft 算法,有主节点 Nacos 集群通过 Raft 选举 leader,写操作走主节点,读可从从节点,数据同步一致性远优于 Eureka。
  5. 注册 + 配置一体化 一套 Nacos 同时实现服务注册发现、动态配置推送,不需要额外引入 Config,简化中间件部署维护。
  6. 丰富运维控制台 自带 web 管理页面,支持权重负载均衡、灰度发布、服务元数据管理、实例上下线手动操作,Eureka 原生控制台功能简陋。

四、Nacos 和 Eureka 核心区别(面试重点分维度对比)

1. CAP 设计不同

  • Eureka:固定 AP,无强一致方案;
  • Nacos:可 AP/CP 切换,注册用 AP,配置用 CP。

2. 集群一致性算法

  • Eureka:对等节点,异步复制,数据同步延迟高;
  • Nacos:Raft 共识算法,主从同步,数据一致性更强。

3. 实例类型与健康检测

  • Eureka:只有临时实例,仅依赖客户端心跳;有自我保护,易残留故障实例;
  • Nacos:区分临时 / 持久实例,服务端主动探测健康,无自我保护,实例列表实时准确。

4. 功能范围

  • Eureka:仅注册中心,需搭配 Config 做配置;
  • Nacos:注册中心 + 配置中心二合一,支持灰度、权重、元数据管理。

5. 运维与生态

  • Eureka:停止维护,功能简单,控制台简陋;
  • Nacos:持续更新,阿里生态适配好,配套完善控制台、告警、监控。

6. 负载均衡能力

  • Eureka 仅提供实例列表,负载均衡交给客户端 Ribbon;
  • Nacos 自带服务权重配置,可直接实现灰度、流量控制。

五、生产环境选型建议

  1. 新项目、微服务集群:统一使用 Nacos,减少中间件数量,兼顾注册和配置,运维方便;
  2. 老旧 SpringCloud Netflix 遗留项目:维持 Eureka,但长期建议迁移 Nacos;
  3. 对服务实时性要求高(金融、订单):Nacos 无自我保护,故障实例快速剔除,优于 Eureka;
  4. 仅简单测试、小型单体拆分:两者都可用,但 Nacos 综合成本更低。

简短总结

Eureka 是 AP 型注册中心,只负责服务发现,停止维护,存在自我保护易读到故障实例;Nacos 支持 AP/CP 切换,Raft 集群,区分临时持久实例,自带主动健康检查,同时集成配置中心,支持灰度权重,功能更强,是当前 SpringCloud 主流选型。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐