写在前面:你会学到什么
如果你刚听说 Kafka,却不知道“消息队列”“分区”“消费者”是什么意思,这本书就是为你准备的。你只需要会打开终端、复制命令,不需要先学分布式系统,也不必先写 Java。
读完并完成练习,你应该能够:说清 Kafka 解决什么问题;在自己的电脑上启动一个练习环境;发送和读取订单事件;观察同一份数据被不同业务独立读取;解释消息为什么可能重复、为什么重启后没有重新读取;知道生产环境还缺哪些条件。
本书将 Kafka 作为“可保留、可被多个业务独立读取的分区日志”来学习。若你已经读过 RocketMQ,这里的重点增量是日志位置与消费进度彼此独立:通知组可以暂停,统计组继续读取;通知组恢复或回放时,仍使用自己的书签。两种系统都支持消息与消费协作,选型应结合具体能力,不能仅凭“队列”和“日志”两个称呼下结论。
全书围绕三个问题推进:记录还在不在,由保留与压缩策略决定;某个业务读到哪里,由组偏移量决定;当前谁负责哪个分区,由组分配与再均衡决定。把这三条时间线分开,才能解释回放、扩缩容与故障重启。示例只观察真实 Kafka 单节点和命令行消费者,不冒充带数据库、短信或支付的完整应用。
本书是一条循序渐进的路线,不是参数百科。建议每天学习一到两章。第一次阅读先完成第 1 至 8 章,再学可靠性和项目。遇到名词可以翻到词汇表。
本书依据 Kafka 4.1 系列官方文档,示例固定到官方快速入门当前列出的 4.1.2,使用 KRaft,不需要 ZooKeeper。这是为了让命令有明确版本,不代表断言它是所有时间点的最新版本。官方网页会更新,资料访问日期为 2026 年 10 月 20 日。附录给出可直接打开的来源。
为了照顾初学者,正文把“消息”“事件”“记录”作为接近的说法。严格地说,事件强调“发生过的事实”,记录是 Kafka 实际保存的数据单位。代码块前面的解释会说明在哪里执行;复制命令时,不需要额外输入 $ 或 > 提示符。