部署了多个nacos,nacos之间数据同步怎么实现

9 阅读1分钟

一句话概括 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节点确认) 提交并返回成功

关键对比(面试亮点)

DistroRaft
一致性最终一致强一致
延迟<10ms20-100ms
可用性任何节点可写Leader 宕机时短暂不可写
场景服务注册(要性能)配置中心(要正确)

面试 30 秒速答 "Nacos 节点间数据同步分两套机制:服务注册用 Distro 协议,一致性 Hash 分片 + 异步广播实现最终一致;配置中心用 Raft 协议,Leader 选举 + 日志复制保证强一致。这样设计是因为注册要性能、配置要正确,Nacos 2.x 升级为 gRPC 长连接,同步延迟降到毫秒级。"