Kafka 面试题
2026/1/15大约 2 分钟
Kafka 面试题
基础概念
1. Kafka 的特点?
- 高吞吐:百万级 TPS
- 低延迟:毫秒级
- 高可用:副本机制
- 持久化:消息持久化到磁盘
- 可扩展:水平扩展
2. Kafka 和 RocketMQ 的区别?
| 特性 | Kafka | RocketMQ |
|---|---|---|
| 吞吐量 | 百万级 | 十万级 |
| 延迟 | 毫秒级 | 毫秒级 |
| 消息查询 | 不支持 | 支持 |
| 事务消息 | 支持 | 支持 |
| 定时消息 | 不支持 | 支持 |
| 消息回溯 | 支持 | 支持 |
3. 为什么 Kafka 快?
- 顺序写磁盘:追加写入,避免随机 IO
- 零拷贝:sendfile 系统调用
- 批量处理:批量发送和压缩
- 分区并行:多分区并行处理
- 页缓存:利用操作系统页缓存
4. Kafka 如何保证消息不丢失?
Producer:
- acks=all
- retries > 0
- 使用回调确认
Broker:
- replication.factor >= 3
- min.insync.replicas >= 2
Consumer:
- 手动提交 offset
- 处理成功后再提交
5. Kafka 如何保证消息顺序?
- 单分区内有序
- 指定相同 key 到同一分区
- max.in.flight.requests.per.connection=1
6. Kafka 如何保证消息不重复?
Producer:
- enable.idempotence=true
- 事务消息
Consumer:
- 业务幂等
- 唯一 ID 去重
架构设计
7. ISR 机制?
- ISR(In-Sync Replicas):同步副本集合
- Leader 维护 ISR 列表
- Follower 落后太多会被踢出 ISR
- 只有 ISR 中的副本才能被选为 Leader
8. Controller 的作用?
- 管理分区和副本状态
- 处理 Broker 上下线
- 执行分区 Leader 选举
- 同步元数据到其他 Broker
9. Rebalance 过程?
- Consumer 发送 JoinGroup 请求
- Coordinator 选择 Leader Consumer
- Leader 制定分配方案
- 所有 Consumer 发送 SyncGroup
- Coordinator 下发分配结果
10. 分区分配策略?
| 策略 | 说明 |
|---|---|
| Range | 按 Topic 分配,可能不均匀 |
| RoundRobin | 轮询分配,较均匀 |
| Sticky | 粘性分配,减少 Rebalance 影响 |
| CooperativeSticky | 协作式粘性分配 |
生产消费
11. acks 参数含义?
| 值 | 含义 | 可靠性 | 性能 |
|---|---|---|---|
| 0 | 不等待确认 | 低 | 高 |
| 1 | Leader 确认 | 中 | 中 |
| all | ISR 全部确认 | 高 | 低 |
12. 消费者提交 offset 的方式?
- 自动提交:定时提交,可能重复消费
- 同步提交:阻塞等待,可靠但慢
- 异步提交:非阻塞,可能失败
- 指定 offset 提交:精确控制
13. 消费者 Lag 过大怎么办?
- 增加消费者数量
- 增加分区数量
- 优化消费逻辑
- 增大 max.poll.records
- 检查是否有慢消费
运维问题
14. 如何监控 Kafka?
- JMX 指标:Broker、Producer、Consumer 指标
- Kafka Manager:集群管理
- Burrow:Consumer Lag 监控
- Prometheus + Grafana:可视化监控
15. 如何扩容 Kafka?
- 添加新 Broker
- 使用 kafka-reassign-partitions 迁移分区
- 增加 Topic 分区数(只能增不能减)