Skip to content

Kafka 知识体系总览


想象一下快递公司的工作方式:

寄件人(Producer)→ 快递公司(Kafka)→ 收件人(Consumer)

传统 MQ(如 RabbitMQ) 更像是一个传达室

  • 来了消息立即通知收件人取走
  • 如果收件人不在,消息在内存中放一会儿就可能丢失
  • 适合即时通讯、实时性要求高的场景

Kafka 更像是一个分布式日志系统

  • 寄件人把包裹送到快递公司仓库(磁盘持久化)
  • 收件人什么时候方便什么时候来取(拉取模式)
  • 仓库可以存放大量的包裹(消息堆积能力强)
  • 一个包裹可以由多个收件人同时领取(广播消费)

💡 一句话总结:Kafka 是一个分布式、可持久化、高吞吐量的消息队列,核心设计思想是「日志」而非「队列」。

概念生活类比说明
Topic快递公司的不同仓库(如生鲜仓、服装仓)消息的分类主题
Partition仓库的不同货架分区是并行消费的基本单位
Broker快递公司的仓库节点Kafka 服务实例
Producer寄件人消息生产者
Consumer收件人消息消费者
Consumer Group公司的收件部门一组共同消费的消费者
Replica仓库的备份分区的副本,保证高可用
传统数据库写入:找位置 → 写入 → 找位置 → 写入(随机 IO,每次 ~10ms)
Kafka 写入:追加 → 追加 → 追加(顺序 IO,一次 ~0.01ms)

三个核心优化:

  1. 顺序写磁盘 - 永远只在文件末尾追加,接近内存速度
  2. 页缓存 - 写入先到内存,OS 异步刷盘,利用空闲内存
  3. 零拷贝 - 数据直接从磁盘到网卡,不经过用户态


🏗️ 核心架构与存储原理

Topic/Partition/Replica 三层模型;Log Segment 存储结构;零拷贝 sendfile 原理;页缓存顺序写为什么快。

🔁 副本机制与高可用

ISR 动态收缩机制;LEO/HW 水位线推进规则;Leader Epoch 解决数据不一致;unclean 选举的取舍。

📤 生产者与消费者

Producer 批量发送与幂等性;acks 三种模式;Consumer Group Rebalance 触发与协议;消费位移管理。

✅ 消息可靠性与事务

精确一次语义(Exactly Once)实现路径;幂等 Producer 的 PID+Sequence;Kafka 事务两阶段提交。

⚡ 高性能设计

顺序 IO + 页缓存 + 零拷贝三板斧;批量压缩策略;分区并行度调优;生产消费端吞吐量优化。


专题初级中级高级代表问题
核心架构⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐Log Segment 如何通过稀疏索引查消息?
副本机制⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐HW 和 LEO 的区别?Leader Epoch 解决什么问题?
生产者/消费者⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐Rebalance 为什么会造成短暂不可用?
可靠性与事务⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐如何实现 Exactly Once 语义?
高性能设计⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐Kafka 为什么比传统 MQ 快?

传统请求-响应模式:
服务A ──────────────────► 服务B(同步,强耦合)
Kafka 解耦模式:
服务A ──► Kafka Topic ──► 服务B
└──► 服务C (异步,松耦合,服务B/C独立扩展)
└──► 服务D

Kafka 的核心使用场景

场景说明
异步解耦下单 → 发消息 → 库存/积分/通知各自消费,互不阻塞
流量削峰秒杀请求写入 Kafka 队列,下游按处理能力消费
数据管道MySQL binlog → Kafka → 数仓/ES/缓存,统一数据分发
事件溯源保留完整消息历史,支持回放和审计
实时流处理配合 Flink/Spark Streaming 做实时计算

KafkaRabbitMQRocketMQ
吞吐量极高(百万/s)中(万/s)高(十万/s)
消息顺序分区内有序队列内有序全局/分区有序
消息堆积极强(磁盘存储,可存数天)弱(内存为主)
消费模式拉模式(Pull)推模式(Push)推拉皆可
适用场景大数据、日志、流处理业务解耦、精确路由电商业务、事务消息
延迟毫秒级微秒级毫秒级

第1天 核心架构与存储原理 → 理解 Kafka 的基础设计哲学
第2天 副本机制与高可用 → HW/LEO/ISR 是深问热点
第3天 生产者与消费者 → Rebalance 和位移管理是必考点
第4天 消息可靠性与事务 → Exactly Once 是高级面试加分项
第5天 高性能设计 → 综合前四天,理解整体性能来源

🎯 复习路径:5条必须掌握的核心知识点

Section titled “🎯 复习路径:5条必须掌握的核心知识点”
  1. Topic/Partition/Replica 三层模型

    • Topic 是消息的逻辑分类
    • Partition 是并行度的基本单位
    • Replica 分布在不同 Broker 上保证高可用
  2. ISR 动态同步机制

    • ISR 是与 Leader 保持同步的副本集合
    • LEO 是下一条待写入的 offset
    • HW 是 ISR 中最小的 LEO,代表已确认的最高 offset
    • Leader Epoch 解决了 HW 截断导致的数据丢失问题
  3. 生产者幂等性与事务

    • 幂等性通过 PID + Sequence Number 实现
    • 事务通过 Transaction Coordinator 实现两阶段提交
    • Exactly Once = 幂等性 + 事务 + 消费端原子提交
  4. 高性能三大板斧

    • 顺序写磁盘(无寻道开销)
    • 页缓存(利用空闲内存)
    • 零拷贝(sendfile,CPU 不参与)
  5. 消费位移管理

    • offset 提交到 __consumer_offsets Topic
    • Rebalance 会导致所有消费者停止消费
    • 使用 CooperativeStickyAssignor 减少 Rebalance 影响

排名问题考察点
1Kafka 为什么这么快?高性能设计
2ISR 是如何动态调整的?副本同步机制
3如何保证消息不丢失?可靠性配置
4Rebalance 是什么?有什么问题?消费者机制
5什么是 Exactly Once?如何实现?事务语义

  • 《Kafka: The Definitive Guide》- O’Reilly 出版,必读
  • 《Kafka 权威指南》- 中文翻译版
  • kafka.server.KafkaServer - Broker 启动入口
  • kafka.network.SocketServer - 网络通信层
  • kafka.log.Log - 日志存储实现
  • kafka.producer.Producer - 生产者核心
  • kafka.consumer.Consumer - 消费者核心
  • Kafka Streams - 流处理框架
  • KRaft 模式 - 去 ZooKeeper 化
  • Confluent Platform - 企业级扩展
  • 跨机房复制 - MirrorMaker