Deno近日在GitHub开源了分散式运行环境celld(denoland/celld),主打一个关键诉求:让原本只能在Cloudflare平台上落地的“有状态运算”能力,能被开发者搬回自家服务器部署。换句话说,你不必完全依赖云服务商的基础设施,也可以在自建环境里跑可兼容的Cloudflare Workers与Durable Objects应用。
Durable Objects本质上是一种有状态执行技术。它把聊天室、文件、用户账号甚至AI代理等“对象化的业务数据”,交给独立的执行单元去管理。每个单元都配有自己的持久化存储空间,从而让相关请求和数据集中处理,降低多请求同时改写同一份数据造成冲突的风险。celld延续这一思路,把执行单元继续拆开管理,但让这些单元不再必须驻留在Cloudflare。
在celld里,每个执行单元会对应一套独立的SQLite数据库;同时,集群内的每台celld服务器都内置V8 JavaScript引擎,用于执行由Wrangler风格的项目打包形成的程序。更重要的是:所有服务器会共享同一个S3相容对象存储空间,来保存SQLite数据副本以及“单元所有权记录”。当某台节点要接手某个执行单元,就需要通过对象存储提供的比较并交换机制(compare-and-swap)获取所有权租约,确保同一时间只有一台服务器负责该单元,避免并发造成数据不一致。
故障切换与迁移也是celld的重要卖点。若原节点宕机或重启,新节点可从对象存储还原数据,继续执行该单元的后续逻辑。此外,celld在发送HTTP响应、对外WebSocket消息或广播之前,会等待数据持久化复制完成;官方强调,在应用已确认写入成功后,即便执行中的节点随后失败,已确认的数据仍可从对象存储恢复重建。
不过,celld目前仍处于Alpha阶段,叢集通常只能跑单一套应用,暂未提供多租户排程、用户账号服务或托管的公开入口。通信方面具备HMAC验证、内容签章、请求时效检查与防重放机制,但默认不包含TLS加密。官方建议将部署限制在可信私有网络,或搭配WireGuard、Tailscale等加密网络,同时对访问S3相容存储凭证的权限进行严格系统级保护。