第29篇 Kafka 验证证据(2026-09-26) 环境 - 仓库:/home/admin/workspace/my-blogs - Python:3.12.3 - Node:v22.23.2(package.json 要求 >=22 <23) - TMPDIR/TMP/TEMP:均指向 examples/distributed-systems/.build/kafka29/tmp 研究取证 - 取得并阅读 Kafka 4.3 Design、Consumer Configs、Producer Configs 与 Transaction Protocol 页面。 - 取得并阅读 KIP-98、KIP-447、KIP-890 页面;KIP-890 明确记录旧协议迟到请求导致 hanging transaction/EOS 风险及 Kafka 4.0 服务端防护。 - 取得 2011 Kafka 原始论文 PDF(2,253,344 bytes),阅读摘要及 §2–§4;未取得可确认的正式勘误或撤稿。 - 详细论断、阅读位置和不能支持的结论见 writing-plans/distributed-systems/research/29-kafka.md。 实验 命令: python3 -B examples/distributed-systems/kafka29/check.py --output examples/distributed-systems/.build/kafka29/observations.json 结果:exit 0。 源码 SHA-256:dc829ce1e0fd1e0abb77b3ffb2cacce771b50fef90b19385732ec406fac6cdc3。 观察 JSON SHA-256:fd2c27295968bd0901d60cf488553c8377580eb6558ce1a49a416b18ba442550。 关键观察: - 日志提交位置为1、group offset仍为0时,恢复重放使外部效果计数1→2。 - 先提交group offset 1再崩溃,恢复位置为1而外部效果计数为0。 - 开放Kafka事务的output high watermark为1、LSO为0,read_committed为空。 - commit使输出与group offset共同生效;abort后read_committed为空且group offset保持0。 - Kafka事务abort没有回滚外部计数;恢复重放使计数1→2。 - 代码把Kafka输出决定与group offset推进封装成一个不可插入崩溃的模型转换;它表达原子提交契约,不模拟真实协调器内部步骤。 CLI - --help:exit 0。 - --scenario unknown:argparse exit 2。 写作扫描 - anti-ai-tone(tech profile):正文246行,汉字数2932,0错误、0提醒。 - 随后执行anti-persona-fabrication人工扫描:无第一人称叙事、体感、行动、社交、写作旁白或身份伪造;“共同事务”造成一次“同事”字面误命中,人工判为非人格表达。 构建与页面 - 读取既有103 MiB忽略缓存的构建停在Start processing;移开第29篇正文的基线构建同样在180秒上限退出124,说明不是本文Markdown触发。 - 将db.json可恢复地移入.build/kafka29/db-before-build.json后,Node 22从空缓存执行`npm run build`退出0;Hexo报告生成5610个文件、生成阶段44秒。 - 正式生成页包含标题、正文结尾、指向第28篇的站内链接、8个Mermaid源代码块和三个附件链接。 - 最终构建后,三个生成附件与source逐字一致;observations.json.txt与正式运行observations JSON逐字一致。 - 云端无浏览器工具;未验证Mermaid SVG尺寸、浏览器控制台和附件点击。 边界 - 这是确定性教学模型,不是真实Kafka端到端运行。 - 未验证broker、ISR选主、磁盘、协调器、真实超时/分区、版本互操作和性能。 - 全站静态生成已经通过;静态HTML检查不等同浏览器渲染,浏览器相关缺口继续保留。