posts

《Java 消息中间件·可靠消息与消费治理》 · 全书目录与章节索引(50 篇)

《Java 消息中间件·可靠消息与消费治理》全 50 篇:把端到端可靠性拆成生产、broker、消费、下游四段,逐段给出判据、代码与演练记录。覆盖幂等与事务、消费组工程、积压处置、死信与重试、outbox 与 Saga、顺序与消息大小、配额与跨集群、故障演练与验收清单。

全书概览

项目内容
书稿《Java 消息中间件·可靠消息与消费治理》
篇数50 篇(15 章 45 节 + 序、前言、目录 + 附录 A/B)
领域责任边界、幂等与事务、消费治理、数据链路、顺序与大小、平台治理、演练与验收
贯穿项目libraryd-mq —— 借阅、归还、预约、库存调整四类事件的可靠性要求
阅读方式从目录篇 进入按顺序通读,或按问题跳读
主线版本JDK 25 LTS(Temurin 25.0.5+8)、Kafka 4.3.0(KRaft only)、kafka-clients 4.3.0
上级专题书稿专题

三卷分工

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

本卷不展开服务端机制与客户端源码,需要时写「卷一第 N 章」;不展开架构范式,需要时写「卷三第 N 章」。

全书目录

前置

篇文章核心内容
—序:可靠性是设计出来的,不是配置出来的三个误判、四段责任模型、四类问题的定义
—前言:实验环境与故障注入口径单节点与三节点底座、stop/kill/pause/改配置
—目录与学习路径三条路径、五部分、与卷一卷三衔接

第一部分:可靠性语义(第 1–3 章)

节文章核心内容
1.11.1 端到端可靠性的责任边界四段责任表、每段的失败模式
1.21.2 生产端:acks、重试与幂等acks=all 的三个前提、重试窗口、幂等边界
1.31.3 消费端:手动提交与位移管理提交时机、自动提交丢什么、提交失败重试
2.12.1 重复的四种来源生产重试、再平衡、位移回退、下游重放
2.22.2 幂等消费:唯一键、状态机与去重表三种实现的成本、TTL 与容量、幂等迁移
2.32.3 恰好一次的两种实现与成本事务与业务幂等的边界对照
3.13.1 事务生产者与 read_committed事务流程、两种隔离级别看到什么
3.23.2 事务超时、fencing 与 abort超时、僵尸写入、abort 后的数据形态
3.33.3 事务的性能与运维代价额外请求与延迟、状态主题、何时不该用

第二部分:消费治理(第 4–6 章)

节文章核心内容
4.14.1 消费组设计:按业务还是按分区一个组一个职责、能力一致、多组订阅代价
4.24.2 分配策略与消费者倾斜四种 assignor 的分配结果与倾斜观测
4.34.3 扩缩容与优雅停机再平衡触发、停机姿势、poll 超时踢出
5.15.1 lag 的三种口径与误读三种口径的数值差异与选型
5.25.2 积压处置:扩容、跳过与降级能否追上的判断、扩容天花板、跳过前提
5.35.3 消费速率控制与背压pause/resume、用户限速、下游慢时别硬拉
6.16.1 死信队列的设计死信内容、必要元信息、回灌
6.26.2 重试主题与退避多级重试、退避位置、重试放大
6.36.3 毒消息隔离与人工干预一条消息阻塞分区、隔离手段、回灌幂等

第三部分:数据链路(第 7–9 章)

节文章核心内容
7.17.1 Outbox 模式同库同事务、轮询发布、崩溃恢复
7.27.2 CDC:增量快照与变更捕获日志挖掘与轮询、快照衔接、op 语义
7.37.3 事件溯源入门事件为唯一事实、重放重建、与 outbox 的区别
8.18.1 领域事件建模过去时、包含与不包含、事件 ID 与因果 ID
8.28.2 schema 演进与兼容性四类变更的兼容性实测
8.38.3 Schema Registry 的取舍集中管理的成本、自管方案、检查位置
9.19.1 Saga:编排与协同两种形态、步骤与补偿、失败回滚
9.29.2 补偿事务的幂等补偿重复、补偿失败兜底、与重试的区别
9.39.3 最终一致性的度量一致性延迟测量、窗口告警、对账

第四部分:顺序、批量与性能(第 10–12 章)

