Skip to content

Kafka 架构

Broker 集群、分区副本、ISR、KRaft。

Updated View as Markdown
For humans

Kafka 架构

Kafka 的架构核心:分区日志 + 多副本 + ISR 机制。面试主线:组件、副本模型、元数据管理。

集群组件

组件 职责
Broker 服务节点,存储分区数据
Topic/Partition 数据组织:Topic 分多个分区
副本(Replica) 分区多副本(leader + follower)
控制器(Controller) 集群管理:分区分配、leader 选举
元数据 分区归属、配置(KRaft 管理)

分区副本与 ISR

ISR: 同步副本集合, leader 故障从中选举

  • ISR(In-Sync Replicas):与 leader 保持同步的副本集合
  • 写确认:acks=all 时 ISR 全部落盘才返回
  • leader 选举只从 ISR 选(落后太多的副本不能当 leader,防丢数据)
  • 副本数 3 是生产标配(容忍 1 台故障)

写入路径

生产者 → 分区 leader(追加写日志段)→ 副本同步 → acks 返回
  • 顺序追加写(磁盘顺序 IO,见高吞吐篇)
  • 消息在分区内有序,跨分区无序
  • 分区是并行和顺序的平衡点:分区分摊吞吐,分区内保顺序

KRaft:去 ZooKeeper

  • 早期版本用 ZooKeeper 存元数据 + 选主(controller)
  • KRaft(2.8 引入,3.x 稳定):Kafka 自己的 Raft 实现,元数据日志化
  • 收益:少一个组件、部署简化、controller 故障恢复更快
  • 面试点:新版本默认 KRaft,ZK 已是历史

面试追问

  1. Kafka 集群有哪些组件? Broker、分区副本、控制器(KRaft)。元数据管理是核心
  2. ISR 是什么? 与 leader 保持同步的副本集合。acks=all 等 ISR 确认,选举只从 ISR 选
  3. 为什么副本 3? 容忍 1 台故障,是成本与可用性的平衡
  4. 分区的作用? 并行单位(吞吐)+ 顺序单位(分区内有序)。分摊数据
  5. KRaft 解决什么? 去掉 ZooKeeper:部署简化、元数据管理更快。新版本默认
Navigation

Type to search…

↑↓ navigate↵ selectEsc close