一句话概括 Nacos 集群内 服务注册用 Distro 协议异步同步,配置中心用 Raft 协议强一致复制,两套机制分别对应 AP 和 CP 场景。
服务注册:Distro 协议(AP)
| 要点 | 说明 |
|---|---|
| 分片 | 一致性 Hash 将服务实例分散到各节点 |
| 实时 | 写本地成功后立即异步广播给其他节点 |
| 校验 | 每 5 秒比对 Checksum,不一致则全量拉取 |
| 容错 | 网络抖动时允许短暂不一致,自动修复 |
写请求 ──► Nacos-1(负责该实例)──► 本地注册表 ──► 立即返回客户端 │ ▼ 异步广播给其他节点(失败重试3次)
配置中心:JRaft 协议(CP)
| 要点 | 说明 |
|---|---|
| Leader 制 | 所有写操作走 Leader,Follower 只读 |
| 复制 | Leader 并行发送日志,等 N/2+1 确认后提交 |
| 持久化 | 先写 WAL,再应用状态机,崩溃可恢复 |
| 选举 | Leader 宕机 10 秒内完成新 Leader 选举 |
客户端写 ──► Leader ──► 本地 WAL ──► 并行复制给 Follower │ ▼(2/3节点确认) 提交并返回成功
关键对比(面试亮点)
| Distro | Raft | |
|---|---|---|
| 一致性 | 最终一致 | 强一致 |
| 延迟 | <10ms | 20-100ms |
| 可用性 | 任何节点可写 | Leader 宕机时短暂不可写 |
| 场景 | 服务注册(要性能) | 配置中心(要正确) |
面试 30 秒速答 "Nacos 节点间数据同步分两套机制:服务注册用 Distro 协议,一致性 Hash 分片 + 异步广播实现最终一致;配置中心用 Raft 协议,Leader 选举 + 日志复制保证强一致。这样设计是因为注册要性能、配置要正确,Nacos 2.x 升级为 gRPC 长连接,同步延迟降到毫秒级。"