
一台服务器上运行 60 个容器
一个裸金属服务器运行数十到数百个 Hoody 容器。KSM 和 BTRFS 去重使边际成本接近零。
每小时浏览器抓取、每日 SQLite 摘要、每周文件归档。三种节奏整齐地嵌在一份 crontab 里——它们不过是三行 `* * * * *` 指向三个脚本。没有调度服务、没有任务队列、没有 worker 池。
一份 crontab · 三种节奏 · 同一个容器
Hoody Cron 服务把原始 crontab 暴露为一个 REST 资源。PUT 一次文件,内核就一直运行下去。三行、三个脚本——每个都是一行已经会讲 HTTP 的命令。
# 一次调用替换整份 crontab。
PUT /users/root/crontab
Content-Type: text/plain
@hourly bash /scripts/scrape.sh
0 9 * * * bash /scripts/digest.sh
0 0 * * 0 bash /scripts/archive.sh
HTTP/1.1 204 No Content# scrape.sh — 每小时把截图写进 sqlite
curl -sS https://browser.containers.hoody.com/screenshot \
--data-urlencode "url=https://store.hoody.com/p/123" | sqlite3 /data/prices.db \
"INSERT INTO rows VALUES (?, ?, ?)"
# digest.sh — 9 点计算差额并把摘要 pipe 出去
sqlite3 /data/prices.db < /scripts/digest.sql \
> /tmp/digest.txt && curl -T /tmp/digest.txt \
https://pipe.hoody.com/api/v1/pipe/digest
# archive.sh — 周日午夜 dump 并存档
sqlite3 /data/prices.db ".dump" | curl -T - \
https://files.containers.hoody.com/archives/$(date +%Y-w%V).sql三个脚本。三个它们已经会调用的 URL。一次 PUT 装好调度。这后面没有任何调度服务——内核里的 crond 读取你写的文件并运行它。
每种节奏背后都是一行 5 字段表达式 + 一行 shell。三者互不需要知道对方——它们只共享一块磁盘和一个时钟。
hoody-browser 给一组商品 URL 截图。每一行直接写进容器卷上的一个 SQLite 表。没有抓取 worker 池——这一行 cron 就是 worker 池。
9 点摘要脚本读取过去 24 小时的行,计算价格差额,再把摘要 curl 到一个 pipe URL。你的收件箱 / 仪表盘从同一个 pipe 读取。
周日午夜归档脚本对 SQLite 执行 `.dump`,按 ISO 周命名文件,PUT 到 hoody-files。旧行被清理。卷永远小巧。
三种节奏跑在一个容器里不是 hack——这就是 cron 本来的样子。平台已经给了你一个调度器;你只是不再为同一个东西付三次钱了。
每小时的抓取写入每日摘要要读的行。每日摘要写入每周归档要 dump 的差额。它们之间没有 IPC——只是同一个卷上的三个进程。
重新部署只重新部署一个镜像。看日志只 tail 一个日志文件。磁盘满了只满一次。任何节奏的影响半径和其他两个一样。
Lambda/EventBridge 按每次调用计费;ECS Scheduled Tasks 按常驻集群计费。在 Hoody 上,这运行在你已经付费的固定费率服务器里。三种节奏的成本不比一种贵。
crontab 是一个文件。文件有一个 URL。你能对文件做的事,都能在 HTTP 上做。
创建一条带 UUID 和可选注释的托管条目。API 会替你把这行注入 crontab,并给你一个句柄之后启用、禁用或删除。
事故期间暂停某种节奏,又不丢失它的定义。事故关闭后再开回来。这一行留在文件里,标注为 managed-disabled。
随时拿回原始 crontab,包括所有托管条目。和你的仓库做 diff。pipe 进版本控制。Cron 是一个文件,现在这个文件是一个 URL。
端点来自 Hoody Cron API:托管条目 CRUD,再加上按用户的完整原始 crontab 读写。支持标准 5 字段表达式与宏(@hourly、@daily、@weekly)。
三个数字,来自实际的机制。数字来自 Hoody Cron API 的保证和固定费率服务器模型——不是凭空的基准。
三种节奏全部运行在同一个固定费率服务器里。入场服务器起价 $29/月;额外 cron 行无额外费用。
一个 @hourly、一个 9 点的、一个周日的。/users/root/crontab 里三行。整套编排塞进一次 PUT。
没有 Lambda、没有 EventBridge、没有 Sidekiq、没有 Airflow 调度器、没有 ECS scheduled task 定义。Cron 的 HTTP API 就是调度器。
依据 Hoody Cron API:托管条目通过 JSON CRUD、原始 crontab 读写、通过 expires_at 自动过期、按用户的 crontab 隔离。宏 @hourly / @daily / @weekly 与 5 字段表达式同时支持。
三种节奏,三行 cron,一个容器,在起价 $29/月的固定费率服务器上。
三个 Lambda、三个 GitHub Actions、三个 ECS scheduled tasks——做三种节奏时常规会搬出来的栈。它们每个都按节奏或调用向你收费;Hoody 按服务器收费。
别再租调度器。把调度写进一个文件。容器已经在跑 cron——三行之后,整条 pipeline 就发布了。