Nacos vs Eureka
2026/6/16 11:06:59 网站建设 项目流程

一、Nacos 工作流程

二、Nacos vs Eureka 核心区别

2.1 共同点(都是注册中心
共同点说明
1. 服务注册都支持服务提供者注册到注册中心
2. 服务拉取都支持消费者从注册中心拉取服务列表
3. 心跳检测都支持心跳方式做健康检测
2.2 核心区别(5 大差异
维度NacosEureka
1. 健康检测服务端主动检测非临时实例客户端心跳(30 秒)
2. 临时实例支持(默认,心跳不正常会被剔除❌ 不支持
3. 非临时实例支持nacos 主动询问,心跳不正常不会被剔除❌ 不支持
4. 消息推送支持消息推送服务列表变更实时推送只支持拉取30 秒拉一次
5. 集群一致性AP + CP 双模式有非临时实例时 CP只支持 AP
6. 配置中心支持(Nacos 也是配置中心)只有注册中心

三、5 大区别深度详解

3.1 区别 1:健康检测方式不同

Eureka老架构):

服务提供者 → 30 秒发一次心跳 → Eureka Server ↓ Eureka Server 90 秒没收到心跳 → 剔除实例

Nacos新架构):

非临时实例: Nacos Server → 主动询问 → 服务提供者 ↓ Nacos Server 没收到响应 → 标记不健康(**但不剔除**) 临时实例(默认): 服务提供者 → 5 秒发一次心跳 → Nacos Server ↓ Nacos Server 15 秒没收到心跳 → 剔除实例

关键配置

spring: cloud: nacos: discovery: server-addr: 192.168.200.130:8848 ephemeral: false # ⚠️ false = 非临时实例(Nacos 主动询问) # ephemeral: true(默认)= 临时实例(服务主动心跳)
3.2 区别 2:服务列表推送 vs 拉取

Eureka只拉不推):

服务消费者 → 30 秒拉一次 → Eureka Server

  • ⚠️服务列表变更后,消费者最多延迟 30 秒才能感知

Nacos推 + 拉):

服务列表变更 → Nacos Server 主动推送 → 服务消费者(实时) ↓ 本地缓存 ↓ 每 10 秒拉一次(兜底)
  • 服务列表变更实时推送
3.3 区别 3:AP / CP 模式

Eureka只支持 AP):

可用性优先 ↓ 服务注册信息可能不一致(但保证可用)

NacosAP + CP 双模式):

默认 AP(临时实例) ↓ 有非临时实例时 → CP(强一致)

Nacos 集群模式配置

# Nacos 集群部署(3 节点) 192.168.200.130:8848 # 节点 1 192.168.200.131:8848 # 节点 2 192.168.200.132:8848 # 节点 3
3.4 区别 4:配置中心

Eureka

❌ 只有注册中心 配置中心用 Spring Cloud Config 或 Nacos

Nacos

✅ 注册中心 + 配置中心(一体化) 配置变更支持动态刷新(@RefreshScope)

Nacos 配置中心实战

// 1. 引入依赖 <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency> // 2. 配置 bootstrap.yml spring: cloud: nacos: config: server-addr: 192.168.200.130:8848 file-extension: yaml namespace: mova-prod // 3. Nacos 控制台添加配置 // Data ID: mova-report-service.yaml // Group: DEFAULT_GROUP // 配置内容: server: port: 8081 spring: datasource: url: jdbc:mysql://192.168.200.100:3306/mova username: mova password: mova_pwd // 4. 动态刷新(@RefreshScope) @RestController @RefreshScope // ⚠️ 配置变更自动刷新 public class ReportController { @Value("${mova.report.timeout:5000}") private Integer timeout; @GetMapping("/config") public String getConfig() { return "timeout=" + timeout; } }
3.5 区别 5:服务剔除策略

Eureka默认剔除):

30 秒没心跳 → 标记不健康 90 秒没心跳 → ⚠️ 直接剔除(强制下线)

Nacos分情况):

临时实例: 15 秒没心跳 → ⚠️ 剔除 非临时实例: Nacos 主动询问 → 没响应 → ⚠️ 标记不健康(不剔除) 等待服务恢复(更安全)

关键服务不能随便被剔除——可能只是网络抖动

四、Nacos 完整工作流程

4.1 服务注册流程
服务提供者(mova-report-service)启动 ↓ 1. 向 Nacos Server 发送注册请求 POST /nacos/v1/ns/instance { "ip": "192.168.200.101", "port": 8081, "serviceName": "mova-report-service", "ephemeral": false } ↓ 2. Nacos Server 验证服务信息 ↓ 3. 存储到内存 + 持久化到文件 ↓ 4. 返回注册成功
4.2 服务发现流程
服务消费者(user-service)启动 ↓ 1. 从 Nacos Server 拉取服务列表 GET /nacos/v1/ns/instance/list?serviceName=mova-report-service ↓ 2. Nacos Server 返回服务列表 [ {ip: "192.168.200.101", port: 8081}, {ip: "192.168.200.102", port: 8081} ] ↓ 3. 消费者本地缓存服务列表(user-service 内存) ↓ 4. Ribbon 从列表中选一个实例(负载均衡) ↓ 5. Feign 发起远程调用
4.3 健康检查流程

临时实例ephemeral: true):

服务提供者 → 每 5 秒发心跳 → Nacos Server ↓ Nacos Server 15 秒没收到 → ⚠️ 剔除服务

非临时实例ephemeral: false):

