问题
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
消息流转过程:
- Producer 根据分区策略将消息发送到指定 Partition 的 Leader Broker
- Leader Broker 将消息写入本地日志,并同步给 Follower Broker
- Consumer 从 Partition 的 Leader Broker 拉取消息
- 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 选举
面试答题要点:
- 五大核心组件:Producer、Broker、Topic/Partition、Consumer/Consumer Group、Zookeeper
- Partition 的作用:并行处理、有序性、副本机制
- Consumer Group 规则:一个分区只能被组内一个消费者消费
- 高可用机制:Leader-Follower 副本 + ISR + 选举机制