posts

文章归档

PlumePHP 全站文章的归档入口,按时间倒序汇总各专题的技术文章,并提供按主题浏览的专题分类入口。

这里是全站文章的归档入口,下面是按时间倒序排列的全部文章。若想按主题浏览,请从首页的专题分类进入。

全部文章

全部文章 Books game Java Indie golang 客户端开发 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

《互联网产品的服务端架构·交易、增长与平台化》附录 A 交易与营销状态机

把卷三涉及的对象状态集中成表:订单、支付、退款、库存、优惠券、活动、权益、订阅、运营操作各自的合法迁移、触发者、并发约束与终态定义,再给出事件流水的字段设计、三种实现方式的对比、状态机测试方法、退款与对账的状态衔接,以及跨对象约束和设计检查项,方便对照代码逐条核对。

8 分钟阅读
书稿 交易系统 状态机
books

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

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

13 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·Kafka 内核与客户端》15.2 版本升级与兼容性

升级 Kafka 时要同时管住三个版本号:broker 二进制、metadata.version 和客户端 jar。这一节把这三者的关系拆开,给出四组客户端与服务端的交叉实测(含 2.5.1 这种跨越多个大版本的老客户端),并用 KIP-848 新消费组协议演示什么叫「硬下界」,最后给出 KRaft 下的滚动升级顺序与回滚边界。

8 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·Kafka 内核与客户端》15.1 监控指标与告警

Kafka 的 MBean 有近千个,真正常看的只有十二个。这一节把它们分成 broker、客户端、业务三层,给出本机实测的 JMX 采集步骤——包括镜像里没有 jcmd、JMX_PORT 会被客户端继承、JmxTool 的包名在 4.x 改过这三个坑,并用一次 5 万条的生产与消费演示数字怎么变、阈值怎么定、告警怎么去抖。

8 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·Kafka 内核与客户端》14.2 积压的分层定位

LAG 是一个差值,但成因至少三种:生产变快、消费变慢、分区倾斜。本节用限速消费者制造 0 到 26821 的积压,连续采样 `--describe` 的三列,给出「HW 是否增长、CURRENT-OFFSET 是否推进、LAG 是否均衡」的三步判定法,并实测 max.poll.interval.ms 超时被踢出组与单条处理慢这两种完全不同的表现。

8 分钟阅读
书稿 Java Kafka
books

《Java 消息中间件·Kafka 内核与客户端》14.1 故障图谱

Kafka 的故障不是一张清单,而是一组会互相触发的链条:磁盘满会让 broker 退出,broker 退出会制造 URP,URP 又可能拖垮写入。本节把 URP、离线分区、脑裂、磁盘满、fd 耗尽、ISR 抖动、controller 不可用七类故障做成「现象→指标→命令→根因」对照表,并实跑 URP、fd 耗尽、controller 切换与一次真实的 ENOSPC。

9 分钟阅读
书稿 Java Kafka