JJava 知识库
JAVA INTERVIEW

高频面试题

Kafka进阶约 1 分钟

Kafka 吞吐为什么高?如果面试官追问零拷贝和顺序写,你会结合链路怎么解释?

参考回答约 1 分钟 · 口语表达
我的判断

Kafka 高吞吐来自顺序追加、批量压缩、页缓存和减少数据拷贝共同作用;零拷贝主要优化 Broker 向消费者发送日志的路径。

生产消息按分区追加到日志文件,顺序写比随机更新更适合磁盘和页缓存。生产者把多条消息批成 record batch 并压缩,Broker 可以保存并转发整批,减少协议解析与系统调用。

消费者读取时,传统路径可能是磁盘/页缓存到内核缓冲、再拷到用户态、最后回 socket。使用 sendfile 一类机制时,数据可以在内核页缓存与网络之间传输,减少用户态拷贝和上下文切换。

但线上瓶颈不会只看“有没有零拷贝”。如果消息很小且批次差、分区太多、压缩 CPU 高、磁盘或网卡饱和,吞吐仍会差。我会看 batch size、压缩比、网络、磁盘、请求队列和 page cache 命中。

所以项目优化通常先从批量、分区和消息大小入手,而不是把零拷贝当成万能结论。