Apache Kafka 架构图

Producers 消息生产者 多个应用实例 App 1 Producer App 2 Producer App 3 Producer Kafka Cluster Topic: user-events partitions=3, replication=3 Broker 0 (Leader) P0 [Leader] P1 [Follower] P2 [Follower] Broker 1 (Follower) P0 [Follower] P1 [Leader] P2 [Follower] Broker 2 (Follower) P0 [Follower] P1 [Follower] P2 [Leader] 写入 P0 Leader 写入 P1 Leader 写入 P2 Leader ISR (In-Sync Replicas) ISR = [Broker 0, Broker 1, Broker 2] 所有与 Leader 保持同步的副本集合,ack=all 时需等待 ISR 全部确认 Topic: orders partitions=3, replication=3 Broker 0 P0 P1 Broker 1 P1 P2 Broker 2 P0 P2 ZooKeeper / KRaft Controller 选举 · 元数据存储 · Broker 注册 · 分区 Leader 选举 Consumers Consumer Group A 消费组隔离 Consumer 1 → P0 Consumer 2 → P1 Consumer 3 → P2 Consumer G-B Consumer Group B Consumer G-C Consumer Group C 独立消费 同一 Topic

Producer (生产者)

应用程序向 Kafka 发送消息的客户端。
根据 key 决定写入哪个 Partition,默认采用 hash(key) % partitions 策略。

Broker

Kafka 集群中的服务节点,负责接收消息、存储分区、管理副本。
每个 Broker 持有多个 Partition 的部分数据。

Topic & Partition

Topic 是消息的逻辑分类,Partition 是物理存储单元。
Partition 数量决定了并行消费的上限。

Leader & Follower

每个 Partition 有 1 个 Leader 和 N-1 个 Follower。
所有读写操作都经过 Leader,Follower 异步同步。

ISR (In-Sync Replicas)

与 Leader 保持同步的副本集合。
acks=all 时需等待 ISR 全部确认才返回成功。

Consumer Group

同一 Group 内的 Consumer 负载均衡消费 Partition。
不同 Group 可独立消费同一 Topic,互不影响。