Skip to content

P95 简述 Kafka 架构设计 ​

面试题:Kafka 的整体架构是什么?Topic、Partition、Broker 的关系?

1. 核心概念 ​

text
Producer → Broker(Kafka 集群节点)
          ├─ Topic(逻辑主题)
          │   └─ Partition(物理分片,每个分区有序)
          │       └─ 消息按 offset 顺序存储
          └─ Consumer(消费组消费分区)
  • Topic:消息分类;
  • Partition:一个 Topic 分成多个分区,分区内有序、分区之间无序;
  • Offset:消息在分区内的序号,消费者记录消费位置;
  • Consumer Group:组内每个分区只被一个消费者消费(并行度 = 分区数);
  • 副本(Replica):Leader 负责读写,Follower 同步复制,故障自动切换。

2. 消息流转 ​

text
① Producer 按 key 哈希/轮询选择分区发送
② Broker 把消息追加到分区日志文件(顺序写磁盘,快)
③ 副本同步(ISR)
④ Consumer 从分区按 offset 拉取(pull)消费

3. 为什么 Kafka 快 ​

  • 顺序写磁盘(追加日志,机械盘也能接近内存速度);
  • PageCache 缓存热数据;
  • 零拷贝(sendfile)减少拷贝;
  • 批量:生产者批量发送、消费者批量拉取;
  • 分区并行 + 水平扩展。

4. 高可用与一致性 ​

  • ISR(In-Sync Replicas):与 Leader 保持同步的副本集合;
  • acks 参数:0(不等确认)/1(Leader 确认)/all(ISR 全部确认,最安全);
  • Leader 挂掉从 ISR 中选举新 Leader;
  • 引入 ZooKeeper/KRaft 做元数据管理和 Leader 选举。

5. 加分点 ​

  • 说清"分区是并行与有序的取舍":要全局有序只能单分区;
  • 提到消费组再均衡(Rebalance)和 offset 提交(自动/手动);
  • 追问"为什么不支持 push":pull 让消费者自己控制速率,避免压垮慢消费者;
  • 提到日志保留策略(segment 滚动、按时间/大小清理)。

一句话总结 ​

Kafka 架构 = Producer + Broker(Topic → Partition → 日志文件) + Consumer Group;分区实现并行与扩展,副本 + ISR 保证高可用,顺序写 + 零拷贝 + 批量带来高性能,消费端按 offset 拉取。

基于 VitePress 重建