
字节笔记本
2026年10月9日 · 约 5 分钟读完
自托管持久对象时,别把内部端口暴露出去
自托管 Workers 时,持久对象如果还只给单实例,故障一来就要等人把状态拷走。celld 把每份绑定收成一个单元:一个命名进程加一份自己的 SQLite。租约靠对象存储的条件写,没有成员协议,也没有共识服务。仓库在 GitHub 公开,许可证 Apache-2.0。本轮核到五千一百六十一星、二百三十三次派生,最近推送 2026-10-07。站点写成 v0.6.2 测试版。本站写 Deno 并入时提过这个仓库,那篇只钉住六个月和一年两道钟。这篇把桶、租约和内部端口写清楚。
它吃现成的 wrangler.json。Workers、持久对象、键值、队列、文档库、对象存储、工作流、定时和静态资源都能对上。兼容页列了缺口:图形处理器、浏览器渲染和边缘网络不在范围内。容器和沙箱还是实验项。未知的 Wrangler 键会让部署直接失败。节点会核模块的哈希。

先装本机,再决定桶合不合适
安装脚本会拉二进制,需要的话把用户本地目录加进路径,也可以用版本钉死:
curl -fsSL https://celld.dev/install.sh | sh发行页带证明,文档写可用命令校验。镜像在公开容器仓库。本机开发是 celld dev,默认工作线程端口 9876,状态落在项目下的开发目录。生产先设好桶地址和凭证,再 celld deploy,然后用监听、内部监听和对外宣告把节点拉进车队。桶前缀支持对象存储、谷歌云存储和 Azure。
不是所有兼容接口的桶都能当租约盘。文档点名满足条件写的是对象存储、R2、谷歌云、Azure 和 Tigris。多数 MinIO、B2 和 Spaces 不行。单机车队的持久写仍要等桶:实验室远桶大约 600 毫秒,再加一台同机房主机可到大约 25 毫秒。站点写同区域持久写大约 90 毫秒,故障转移大约 20 秒,恢复点目标写成 0。无状态路径中位大约 0.2 毫秒。休眠单元唤醒大约 4 毫秒,内存大约 0.47 兆。8GB 节点站点写成约 2500 个常驻单元,文档另一处写成约 1000,两边都是官方口径,按内存和休眠策略取值,不要当成同一组压测。

内部端口不要对公网开放
文档写得很硬:桶凭证等于整支车队的钥匙。节点之间的内部流量默认不加密、不认证,只能放在私有网络,操作端口也不要对公网。混合版本不能共桶,升级要按停全员还是滚动的说明走。默认堆 128 兆,大约能挂五万个休眠套接字;十万要大约 512 兆。堆到 90% 会挡新套接字,75% 会催回收。常驻集到 80% 开始卸,硬顶大约 95% 控制组记账。再平衡每 5 秒采样,一次最多挪 32 个休眠单元。列表接口每请求最多 1000 行。
站点还写过一组对照价:十个单元大约 49 美元对托管 42 美元,十万个大约 1949 美元对 41.5 万美元,括号里写的是基础节点成本。这是宣传页算法,不是你的账单。先让 celld dev 在本机跑通一份带持久对象的应用,再选真正支持条件写的桶,最后才把内部端口接到私有网。不要把未加固的内部监听暴露出去,也不要把单机远桶的 600 毫秒当成生产延迟。
和 Cloudflare 托管对象对照着看,celld 是一封写给那套模型的公开信:应用契约尽量不动,所有权改成桶上的条件写。一台主机等桶,两台以上先把日志复制到对端磁盘再上传。接管前要先恢复未合上的日志,主机才能被换掉。路由和日志搬运走签名后的对等超文本,监听在私有端口。站点自己也跑在一份工作线程上,并不否定托管;它只是让同一份契约能在你的节点和桶上活下来。
本机开发目录不要提交进仓库。生产车队的对外端口和内部端口必须拆开,文档默认对外 8080、对内 8081。证明校验和哈希核对是为了防止混进未知模块,不是可选项。先让一份带持久对象的最小应用在 celld dev 里活过重启,再把桶换成真正支持条件写的那几家。单机远桶的 600 毫秒只适合当反例:那是你还没把第二台主机放进同机房之前的数字。
价格对照页把十万个单元写成大约 1949 美元对托管 41.5 万美元,前提是只算基础节点。你的对象存储请求、跨区复制和值班人力都不在这张表里。先按 8GB 节点能住多少休眠单元估容量,再谈省钱。文档和站点对 8GB 常驻数有 1000 和 2500 两个口径,按你实际开的堆和休眠策略压一次,不要在方案里各抄一个。



