tag

消息中间件

共 153 篇文章。
全部文章JavaGo书稿TypeScript游戏开发独立开发者小游戏游戏设计Godot性能优化RustKafkaPython游戏引擎
books

《Java 消息中间件·可靠消息与消费治理》4.3 扩缩容与优雅停机

扩容一个消费者会触发整组再平衡,停机的姿势决定了消息是重复、丢失还是要等会话超时。本篇给出一份完整可运行的优雅停止代码,用 1200 条消息实测 SIGTERM 后零重复零丢失;再让一个消费者停 poll 25 秒,贴出 max.poll.interval.ms 踢出的原始 WARN 日志,并数清 1212 次投递里的重复。

8 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·可靠消息与消费治理》4.2 分配策略与消费者倾斜

7 个分区、2 到 3 个消费者,range、round-robin、sticky、cooperative-sticky 四种策略各跑一遍:谁撤销了全部分区,谁只撤销搬走的那几个,谁多花一轮协议,谁把 8 个分区分成 4-2-2。本篇把分配结果、迁移分区数、再平衡耗时与倾斜成因放进同一组实测数据,并给出观测与选型方法。

9 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·可靠消息与消费治理》4.1 消费组设计:按业务还是按分区

消费组不是一个进程列表,而是一份职责加一套位移。本篇用 600 条消息、两个快慢不同的消费者和三个订阅同一主题的组,量出「同组能力必须一致」与「多组订阅的复制成本」,再给出按业务域、按处理职责、按分区手工分配三种方案的对照,以及组 ID 命名、空组回收与选择清单。

9 分钟阅读
书稿 Java Kafka
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