← 每日面试题 学习看板

Kafka的架构是怎么样的?

面试题/03数据库中间件/06MQ/01Kafka/Kafka的架构是怎么样的?.md

面试记录 2026-10-12

题目:Kafka的架构是怎么样的?

难度:medium

标签:db/mq/kafka, mq/kafka, difficulty/medium

评分:⭐⭐☆☆☆(2/5)

我的回答

Kafka 主要的架构相当于是三层的,生产者、消费者,还有自身的 Broker,也就是说加自身的处理端。另外处理端会涉及中间的协调,以前需要 Zookeeper 去进行协调,后来他把 Zookeeper 的操作移给了自己,用一个 Kafka 自身的 Topic 消息来做协调操作,完成了自己的闭环,就不需要再额外的 Zookeeper 了;

Kafka 是一个分布式的消息系统,它自身可以有部署在多台机器上,涉及主服务跟相关的分服务,用于进行分布式的支持。

点评

优点:

不足:

补充:

完整讲解

第一部分:知识重点剖析

核心考点定位:考察对 Kafka 分层架构、副本机制、消费者模型的完整理解,尤其是"如何在保持简单组件的前提下做到高吞吐 + 高可用"这个设计哲学。

知识点拆解:

  1. 三大角色组件:
  1. 存储层:Topic → Partition → Segment:
  1. 副本层:Leader/Follower + ISR:
  1. 协调层演进:
  1. 消费层:Consumer Group:
Kafka 的设计哲学:所有 Broker 对等,没有中心节点,通过 Partition 实现并行,通过 ISR 副本实现高可用。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. Kafka 为什么让所有 Broker 对等,而不是采用 Master-Slave 模型?
  1. Controller Broker 挂了会怎样?
  1. KRaft 相比 ZooKeeper 有哪些优势?
  1. __consumer_offsets 内部 Topic 是什么?

第三部分:面试者参考回答(300-400 字口语化)

面试官您好,Kafka 的架构我一般会从四层来讲。

第一层是角色组件,核心就三个:Producer、Broker、Consumer。特别想强调的是 所有 Broker 都是对等的,没有 Master/Slave 之分,差异只体现在"哪些 Broker 担任哪些 Partition 的 Leader/Follower"上,这是 Kafka 高可用和弹性扩展的关键设计。

第二层是存储层,一个 Topic 会被切成 N 个 Partition,每个 Partition 是一个 append-only 的顺序日志,物理上再拆成多个 Segment(.log + .index)。Partition 是 Kafka 并行的最小单位,也是消费者并行度的天花板。

第三层是副本层,每个 Partition 都有 Leader + Follower,形成 ISR(同步副本集)。写入走 Leader,Leader 落盘后通过异步复制给 Follower,acks=all 语义下等 ISR 全部确认才算成功。Leader 挂掉从 ISR 里选新 Leader。

第四层是协调层,这块经历过一次大演进:ZK 时代由 ZooKeeper 存元数据并选 Controller Broker;Kafka 3.x 引入了 KRaft(Kafka Raft Protocol),用内嵌的 Raft Quorum 替代 ZooKeeper,去掉了外部依赖,元数据管理性能也大幅提升。

消费端则是 Consumer Group,组内消费者共享 Partition,消费位点存在内部 Topic __consumer_offsets 里——这个设计很妙,Kafka 用 Kafka 自己存自己的元数据。

当然,Kafka 的架构复杂度并不低,特别是 KRaft 迁移和跨集群容灾(MirrorMaker 2)这些工程细节,实际落地还是要看具体场景权衡。