Kafka 核心技术与实战 · 深度学习指南(细化版)

作者:胡夕(Apache Kafka 中国社区活跃贡献者)| 真实结构:42 讲正文 + 加餐(共 45 个文件) 定位:「吞吐之王」消息队列的系统课——从术语、集群部署、生产者/消费者,到副本机制、控制器、重平衡、监控调优,直至 Kafka Streams。


一、这门课到底讲什么

Kafka 是分布式消息引擎的事实标准。这门课教你「用好 Kafka + 看懂 Kafka」:生产者怎么保证不丢消息、消费者组怎么工作、副本怎么同步、重平衡为什么会坑人、线上怎么监控调优。


二、真实讲次大纲(按模块)

模块 1:基础与部署(第 1–8 讲)

讲次核心知识点
01消息引擎系统 ABC(为什么用 MQ:异步/削峰/解耦)
02快速搞定 Kafka 术语(Topic/Partition/Offset/Consumer Group)
03–04Kafka 不只是消息引擎;怎么选 Kafka 版本
05Kafka 版本号
06线上集群部署方案
07–08最最最重要的集群参数配置(上/下)

模块 2:生产者(第 9–14 讲)

讲次核心知识点
09消息分区机制(key 哈希/轮询/自定义)
10生产者压缩算法
11无消息丢失配置怎么实现(acks、重试、幂等)
12客户端高级功能
13Java 生产者如何管理 TCP 连接
14幂等生产者和事务生产者

模块 3:消费者(第 15–22 讲)

讲次核心知识点
15消费者组到底是什么
16位移主题(__consumer_offsets)
17消费者组重平衡能避免吗
18位移提交那些事(自动/手动)
19CommitFailedException 怎么处理
20–21多线程消费者、TCP 连接管理
22消费进度监控

模块 4:副本与控制器(第 23–27 讲)

讲次核心知识点
23副本机制详解(Leader/Follower/ISR)
24请求是怎么被处理的
25重平衡全流程解析
26Kafka 控制器(Controller)
27高水位(HW)和 Leader Epoch

模块 5:运维与调优(第 28–38 讲)

讲次核心知识点
28–30主题管理、动态配置、重设消费位移
31–32工具脚本、KafkaAdminClient
33–34认证机制、云环境授权
35跨集群备份 MirrorMaker
36–37监控 Kafka、主流监控框架
38调优 Kafka

模块 6:Kafka Streams(第 39–42 讲)

讲次核心知识点
39从 0 搭建实时日志流处理平台
40–42Kafka Streams vs 其他流处理平台、DSL 开发、金融应用

三、必须吃透的核心知识点

  1. 为什么快(贯穿全课):顺序写磁盘 + 页缓存 + 零拷贝 + 批量。Kafka 把「写」做成顺序追加,单 Broker 就能百万级吞吐。

  2. 消息不丢配置(第 11 讲):生产者 acks=all + 重试 + 幂等;Broker 副本数 ≥ 2、min.insync.replicas ≥ 2;消费者「先消费再提交位移」改为「先提交再消费」或手动提交。

  3. 消费者组与重平衡(第 15、17、25 讲):组内消费者数量变化会触发 Rebalance(重新分配分区),期间「全组停止消费」——这就是线上最常见的「元凶」。用静态成员、增加 session 超时等缓解。

  4. 副本与 ISR(第 23 讲):每个分区一个 Leader + 多个 Follower,只有「与 Leader 同步」的副本在 ISR 里。acks=all 要等 ISR 都确认。

  5. 位移提交(第 18 讲):offset 提交时机决定「最多一次 / 至少一次 / 恰好一次」语义。手动提交 + 幂等是「至少一次」的正确姿势。


四、引发思考

  1. Kafka 为什么比 RabbitMQ 吞吐高那么多?(顺序写、零拷贝、批量、页缓存)
  2. 消息「不丢」和「不重」能同时做到吗?「恰好一次」的代价是什么?
  3. 重平衡为什么会导致「消费停滞」?你会怎么减少它的发生?
  4. 位移(offset)提前提交会丢消息,滞后提交会重复消费——业务上怎么设计幂等?
  5. ISR 缩小(副本跟不上)时,acks=all 会发生什么?怎么权衡可用性和一致性?
  6. 学完本课,回看阶段七「削峰」,秒杀场景 Kafka 到底怎么挡流量?

五、学完自测

  • 能画出 Topic→Partition→Consumer Group 的映射关系
  • 能说出「生产者→Broker→消费者」全链路「不丢消息」的配置
  • 能解释 Rebalance 的触发条件和影响
  • 能说出「最多一次/至少一次/恰好一次」三种语义的实现
  • 能解释 Kafka 顺序写和零拷贝为什么快

配套:本地起一个单机 Kafka,写个生产者和消费者,观察 offset 提交和分区分配。