2. Kafka 核心架构回顾:Producer、Broker、Consumer、Topic、Partition、Replica 机制
在深入 KafkaMQ 读写分离边界之前,必须对 Kafka 的核心架构组件建立精确的认知。Kafka 是一个分布式、分区化、多副本的发布-订阅消息系统,其架构由 Producer、Broker、Consumer 三大角色,以及 Topic、Partition、Replica 三大逻辑/物理单元构成。本节将逐一拆解这些核心概念,并重点回顾 Replica 机制——它是读写分离策略的底层基础。
2.1 核心角色与逻辑单元
| 组件 | 类型 | 核心职责 | 关键特征 |
|---|---|---|---|
| Producer | 客户端角色 | 将消息发布到指定的 Topic | 可指定分区策略(轮询、key 哈希、自定义);支持异步/同步发送 |
| Broker | 服务端节点 | 存储消息、处理读写请求、管理副本 | 每个 Broker 拥有唯一 ID;集群中通过 ZooKeeper 或 KRaft 协调 |
| Consumer | 客户端角色 | 从 Topic 拉取消息并消费 | 属于某个 Consumer Group;通过 offset 记录消费位置 |
| Topic | 逻辑分类 | 消息的逻辑通道,同一 Topic 的消息具有相同业务语义 | 可配置分区数、副本数、保留策略 |
| Partition | 物理分片 | Topic 的横向切分单元,实现并行读写 | 每个 Partition 是一个有序、不可变的消息日志;分区内消息有唯一 offset |
| Replica | 副本单元 | Partition 的冗余拷贝,保证高可用 | 分为 Leader Replica 和 Follower Replica;Leader 负责读写,Follower 同步 |
2.2 Replica 机制:Leader 与 Follower 的职责边界
每个 Partition 可以配置多个 Replica(副本数通常为 1~3)。在任意时刻,一个 Partition 的所有 Replica 中,有且仅有一个 Leader Replica,其余为 Follower Replica。Leader 负责处理所有读写请求,Follower 仅从 Leader 拉取消息进行同步,不对外提供服务。
Replica 机制的核心流程如下:
- Leader 选举: 当 Leader 所在的 Broker 宕机时,Controller(集群控制器)从 ISR(In-Sync Replica)列表中选举一个新的 Leader。
- 消息写入: Producer 将消息发送到 Leader,Leader 将消息追加到本地日志,并等待 ISR 中的 Follower 完成同步(ack 配置决定等待策略)。
- 消息同步: Follower 持续向 Leader 发送 Fetch 请求,拉取未同步的消息,写入本地日志。
- 消息读取: Consumer 默认只从 Leader 读取消息,保证读取到的数据是最新且一致的。
2.3 Kafka 核心架构总览
下图展示了 Kafka 集群中 Producer、Broker、Consumer 之间的交互关系,以及 Topic、Partition、Replica 的层级结构。注意图中 Partition-0 的 Leader 位于 Broker-1,Follower 位于 Broker-2 和 Broker-3;Partition-1 的 Leader 位于 Broker-2,以此实现负载均衡。
2.4 Partition 与 Replica 的详细关系
为了更清晰地展示单个 Partition 内部 Leader 与 Follower 的交互细节,下图以 Partition-0 为例,展示了消息写入、同步、读取的完整路径。
2.5 ISR 机制与一致性保证
Kafka 通过 ISR(In-Sync Replica) 列表来管理副本的同步状态。只有处于 ISR 中的 Follower 才有资格在 Leader 故障时被选举为新的 Leader。ISR 的维护规则如下:
| 条件 | 说明 | 影响 |
|---|---|---|
| Follower 与 Leader 的 LEO 差距 ≤ replica.lag.time.max.ms | Follower 在指定时间内持续拉取消息,未落后太多 | 保持在 ISR 中,可参与 Leader 选举 |
| Follower 与 Leader 的 LEO 差距 > replica.lag.time.max.ms | Follower 同步过慢或断连 | 从 ISR 中移除,不再参与选举;追上后重新加入 |
| Leader 宕机 | Controller 从 ISR 中选举新 Leader | 保证新 Leader 包含所有已提交消息(HW 以内的数据) |
2.6 本章小结
- Producer 写入消息到 Topic 的特定 Partition,由该 Partition 的 Leader 负责接收。
- Broker 是消息存储和服务的物理节点,每个 Broker 承载多个 Partition 的 Leader 或 Follower。
- Consumer 从 Leader 拉取消息,通过 offset 控制消费进度。
- Partition 是 Kafka 并行度和数据分布的基本单元,每个 Partition 有多个 Replica。
- Replica 分为 Leader 和 Follower,Leader 处理所有读写,Follower 仅同步备份。
- ISR 机制 保证了副本的一致性和故障恢复时的数据完整性。