Skip to content

Kafka面试题

这一页放标准回答,方便面试前快速复习。每个问题后面都给了深入知识点跳转,真正理解原理要回到对应文档。

Kafka 是什么

标准回答:

Kafka 是一个分布式事件流平台,常用于高吞吐消息、日志采集、用户行为埋点、数据同步、实时计算和系统解耦。它把事件写入 Topic,Topic 拆成多个 Partition,每个 Partition 是有序追加日志。消费者通过消费组读取消息,并用 offset 记录消费进度。

深入理解:Kafka总览架构与存储原理

Kafka 为什么吞吐高

标准回答:

Kafka 吞吐高主要因为它采用顺序追加写日志、批量发送、操作系统 Page Cache、零拷贝、分区并行等设计。它不是频繁随机写磁盘,而是把消息追加到日志末尾,并通过多个 Partition 分散读写压力。

深入理解:Kafka为什么写得快

Topic 和 Partition 有什么关系

标准回答:

Topic 是业务上的消息分类,Partition 是 Topic 的物理分片。一个 Topic 可以有多个 Partition,每个 Partition 内部有序。Kafka 通过 Partition 实现横向扩展和并行消费,但只能保证分区内顺序,不能保证整个 Topic 全局顺序。

深入理解:分区顺序与Offset

Kafka 如何保证顺序

标准回答:

Kafka 只能保证同一个 Partition 内消息顺序。如果业务要求同一个订单或同一个用户的事件有序,需要使用稳定 key,例如 orderId 或 userId,让同一个 key 的消息进入同一个分区。全局顺序通常不推荐,因为会牺牲吞吐。

深入理解:顺序消息的边界

Consumer Group 是什么

标准回答:

Consumer Group 是 Kafka 的消费组机制。同一个组内的消费者分摊 Topic 的分区,一条消息只会被组内一个消费者处理;不同组之间互不影响,可以独立消费同一份消息。所以想让多个服务都收到同一个 Topic 的消息,要使用不同 groupId。

深入理解:Consumer Group

Offset 是什么,什么时候提交

标准回答:

Offset 是消费者在某个 Partition 中的消费位置。每个消费组独立维护自己的 offset。生产环境一般建议关闭自动提交,在业务处理成功后手动提交 offset。这样可以避免业务没处理成功但 offset 已经前进导致漏消费。

深入理解:Offset 是什么消费阶段可靠性

Kafka 会不会丢消息

标准回答:

Kafka 是否丢消息取决于生产、存储、消费三个阶段。生产者要配置 acks=all、重试和幂等;Broker 要配置合理副本数和 min.insync.replicas;消费者要在业务处理成功后提交 offset。如果只配置其中一段,仍然可能丢消息。

深入理解:可靠性幂等与事务

Kafka 为什么会重复消费

标准回答:

Kafka 常见语义是至少一次投递。消费者业务处理成功但提交 offset 前宕机、提交 offset 超时、Rebalance、生产者重复发送等都可能导致重复消费。因此消费端必须做幂等,例如唯一索引、状态机、消费日志表或 Redis 去重。

深入理解:消费幂等

acks=all 是否一定不丢消息

标准回答:

不一定。acks=all 表示等待 ISR 中同步副本确认,但还要配合 Broker 端 min.insync.replicas。如果最小同步副本配置过低,实际可能只有 Leader 确认。核心业务一般使用 3 副本、min.insync.replicas=2、生产者 acks=all

深入理解:生产阶段可靠性存储阶段可靠性

Kafka 的 Exactly Once 是什么

标准回答:

Kafka 的 Exactly Once 主要用于 Kafka 内部流处理链路,例如消费 Topic A,处理后写入 Topic B,并保证输出结果和 offset 提交在事务中一致。它不能自动解决外部数据库和 Kafka 之间的一致性。如果业务同时写 MySQL 和 Kafka,通常要用 Outbox、CDC、补偿或分布式事务。

深入理解:事务和 Exactly OnceOutbox 可靠发送模式

Kafka 和 RabbitMQ、RocketMQ 怎么选

标准回答:

RabbitMQ 更适合复杂路由、企业应用集成、任务队列;Kafka 更适合高吞吐事件流、日志、埋点、数据管道和可回放场景;RocketMQ 更适合交易链路、事务消息、顺序消息和业务重试。选型要看吞吐、路由、事务、回放、生态和团队熟悉度。

深入理解:Kafka总览消息队列总览

Rebalance 是什么,有什么影响

标准回答:

Rebalance 是消费组内消费者和分区重新分配的过程。消费者上线、下线、心跳超时、分区变化都可能触发 Rebalance。Rebalance 期间消费会短暂停顿,如果 offset 提交不当,可能导致重复消费。处理时间过长也可能让消费者被误判为失联。

深入理解:Rebalance

Kafka 适合哪些商业场景

标准回答:

Kafka 常用于订单事件总线、日志采集、用户行为埋点、CDC 数据同步、搜索索引同步、实时风控、削峰填谷、数据平台建设。它的核心价值是事件复用、系统解耦、流量缓冲和历史回放。

深入理解:商业常用场景