阶段一 · 基础与核心模型

Kafka 学习大纲与全局地图

一句话定位

Kafka 不只是消息队列——它是一个分布式提交日志系统,既能做 MQ(解耦、削峰),也能做流处理(实时 ETL、事件驱动架构).本篇给出完整学习路径,后续每篇对应一个主题.

为什么 Go 后端需要学 Kafka

场景 没有 Kafka 的做法 引入 Kafka 后
服务间异步通知 HTTP 回调 / 轮询,耦合重,失败难重试 生产者发消息,消费者按需消费,天然解耦
流量削峰 上游打爆下游,限流丢请求 消息堆积在 broker,下游按自身速率消费
数据管道 各业务自己写同步脚本,格式混乱 统一走 Kafka topic,下游 consumer 各取所需
事件溯源 / 审计 数据库 binlog 或手写日志 Kafka 天然保留有序事件流,可回放

阶段一 · 基础与核心模型

目标:能用 Go 写出生产可用的 producer/consumer,理解 Kafka 的核心抽象.

序号 主题 核心问题
01 本篇:学习大纲 全局地图,学什么、为什么学、怎么学
02 核心概念:Broker、Topic、Partition、Offset 一条消息从生产到消费经历了什么?
03 生产者模型与分区策略 消息怎么决定写到哪个 partition?acks 语义是什么?
04 消费者与 Consumer Group 为什么需要 group?rebalance 怎么回事?offset 提交策略?
05 Go 客户端实战(sarama / confluent-kafka-go / franz-go) 用哪个库?怎么配?怎么优雅关停?
06 消息可靠性:不丢、不重、顺序性 At-least-once vs exactly-once,幂等生产者
07 本地开发环境与运维基础 docker-compose 起集群,常用 CLI 工具,监控指标

阶段二 · 架构原理与调优

目标:理解 Kafka 为什么快、怎么保证可靠性,能做容量规划和性能调优.

序号 主题 核心问题
08 存储引擎:日志分段、索引、零拷贝 为什么 Kafka 吞吐这么高?磁盘顺序写 + sendfile 原理
09 副本机制与 ISR leader/follower 怎么同步?什么时候消息才算"已提交"?
10 Controller 与元数据管理 ZooKeeper 模式 vs KRaft 模式,controller 选举
11 分区再平衡深入 Eager vs Cooperative rebalance,sticky assignor
12 生产调优:批量、压缩、linger.ms、buffer.memory 怎么榨干吞吐?延迟与吞吐的取舍
13 消费调优:fetch 参数、并发模型、背压处理 Go 消费者怎么做 worker pool?怎么处理慢消费?
14 事务与 Exactly-Once Semantics(EOS) 跨分区原子写入,事务型 producer/consumer

阶段三 · 流处理与高级应用

目标:从"消息队列"视角跳出,理解 Kafka 作为流处理平台的能力.

序号 主题 核心问题
15 Kafka 作为事件流平台:设计哲学 Log 即数据库,事件驱动 vs 请求驱动
16 Kafka Streams 概念与 Go 中的替代方案 有状态流处理、窗口聚合、KTable;Go 生态怎么做?
17 Connect:数据集成框架 Source/Sink connector,CDC 管道(Debezium)
18 Schema 管理与数据治理 Schema Registry,Protobuf/Avro 演进,兼容性策略
19 多集群与跨机房:MirrorMaker 2 异地多活、灾备,数据同步拓扑
20 在微服务架构中落地 Kafka 事件溯源、Saga、Outbox 模式,与 gRPC 服务的配合

学习方法建议

┌─────────────────────────────────────────────────┐
│ 概念理解 → 本地实验 → 源码印证 → 生产踩坑回顾 │
└─────────────────────────────────────────────────┘
  1. 每篇都有 Go 代码:不写 Java,所有示例用 Go 客户端(主要用 franz-go,轻量且现代)
  2. 对比你熟悉的:会用 Redis Stream、gRPC、channel 做类比,降低认知负担
  3. 先 black-box 再 white-box:先会用,再拆原理,最后看关键源码路径
  4. docker-compose 一把梭:本地 3-broker 集群 + kafka-ui,所有实验可复现

前置知识检查

你需要知道的 不知道也行,会顺带讲
Go 基础(goroutine、channel、context) TCP 细节(Kafka 自定义协议会简要说明)
Docker 基础(能跑 compose) JVM 调优(我们不写 Java)
分布式系统直觉(CAP、最终一致性) ZooKeeper 内部原理(只需知道它是协调服务)