posts

《Java 消息中间件·Kafka 内核与客户端》 · 全书目录与章节索引(50 篇)

《Java 消息中间件·Kafka 内核与客户端》全 50 篇:从分区日志的物理结构、副本与 ISR、KRaft 元数据,到生产者与消费者的源码走读、存储与零拷贝、压测与容量,最后落在运维动作、故障图谱与验收。单节点与三节点集群都在本机实跑,故障转移与 NOT_ENOUGH_REPLICAS 有原始输出。

全书概览

项目内容
书稿《Java 消息中间件·Kafka 内核与客户端》
篇数50 篇(15 章 45 节 + 序、前言、目录 + 附录 A/B)
领域分区日志、副本与选举、KRaft、位移与消费组协议、客户端源码、存储与性能、运维与故障
贯穿项目libraryd-mq —— 把图书馆的借阅、归还、预约、逾期做成一条条可追踪的消息
阅读方式从目录篇 进入按顺序通读,或按机制跳读
主线版本JDK 25 LTS(Temurin 25.0.5+8)、Kafka 4.3.0(KRaft only)
关键依赖kafka-clients 4.3.0、kafka-streams 4.3.0(卷三)、colima 容器(Docker 29.5.2)
上级专题书稿专题

三卷分工

卷书名关注点
卷一《Java 消息中间件·Kafka 内核与客户端》一条消息从 send 到落盘发生了什么
卷二《Java 消息中间件·可靠消息与消费治理》怎么做到不丢、不重、可恢复
卷三《Java 消息中间件·事件驱动架构》怎么用事件设计系统

本卷不展开业务幂等与架构范式,需要时写「卷二第 N 章」「卷三第 N 章」。

全书目录

前置

篇文章核心内容
—序:消息系统里没有魔法三个误判、验证方式、三卷分工
—前言:实验环境、集群与数据口径单节点与三节点底座、版本、数据标注规则
—目录与学习路径三条路径、五部分、与卷二卷三衔接

第一部分:消息系统与实验底座(第 1–3 章)

节文章核心内容
1.11.1 把消息系统看成日志四种形态、为什么选分区日志、位移是读者进度
1.21.2 分区:顺序与并行度的交换分区即并行单位也是顺序单位、跨分区无全局序
1.31.3 交付语义的真实成本三档语义、各自需要的配置、恰好一次的边界
2.12.1 三个节点的最小集群compose 文件、listener 与 advertised 的区别
2.22.2 Topic 的物理结构段文件、稀疏索引、一次读请求的寻址
2.32.3 保留与清理delete 与 compact、墓碑、最新状态语义
3.13.1 批次、linger 与压缩三个参数的相互作用、批次级压缩
3.23.2 acks、重试与幂等失败窗口、PID 与 sequence、超时关系
3.33.3 分区器与键设计粘性分区、自定义分区器、热点 key

第二部分:服务端机制(第 4–6 章)

节文章核心内容
4.14.1 副本、LEO 与高水位三个量的关系、消费者只能读到 HW 之前
4.24.2 ISR 收缩与 min.insync.replicasISR 判定、与 acks=all 的联合门槛
4.34.3 Leader 选举与不干净选举优先副本、受控关闭、ELR
5.15.1 KRaft:控制器与元数据日志去掉 ZooKeeper 的原因、元数据即日志
5.25.2 集群成员与元数据传播broker 注册、leader 变更的传播延迟
5.35.3 客户端的元数据刷新Metadata 状态机、过期导致的抖动
6.16.1 位移与 __consumer_offsets位移存哪、提交位移与消费位置的区别
6.26.2 经典再平衡协议JoinGroup/SyncGroup、eager 与 cooperative
6.36.3 KIP-848 新一代协议服务端主导分配、group.protocol、迁移注意

第三部分:客户端源码(第 7–9 章)

节文章核心内容
7.17.1 KafkaProducer 的线程模型调用线程 + Sender 单线程、send 做了什么
7.27.2 RecordAccumulator 与批次缓存分区 deque、BufferPool、max.block.ms
7.37.3 Sender 与 NetworkClient请求拆分、in-flight、连接状态机
8.18.1 KafkaConsumer 的两套实现Classic 与 Async、group.protocol 的实际分支
8.28.2 Fetcher 与拉取管线poll 的完整路径、fetch 参数
8.38.3 ConsumerCoordinator 与位移提交自动提交时机、同步与异步提交
9.19.1 序列化器与 Schema 边界内置序列化器、消息里不要放可变对象
9.29.2 拦截器链与埋点能改什么、不能改什么
9.39.3 客户端指标口径77 项指标怎么读、哪些反映背压

第四部分:存储与性能(第 10–12 章)

节文章核心内容
10.110.1 顺序写、页缓存与零拷贝顺序追加为什么快、sendfile 路径
10.210.2 段滚动、索引重建与恢复滚动条件、崩溃后的索引重建
10.310.3 磁盘与文件描述符规划容量估算、fd、IO 线程
11.111.1 网络线程与请求队列network 与 io 线程、mute/unmute
11.211.2 副本同步的吞吐与延迟follower fetch、跨机架流量
11.311.3 分区数的非线性成本fd、内存、选举与重平衡时间
12.112.1 官方压测工具与方法论两个 perf-test 脚本、本机负载下的可信度
12.212.2 吞吐、延迟与持久性的三角三个指标互相挤压的关系
12.312.3 容量规划从 QPS 推分区数与保留期

第五部分:运维与故障(第 13–15 章)

节文章核心内容
13.113.1 集群拓扑与机架感知broker.rack、跨 AZ 流量代价
13.213.2 滚动重启与最小可用重启顺序、受控关闭、重启窗口
13.313.3 副本重建与限流追赶、lag.time.max、重建限流
14.114.1 故障图谱URP、离线分区、磁盘满、fd 耗尽
14.214.2 积压的分层定位从 lag 到根因的判定路径
14.314.3 数据不一致的取证副本比对、段文件取证
15.115.1 监控指标与告警必看的 12 个指标与阈值
15.215.2 版本升级与兼容性协议兼容、升级顺序
15.315.3 libraryd-mq 卷一验收场景、判据、实测记录

附录

篇文章核心内容
A附录 A Kafka 命令速查集群、主题、消费组、日志、压测五组命令
B附录 B 集群与客户端模板compose、客户端模板、metrics 打点

三条阅读路径

路径适合谁怎么走
顺序通读想建立完整的机制理解1.1 → 15.3,约 30 小时
机制跳读已在用 Kafka,想补原理第 1、4、6、7、8 章
运维查表正在处理集群问题附录 A + 第 14 章 + 15.1

相关专题

全部文章 game Indie Java golang Books 客户端开发 Minigame Saas rust Python
books

《Java 消息中间件·Kafka 内核与客户端》前言:实验环境、集群与数据口径

本书所有实验都在同一台机器上完成:Temurin 25.0.5+8、colima 里的 Docker 29.5.2、apache/kafka:4.3.0 的 KRaft 集群。这篇前言给出单节点与三节点两套底座的完整启动命令、客户端工程的最小 pom、源码核实方法,以及「单次运行不作基准」和「未在本机执行」两条数据口径的具体用法。

7 分钟阅读
书稿 Java Kafka