
一台服务器上运行 60 个容器
一个裸金属服务器运行数十到数百个 Hoody 容器。KSM 和 BTRFS 去重使边际成本接近零。
下午两点。早上七点的故障正在做事后复盘。六个工程师都想走一遍当时值班 SRE 看到的那段日志序列。你用一个带 ?n=8 的 Hoody Pipe URL 把快照流出去。所有人在自己的终端上,在同一时刻看着级联故障触发——无截图、无各自滚动错位、无 Zoom 录像。
把今早故障时刻的日志文件从 hoody-files 快照里拿出来。通过一条带 ?n=8 的 Hoody Pipe 路径流出去。八个工程师 curl 同一路径。管道等所有人都连上之后,再按你设定的速率把字节穿过去——每个读取者在同一时刻看到同一行。
# The 7am incident is captured in incident-2026-05-04.log
# (snapshotted from /var/log/app at 07:25 by the on-call SRE).
# Replay it through a pipe path with ?n=8 — the server waits
# until eight readers connect, then the bytes move through once.
# pv -L 50k rate-limits the replay to a readable 50KB/s.
cat incident-2026-05-04.log \
| pv -L 50k \
| curl -T - \
"https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"
# [INFO] Waiting for 8 receiver(s) to connect...
# [INFO] Streaming to 8 receiver(s) at 50.0 KB/s# Each engineer in the post-mortem call runs the same line.
# They block until everyone has joined, then the cascade scrolls
# past their terminal at the exact rate the SRE saw at 07:23.
curl "https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"
# 07:23:14 INFO POST /v1/checkout u_28f
# 07:23:15 WARN stripe latency 2.4s
# 07:23:16 ERR 500 stripe timeout
# 07:23:17 ··· auto-rollback armed
# ...the whole cascade, in order, on every terminal at once.Pipe API 文档化的两段:发送端的 PUT /api/v1/pipe/[path],每个读取者的 GET /api/v1/pipe/[path],通过相同的 n 关联。服务器转发发送端的 Content-Type,在等待读取者时连接最多保持 5 分钟 TTL,如果某个读取者读得慢就给它单独反压。回放速率完全由发送端决定——pv、dd 或任何你信得过的限速器都行。
一条滚动的流改变了对话本身。人们不再争论发生了什么,开始观看发生了什么。管道的三个属性让这件事成立。
n=N 在 Pipe API 里有文档:每个用相同 n 加入同一路径的读取者,都收到一份等同的扇出副本。八个工程师在同一瞬间看到同一行滚过——没人领先,没人盯着别人共享屏幕眯眼。
真实的生产日志滚得比人能吸收的更快。pv -L 50k 把回放节流到一个易读的速率;管道按发送端选的速率往下传。你可以 ctrl-Z 暂停发送端来暂停整场复盘,再 fg 恢复——每个读取者的终端都会跟着你一起暂停。
管道不存任何字节。当 cat 跑完或 SRE 对发送端 ctrl-C,路径就关闭——没有暴露在公网的残留端点,也没有要管理保留期的转录。给晚到的同事再从快照跑一次就行。
从故障时刻的日志到团队共同播放,四个节拍。这里没有任何定制基础设施——快照存在 hoody-files 里,回放就跑在一条 Pipe URL 上。
值班 SRE 在 07:25 把 /var/log/app 复制进一个 hoody-files 桶。这份文件是级联故障窗口里所发生事情的真相来源。
主持人写一个带 ?n=8 的 Hoody Pipe URL(六个工程师 + 两位晚到者的余量),贴进事后复盘频道。接收者可以先连上——管道会为这个槽位最多保留 5 分钟。
SRE 用 pv -L 50k 把快照通过 URL 推过去。服务器等到八条 curl 都连上之后,字节才在步调一致中走一次——级联故障在六个终端上同一瞬间触发。
总监晚来了。再跑同一行命令。管道是路径,不是地点——没什么要寻址、没什么要回退、服务器上什么都没存。再按一次播放就行。
来自 Pipe API 文档规范。把一条 URL 变成事后复盘剧院的限制和行为。
n 的文档上限。事后复盘会议不会用完席位——管道能扩展到整个组织。
管道是端到端直接流式。发送端断开后,回放在服务器上不留任何痕迹。
接收者可以先于发送端连接;管道为晚到者保留这个槽位最多 5 分钟。
来源:Hoody Pipe API——/api/v1/pipe/[path]、n 参数(1–256)和未建立管道 TTL 的限制均有文档记录。
事后复盘不是一份文档。它是一条所有人一起观看的流。
你目前为了带团队走一遍故障时间线要调用的整套工具和仪式。每一项都要存东西、按席位收费,或丢失时序。管道只是一个 URL,配一个共享的播放头。
级联故障在六个终端上同一时刻触发。对话改变了。人们不再争论发生了什么,开始观看发生了什么。