问题

Kafka的架构是怎么样的?

答案

一、核心概念

Kafka 是一个分布式流处理平台,采用发布-订阅模式的消息系统架构。其设计目标是高吞吐、低延迟、可扩展、持久化存储。

二、核心架构组件

Kafka 架构由以下关键角色组成:

1. Producer(生产者)

  • 负责发送消息到 Kafka 集群
  • 通过分区策略决定消息发往哪个 Partition
  • 支持同步和异步发送模式
  • 可配置 acks 参数控制消息可靠性

2. Broker(服务节点)

  • Kafka 集群的服务器节点,负责存储和转发消息
  • 每个 Broker 可以管理多个 Partition
  • 通过副本机制(Replica)实现高可用
  • Leader Broker:负责处理分区的读写请求
  • Follower Broker:从 Leader 同步数据,作为备份

3. Topic(主题)

  • 消息的逻辑分类,类似于数据库的表
  • 一个 Topic 可以有多个 Partition(分区)
  • 生产者和消费者围绕 Topic 进行消息的发送和消费

4. Partition(分区)

  • Topic 的物理分片,实现并行处理和水平扩展
  • 每个 Partition 是一个有序的、不可变的消息序列
  • 消息在 Partition 内有序,通过 Offset(偏移量)标识位置
  • 每个 Partition 有多个副本(Replica),分布在不同 Broker 上

5. Consumer(消费者)

  • 从 Topic 中拉取消息进行消费
  • 通过 Consumer Group 实现负载均衡和高可用
  • 每个 Consumer 订阅一个或多个 Partition

6. Consumer Group(消费者组)

  • 多个 Consumer 组成一个逻辑组,共同消费同一个 Topic
  • 核心规则:同一 Consumer Group 中,一个 Partition 只能被一个 Consumer 消费
  • 不同 Consumer Group 之间互不影响,可独立消费同一 Topic

7. Zookeeper(协调服务)

  • 管理 Kafka 集群的元数据(Broker 信息、Topic 配置、Partition 分配等)
  • 负责 Leader 选举(Broker 故障时选举新的 Leader)
  • 维护 Consumer Group 的 Offset(旧版本,新版本存储在 Kafka 内部)
  • 注意:Kafka 2.8+ 版本支持移除 Zookeeper,使用 KRaft 模式(Kafka Raft)

三、架构工作流程

Producer → Topic (Partition 0, 1, 2...) → Consumer Group
                    ↓
                 Broker Cluster
                    ↓
                 Zookeeper

消息流转过程

  1. Producer 根据分区策略将消息发送到指定 Partition 的 Leader Broker
  2. Leader Broker 将消息写入本地日志,并同步给 Follower Broker
  3. Consumer 从 Partition 的 Leader Broker 拉取消息
  4. Zookeeper 维护集群状态和元数据

四、分布式设计要点

1. 高可用

  • 通过副本机制(Replication Factor)保证数据不丢失
  • Leader 宕机后,Zookeeper 从 ISR(In-Sync Replicas)中选举新 Leader

2. 高吞吐

  • Partition 并行处理,支持水平扩展
  • 顺序写磁盘 + 零拷贝技术(Zero Copy)
  • 批量发送和压缩(GZIP、Snappy、LZ4)

3. 负载均衡

  • Producer 通过分区策略(轮询、哈希、自定义)分散负载
  • Consumer Group 通过分区分配策略(Range、RoundRobin、Sticky)实现负载均衡

五、总结

Kafka 架构的核心思想:

  • 分布式存储:通过 Partition 分片和副本机制实现高可用和高吞吐
  • 解耦设计:Producer、Broker、Consumer 独立扩展
  • 协调管理:Zookeeper 负责元数据管理和 Leader 选举

面试答题要点

  1. 五大核心组件:Producer、Broker、Topic/Partition、Consumer/Consumer Group、Zookeeper
  2. Partition 的作用:并行处理、有序性、副本机制
  3. Consumer Group 规则:一个分区只能被组内一个消费者消费
  4. 高可用机制:Leader-Follower 副本 + ISR + 选举机制