🏗️ 核心架构与存储原理
Topic/Partition/Replica 三层模型;Log Segment 存储结构;零拷贝 sendfile 原理;页缓存顺序写为什么快。
想象一下快递公司的工作方式:
寄件人(Producer)→ 快递公司(Kafka)→ 收件人(Consumer)传统 MQ(如 RabbitMQ) 更像是一个传达室:
Kafka 更像是一个分布式日志系统:
💡 一句话总结:Kafka 是一个分布式、可持久化、高吞吐量的消息队列,核心设计思想是「日志」而非「队列」。
| 概念 | 生活类比 | 说明 |
|---|---|---|
| Topic | 快递公司的不同仓库(如生鲜仓、服装仓) | 消息的分类主题 |
| Partition | 仓库的不同货架 | 分区是并行消费的基本单位 |
| Broker | 快递公司的仓库节点 | Kafka 服务实例 |
| Producer | 寄件人 | 消息生产者 |
| Consumer | 收件人 | 消息消费者 |
| Consumer Group | 公司的收件部门 | 一组共同消费的消费者 |
| Replica | 仓库的备份 | 分区的副本,保证高可用 |
传统数据库写入:找位置 → 写入 → 找位置 → 写入(随机 IO,每次 ~10ms)Kafka 写入:追加 → 追加 → 追加(顺序 IO,一次 ~0.01ms)三个核心优化:
🏗️ 核心架构与存储原理
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独立扩展) └──► 服务DKafka 的核心使用场景:
| 场景 | 说明 |
|---|---|
| 异步解耦 | 下单 → 发消息 → 库存/积分/通知各自消费,互不阻塞 |
| 流量削峰 | 秒杀请求写入 Kafka 队列,下游按处理能力消费 |
| 数据管道 | MySQL binlog → Kafka → 数仓/ES/缓存,统一数据分发 |
| 事件溯源 | 保留完整消息历史,支持回放和审计 |
| 实时流处理 | 配合 Flink/Spark Streaming 做实时计算 |
| Kafka | RabbitMQ | RocketMQ | |
|---|---|---|---|
| 吞吐量 | 极高(百万/s) | 中(万/s) | 高(十万/s) |
| 消息顺序 | 分区内有序 | 队列内有序 | 全局/分区有序 |
| 消息堆积 | 极强(磁盘存储,可存数天) | 弱(内存为主) | 强 |
| 消费模式 | 拉模式(Pull) | 推模式(Push) | 推拉皆可 |
| 适用场景 | 大数据、日志、流处理 | 业务解耦、精确路由 | 电商业务、事务消息 |
| 延迟 | 毫秒级 | 微秒级 | 毫秒级 |
第1天 核心架构与存储原理 → 理解 Kafka 的基础设计哲学第2天 副本机制与高可用 → HW/LEO/ISR 是深问热点第3天 生产者与消费者 → Rebalance 和位移管理是必考点第4天 消息可靠性与事务 → Exactly Once 是高级面试加分项第5天 高性能设计 → 综合前四天,理解整体性能来源Topic/Partition/Replica 三层模型
ISR 动态同步机制
生产者幂等性与事务
高性能三大板斧
消费位移管理
__consumer_offsets Topic| 排名 | 问题 | 考察点 |
|---|---|---|
| 1 | Kafka 为什么这么快? | 高性能设计 |
| 2 | ISR 是如何动态调整的? | 副本同步机制 |
| 3 | 如何保证消息不丢失? | 可靠性配置 |
| 4 | Rebalance 是什么?有什么问题? | 消费者机制 |
| 5 | 什么是 Exactly Once?如何实现? | 事务语义 |
kafka.server.KafkaServer - Broker 启动入口kafka.network.SocketServer - 网络通信层kafka.log.Log - 日志存储实现kafka.producer.Producer - 生产者核心kafka.consumer.Consumer - 消费者核心