跳到主要内容
📖 本章预览

本章为预览版本,展示部分核心内容。完整内容包含详细源码解析、实战代码和面试要点,加入知识星球即可解锁全部章节。

第一章:前置知识 — Nacos 定位与核心概念

1.1 微服务的两大痛点

微服务架构下,服务实例动态变化(扩缩容、故障、滚动发布),带来两个核心问题:

  • 服务发现:调用方如何知道目标服务当前有哪些可用实例?地址是什么?
  • 配置管理:分布式环境下如何统一管理配置?修改后如何实时推送到所有节点?

Nacos(Naming + Configuration + Service)就是为了同时解决这两个问题而生的。

1.2 横向对比 — 为什么选 Nacos

维度NacosEurekaConsulApollo
服务发现
配置管理✅(KV)
一致性协议AP + CP 可切换AP onlyCP(Raft)
健康检查心跳 + 服务端探测客户端心跳Agent 探测
推送模型gRPC 长连接推送客户端轮询(30s)Long Polling长轮询
连接模型gRPC 长连接HTTP 短连接HTTP + gRPCHTTP

核心差异点

  1. Nacos 是唯一同时支持 AP 和 CP 的注册中心,根据实例类型自动选择协议
  2. gRPC 长连接模型让推送延迟从秒级降到毫秒级
  3. 一套系统同时解决服务发现 + 配置管理,减少运维成本

1.3 核心概念模型

Namespace(命名空间)—— 环境隔离(dev / test / prod)
└── Group(分组)—— 逻辑分组,默认 DEFAULT_GROUP

├── [Naming 侧]
│ └── Service(服务)
│ └── Cluster(集群,如机房划分)
│ └── Instance(实例 = IP + Port)
│ ├── 临时实例(Ephemeral)—— AP 协议,心跳维持
│ └── 持久实例(Persistent)—— CP 协议,服务端探测

└── [Config 侧]
└── DataId(配置唯一标识)
└── 配置内容(properties / yaml / json / xml)

1.4 临时实例 vs 持久实例 — Nacos 最核心的设计

这是理解 Nacos 整个架构的钥匙:

维度临时实例(Ephemeral)持久实例(Persistent)
生命周期客户端心跳维持,心跳停止自动摘除服务端持久化存储,不会自动删除
健康检查客户端主动上报心跳服务端主动探测(TCP/HTTP)
一致性协议AP(Distro)—— 保可用性CP(JRaft)—— 保一致性
适用场景微服务实例(动态扩缩容)数据库、中间件等基础设施(相对固定)
不健康时超时后直接摘除标记为不健康,但保留注册信息

为什么这样设计?

微服务实例生命周期短、变化快,用 AP 协议保证即使部分节点故障,服务发现仍然可用(可用性优先)。而数据库等基础设施相对稳定,需要强一致性保证所有节点看到的实例列表一致(一致性优先)。


🔒 解锁完整内容

本章剩余内容需要解锁后查看

以上仅为本章部分预览内容,完整内容包含更多深度源码解析、实战代码和面试要点。

加入知识星球你将获得:

  • ✅ 全部 17 章完整内容 + 持续更新
  • ✅ 配套源码 + 实战项目
  • ✅ 一对一答疑 + 面试辅导
  • ✅ 简历优化 + 内推机会

📚 本章完整目录

以下为本章完整目录结构,加入知识星球即可解锁全部内容。

1.5 客户端核心 API

1.6 面试热点