基于本文回答
0
评论

Nacos 集群中,Leader 节点和 Follower 节点分别负责什么?

知识点图片

在 Nacos 集群中,Leader(领导者)Follower(跟随者) 的概念主要存在于其使用 Raft 一致性协议 的场景中。

Nacos 的核心功能分为两大块:配置中心 (Config)注册中心 (Naming)

  • 配置中心:始终使用 Raft 协议(强一致性),因此严格区分 Leader/Follower。
  • 注册中心
    • 如果是持久化服务(CP模式),使用 Raft 协议,区分 Leader/Follower。
    • 如果是临时服务(AP模式,默认 Spring Cloud 方式),使用 Distro 协议(对等协议),不区分严格的 Leader/Follower(每个节点都是自己负责数据的 Leader)。

以下主要针对 Raft 协议场景(配置中心及 CP 模式注册中心) 来详细解释两者的职责:


1. Leader 节点(领导者)

Leader 是集群中的核心主导节点,通过选举产生,通常一个 Raft Group 中只有一个 Leader。

主要职责:

  • 处理所有写请求(Write):
    • 这是 Leader 最核心的职责。所有的数据变更(如发布配置、修改配置、注册持久化服务)请求,必须由 Leader 处理。
    • 如果 Client 将写请求发送给了 Follower,Follower 会将请求转发给 Leader。
  • 日志复制(Log Replication):
    • Leader 接收到写请求后,会将数据变更生成日志条目(Log Entry)。
    • Leader 负责将这些日志同步复制给所有的 Follower 节点。
    • 只有当大多数(Quorum,即 N/2 + 1) 节点确认接收并持久化了日志后,Leader 才会提交该事务,并返回成功给客户端。
  • 维持心跳(Heartbeat):
    • Leader 会周期性地向所有 Follower 发送心跳包。
    • 这不仅是为了同步数据,更是为了宣示主权:“我还活着,不要发起新的选举”。

2. Follower 节点(跟随者)

Follower 是 Leader 的备份和潜在的接班人。

主要职责:

  • 处理读请求(Read):
    • Follower 可以直接处理客户端的查询(读)请求(在 Nacos/JRaft 的实现中,为了保证线性一致性读,Follower 处理读请求时通常也会向 Leader 确认当前数据是否最新,或者直接由 Leader 处理读)。
  • 转发写请求:
    • 如果 Follower 接收到了客户端的“写”请求(如修改配置),它不能直接处理,而是必须将其转发给当前的 Leader 节点。
  • 数据同步与持久化:
    • 被动接收来自 Leader 的日志复制请求(AppendEntries)。
    • 将日志写入本地磁盘,并向 Leader 发送确认(ACK)。
    • 当收到 Leader 的提交指令后,将日志应用到状态机(使数据生效)。
  • 参与选举(Failover):
    • 如果 Follower 在一定时间内(超时时间)没有收到 Leader 的心跳,它会认为 Leader 挂了。
    • 此时,Follower 会将自己转变为 Candidate(候选人),发起新一轮的投票选举,试图成为新的 Leader。

3. 总结对比表

特性 Leader (领导者) Follower (跟随者)
写请求 (增删改) 直接处理,并同步给其他节点 不能处理,需转发给 Leader
读请求 (查询) 可以处理 可以处理 (需保证一致性)
数据一致性 数据源头,负责发起同步 数据副本,被动接收同步
集群地位 拥有决策权,维持集群心跳 听从指令,监控 Leader 状态
故障处理 自身故障会导致集群重新选举 自身故障不影响集群运行 (只要存活节点 > 半数)

特别补充:AP 模式(Distro 协议)

如果你使用的是 Nacos 作为 服务发现(Service Discovery),且注册的是临时实例(Ephemeral Instances,例如 Spring Cloud Alibaba 默认配置):

  • 此时 Nacos 使用 Distro 协议
  • 没有全局的 Leader
  • Peer-to-Peer(点对点):每个节点都是平等的。
  • 每个节点负责一部分服务的读写(分片机制)。
  • 如果一个节点挂了,其他节点会接管其负责的服务,保证高可用(AP),但不保证强一致性。

一句话总结:当你问 Leader/Follower 时,通常是指 Nacos 的配置中心功能,或者 CP 模式下的服务注册功能。Leader 负责写和统筹,Follower 负责读和备份。

右滑查看面试常问