Celld:把 Cloudflare 那套 Durable Objects 搬回你自己的机器

AI 摘要

Deno 团队开源的 Celld 用 S3 兼容对象存储做协调,让 Cloudflare Workers 与 Durable Objects 完全自托管,每个对象一个 SQLite、按名寻址、按需复制。1.7k stars,给想脱离 Cloudflare 锁定又舍不得开发体验的小团队多了一条路。

2026-08-07·出海情报站·阅读需7分钟

Cloudflare 的 Workers 加 Durable Objects 组合是过去几年最舒服的边缘开发体验之一——每个对象一个 SQLite 数据库,按名寻址,开发者不用关心集群、复制、迁移。但数据躺在 Cloudflare 平台上这件事,让不少想控制成本和合规的小团队犹豫。

Deno 团队把同一套抽象搬到了开源。Celld 是一个自托管守护进程,把 Cloudflare Workers 和 Durable Objects 跑在你自己的机器上,状态存在任意 S3 兼容对象存储里。

Celld 怎么工作

每个 Celld 节点内嵌 V8 引擎,执行 Wrangler bundle。集群共享一个 S3 兼容 bucket,里面放着部署产物、cell 状态和小型的 ownership 记录。对象存储的 compare-and-swap 保证同一时刻只有一个节点持有某个 cell,不需要 membership 协议、failure detector,也不需要 consensus。

cell 移动或被唤醒时,新 owner 从 bucket 把它的 SQLite 拉起来继续执行。bucket 是持久的真实数据源,节点本身是可替换的。

闲置 cell 会休眠到几乎不占资源。每个对象天然分片——单一共享数据库里的争抢和爆半径故障被设计掉而不是靠运维去管。

部署起来什么样

安装很简单。Celld 用官方安装脚本把二进制下载到本地目录,可用 gh attestation 验证来源。Worker 项目部署时需要 PATH 上有 esbuild,纯静态资源项目则不需要。

container 镜像覆盖 Linux x86-64 和 ARM64。运行时把本地状态做持久化,AWS 标准凭据链直接拿来用——指向 MinIO 这类 S3 兼容服务时加 endpoint 和 region,跑真 AWS 时把这两个参数去掉。

集群每跑一个应用,所有节点从 deploy/current.json 加载最新一次成功提交的部署。peer 之间 HTTP 不终止 TLS——所有 advertise 地址必须放在受信私网或 WireGuard / Tailscale 这类加密 overlay 上,公网 IP 默认被拒绝。

适用场景与局限

Celld 想接的是同一类工作负载:低延迟、需要持久状态、对象数量可能很多但单个都很小的边缘应用。SaaS 后端、小游戏、agent runtime 都在这个范围。

它不适合需要强一致事务或多 region 同步读写的场景——bucket 是最终一致的源,状态变更要等复制。运营要求高的团队可以把 celld diagnose 当作日常巡检工具,它枚举所有节点租约、对每个在线 peer 做签名直接探测,区分过期记录、不可达 peer、不兼容协议,并把每个节点的 cell、RSS、CPU、文件描述符等压力指标打出来。

对独立开发者的意义

对想离开 Cloudflare 锁定的小团队来说,Celld 提供了和 Workers 同款的开发体验,但底层是你的 bucket、你的机器、你的合规边界。1.7k stars 已经说明这个需求是真实存在的——边缘开发不必非绑定单一平台。

来源:HackerNews