节文章核心内容
10.110.1 顺序的粒度与代价三种顺序粒度、in-flight 与乱序
10.210.2 热点分区与 key 设计单调 key 倾斜、加盐、二次分区
10.310.3 重分区与历史数据key→分区映射变化、历史数据处理、迁移
11.111.1 消息大小与批量参数三个上限的联动、超限表现
11.211.2 压缩算法选择四种算法的压缩比与 CPU、负收益场景
11.311.3 大消息的 claim-check 模式指针与内容分离、取回失败、一致性
12.112.1 消费者多线程模型每线程一消费者与工作线程、顺序保持
12.212.2 异步提交的陷阱静默失败、提交与处理错位
12.312.3 消费端性能调优三组参数的联合调参

第五部分:治理与验收(第 13–15 章)

节文章核心内容
13.113.1 多租户与配额字节与请求配额、降速而非拒绝
13.213.2 SASL/ACL 与传输加密机制选择、ACL 粒度、加密代价
13.313.3 跨集群复制MirrorMaker2 模型、复制延迟、切换位移
14.114.1 故障注入:broker 宕机宕机观测、客户端重试、恢复追赶
14.214.2 故障注入:消费端崩溃kill -9 的重复范围、session 超时
14.314.3 恢复演练与 RTO/RPORTO/RPO 定义、演练脚本、时间线
15.115.1 可靠性验收清单三十条检查项与逐条判据
15.215.2 容量与成本核算三档可靠性方案的成本对照
15.315.3 libraryd-mq 卷二验收验收场景、判据、遗留风险

附录

篇文章核心内容
A附录 A 可靠性配置矩阵三端配置表,每项标「保什么、代价是什么」
B附录 B 幂等与事务模板去重表、状态机、outbox、事务生产者

怎么读

详细说明见目录与学习路径 。

故意没写的东西

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

《Java 消息中间件·可靠消息与消费治理》2.3 恰好一次的两种实现与成本

Kafka 事务保证的是「多条记录与位移一起提交或一起回滚」,业务恰好一次保证的是「副作用只发生一次」,两者覆盖的范围不同。本篇实测每条一事务、十条一批事务与非事务发送的耗时,再用一个 read_committed 消费者重放已提交记录,展示事务提交后业务仍然重复的完整链路,并给出两种方案的对照表与成立前提清单。

11 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·可靠消息与消费治理》2.2 幂等消费:唯一键、状态机与去重表

唯一约束、去重表、状态机是三种成本不同的幂等实现,选错一种会在并发或重放时失效。本篇先比较三者的写放大、存储与失效边界,再给出一份完整可运行的 IdempotentConsumer:按业务键串行化、PROCESSING/DONE 状态、失败不记账、TTL 惰性清理、容量硬上限,并用 3000 次重复投递和 16 线程同键并发验证它。

10 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·可靠消息与消费治理》2.1 重复的四种来源

重复不是一种故障,而是四种:生产侧重试、消费者再平衡、位移回退、下游重放。本篇用单节点 Kafka 分别构造四类重复,给出每类的原始输出与可识别特征——位移是否相同、eventId 是否相同、是否留下新的生产者序列号,并据此给出一张排查判据表。最后给出处理账本的最小设计,让四类重复在日志里可被区分。

11 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·可靠消息与消费治理》1.3 消费端:手动提交与位移管理

自动提交提交的是「拉取位置」而不是「处理进度」:一次 close 就把 20 条里没处理的 15 条永久跳过。本机用 40 条消息对照 auto-close、auto-kill 与手动提交三种写法,给出已提交位移、重启后重读范围与源码调用链,并划清提交失败时哪些异常可以重试、哪些必须重新加入消费组。

8 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·可靠消息与消费治理》1.1 端到端可靠性的责任边界

一条消息从 send() 到下游落库要经过生产端、broker、消费端、下游存储四段,每段对「成功」的定义都不同。本篇给出四段责任表与各自的失败模式,并用 8 条消息把一次完整追踪和一次崩溃恢复跑出来,说明「消息不丢」到底停在哪一段,以及三段交接处必须写明的契约。

10 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·可靠消息与消费治理》序:可靠性是设计出来的,不是配置出来的

为什么 acks=all、手动提交、事务这三张配置牌各自只对了一半:把端到端可靠性拆成生产、broker、消费、下游四段,逐段说明每段能保证什么、在哪里漏、要付什么代价,以及本卷用哪些可复现的实验和判据把每一段钉死,最后给出三卷的分工与贯穿项目 libraryd-mq 的可靠性需求。

13 分钟阅读
书稿 Java Kafka