Nacos Server → 每 5 秒主动询问 → 服务提供者 ↓ 服务提供者没响应 → 标记不健康(**不剔除**) ↓ 服务提供者恢复 → Nacos 标记健康
4.4 消息推送流程
服务提供者变更(新增/下线/健康状态变化) ↓ Nacos Server 检测到变化 ↓ Nacos Server 主动 UDP 推送 → 所有订阅了该服务的消费者 ↓ 消费者更新本地服务列表缓存 ↓ Ribbon 重新选择实例

五、Nacos vs Eureka 完整对比

维度NacosEureka
健康检查服务端主动询问客户端心跳
临时实例✅ 支持(默认)❌ 不支持
非临时实例✅ 支持❌ 不支持
消息推送主动推送(实时)只拉取(30 秒延迟)
集群模式AP + CP 双模式只支持 AP
配置中心注册中心 + 配置中心❌ 只有注册中心
动态刷新@RefreshScope❌ 需要 Config
社区活跃度⚠️⚠️⚠️ 阿里维护,活跃⚠️ 停止维护

六、Nacos 完整配置

6.1 Nacos Server 部署
# 1. 下载 Nacos wget https://github.com/alibaba/nacos/releases/download/2.2.0/nacos-server-2.2.0.tar.gz tar -xvf nacos-server-2.2.0.tar.gz cd nacos/bin # 2. 单机模式启动 sh startup.sh -m standalone # 3. 集群模式启动(3 节点) sh startup.sh -m cluster # 4. 访问控制台 # http://192.168.200.130:8848/nacos # 默认账号密码:nacos / nacos
6.2 业务服务配置
# application.yml(MOVA 报表服务) spring: application: name: mova-report-service cloud: nacos: # 1. 注册中心 discovery: server-addr: 192.168.200.130:8848 namespace: mova-prod group: DEFAULT_GROUP ephemeral: false # ⚠️ 非临时实例(mpvs 关键时点用) # 2. 配置中心 config: server-addr: 192.168.200.130:8848 namespace: mova-prod group: DEFAULT_GROUP file-extension: yaml
6.3 Nacos 控制台配置
Data ID: mova-report-service.yaml Group: DEFAULT_GROUP Namespace: mova-prod 配置内容: server: port: 8081 spring: datasource: url: jdbc:mysql://192.168.200.100:3306/mova
6.4 Nacos 集群配置
# nacos/conf/cluster.conf 192.168.200.130:8848 192.168.200.131:8848 192.168.200.132:8848

七、Nacos 4 大使用场景

场景 1:服务注册与发现
// 服务提供者 @SpringBootApplication @EnableDiscoveryClient // 启用 Nacos 发现 public class MOVAReportApplication { public static void main(String[] args) { SpringApplication.run(MOVAReportApplication.class, args); } }
场景 2:动态配置刷新
@RestController @RefreshScope // 配置变更自动刷新 public class MOVAConfig { @Value("${mova.timeout:5000}") private Integer timeout; }
场景 3:服务分组管理
spring: cloud: nacos: discovery: group: MOVA_GROUP spring: cloud: nacos: discovery: group: MPVS_GROUP
场景 4:命名空间隔离
# 开发环境 spring: cloud: nacos: discovery: namespace: dev # 生产环境 spring: cloud: nacos: discovery: namespace: prod

八、Nacos 实战对照

Nacos 配置用途业务价值
ephemeral: true高可用报表服务快速注册
ephemeral: false强一致27 家分行不能被误剔除
ephemeral: true简单采集服务注册
❌ Eureka 老架构维护不用升级

九、面试官 8 大追问

追问 1:Nacos vs Eureka 区别?

"5 大区别

1.健康检查:Nacos 服务端主动询问 vs Eureka 客户端心跳

2.临时实例:Nacos 支持 vs Eureka 不支持

3.消息推送:Nacos 实时推送 vs Eureka 30 秒拉取

4.AP/CP:Nacos 双模式 vs Eureka 只 AP

5.配置中心:Nacos 一体化 vs Eureka 单独

追问 2:Nacos 临时实例和非临时实例?

"临时实例(默认):服务主动心跳,15 秒没心跳剔除高可用场景
非临时实例:Nacos 主动询问,没响应标记不健康但不剔除强一致场景

追问 3:Nacos AP 还是 CP?

"默认 AP(临时实例)。有非临时实例时 CP
老哥项目MOVA 用 AP(高可用),mpvs 用 CP(强一致)。"

追问 4:Nacos 消息推送怎么实现的?

"UDP 推送。Nacos 检测到服务列表变更,主动推送到所有订阅该服务的消费者
Eureka 是 HTTP 拉取——30 秒延迟
关键功能必须用 Nacos——服务列表变更需要实时感知。"

追问 5:Nacos 配置中心怎么用?

"3 步

1.引入spring-cloud-starter-alibaba-nacos-config

2.配置spring.cloud.nacos.config.server-addr

3.@RefreshScope动态刷新

配置变更不重启。"

追问 6:Nacos 集群怎么部署?

"3 节点

  • 192.168.200.130:8848
  • 192.168.200.131:8848
  • 192.168.200.132:8848

Nacos 自动选 Leader(Raft 算法)。"

追问 7:Nacos 命名空间怎么用?

"4 个标准命名空间

  • dev(开发)
  • test(测试)
  • staging(预发)
  • prod(生产)
追问 8:为什么 Nacos 越来越火?

"3 大原因

1.注册中心 + 配置中心一体化(少一个组件)

2.AP/CP 双模式(更灵活)

3.阿里生态(Spring Cloud Alibaba 主推)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询