Leader+Follower = 副本数?
在 Kafka 的分区副本机制中,副本数(Replication Factor) 等于 Leader 副本数量 + Follower 副本数量。具体关系如下:
# 📌 一、核心公式
副本数(Replication Factor) = 1(Leader) + N(Follower)
1
- Leader 副本:每个分区有且仅有 1 个 Leader,负责处理该分区的所有读写请求。
- Follower 副本:每个分区有 N 个 Follower(N ≥ 0),仅负责从 Leader 同步数据,不直接服务客户端。
- 副本总数:即
1 + N
,例如副本数=3 时,包含 1 Leader + 2 Follower。
# 📊 二、角色分工与协作
副本类型 | 职责 | 是否服务客户端 | 数量限制 |
---|---|---|---|
Leader | 处理生产者写入和消费者读取请求;管理数据同步到 Follower | ✅ 是 | 固定 1 个 |
Follower | 从 Leader 异步/同步拉取数据;参与 Leader 选举(仅 ISR 中的副本有资格) | ❌ 否 | 可配置(副本数-1) |
✅ 关键点:
- Follower 不直接提供读写服务,仅作为数据冗余备份和故障恢复的候选。
- 生产者必须将消息发送到 Leader,消费者也必须从 Leader 消费数据。
# ⚙️ 三、副本数配置示例
假设某 Topic 的分区配置为 副本数=3,分布到 3 个 Broker 集群:
分区 | Leader 所在 Broker | Follower1 所在 Broker | Follower2 所在 Broker |
---|---|---|---|
Partition 0 | Broker 0 | Broker 1 | Broker 2 |
Partition 1 | Broker 1 | Broker 2 | Broker 0 |
- 每个分区的副本总数:
1 Leader + 2 Follower = 3
。 - 容错能力:容忍最多 2 个 Broker 宕机(N-1 原则,N=副本数)。
# ⚠️ 四、注意事项
- 副本数上限:
- 副本数 ≤ Broker 数量(例如 3 Broker 时,副本数最大为 3)。
- 若超过则 Topic 创建失败(如 3 Broker 设置副本数=4 会报错)。
- Follower 的可用性:
- 只有 ISR(In-Sync Replicas) 中的 Follower 才具备选举资格。
- 若 Follower 同步滞后(超过
replica.lag.time.max.ms
),会被移出 ISR 集合。
- 生产建议:
- 副本数 ≥ 3:生产环境推荐配置,兼顾容错与成本。
- 最小同步副本:设置
min.insync.replicas=2
(配合acks=all
),确保消息写入至少 2 个副本(含 Leader)才返回成功。
# 💎 总结
副本数 = 1(Leader) + N(Follower)
- Leader:唯一读写入口,承担服务压力;
- Follower:纯备份角色,通过 ISR 机制保障故障切换的可靠性。
合理配置副本数(如 3 副本)是 Kafka 实现高可用、数据持久化的核心设计。
编辑 (opens new window)
上次更新: 2025/06/24, 00:41:57