Celld:自托管的、分布式的持久对象
自托管的、分布式持久对象。celld 是一个开源守护进程,能够在您自己的机器上运行 Cloudflare Workers 和持久对象。每个对象都有自己的 SQLite 数据库,通过名称进行寻址,并复制到您拥有的与 S3 兼容的存储桶中;节点仅通过该存储桶进行协调,没有控制平面或共识。由于每个对象都是自己的小型数据库,因此应用程序按构造进行分片——一个共享数据库的竞争和爆炸半径故障是通过设计消除的,而不是通过管理来解决。闲置单元几乎会进入休眠。想了解更多信息,请访问 celld.dev 或阅读文档。它是如何工作的每个 celld 节点嵌入 V8 并执行 Wrangler 捆绑包。该车队共享一个包含部署、单元状态和小型所有权记录的与 S3 兼容的存储桶。对象存储的比较并交换确保在任何时候只有一个节点拥有一个单元,而不需要会员协议、故障检测器或共识服务。celld 持续将每个单元的 SQLite 数据库复制到存储桶中。当一个单元移动或唤醒时,其新所有者恢复该数据库并恢复执行。存储桶是持久的真实数据源;节点是可替换的。安装程序下载 celld 二进制文件(来源可通过 gh attestation verify 验证):curl -fsSL https://celld.dev/install.sh | sh 如果安装程序提示您,请将 ~/.local/bin 添加到您的 PATH。使用 celld deploy 部署的 Worker 项目需要在 PATH 上安装 esbuild;仅资产项目则不需要。安装程序在 ~/.local/lib/celld/releases 下保留经过验证的版本并原子切换一个当前指针。要删除 celld,请使用受保护的卸载程序:curl -fsSL https://celld.dev/uninstall.sh | sh 容器发布镜像包含 celld 二进制文件,并为 Linux x86-64 和 ARM64 发布:docker run --rm ghcr.io/denoland/celld --version 持久化运行时的本地状态并传递标准 AWS 凭证环境:docker volume create celld-state docker run --rm --network host \ -e AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY \ -e AWS_SESSION_TOKEN \ -e CELLD_WATCH=/var/lib/celld/state \ -v celld-state:/var/lib/celld \ ghcr.io/denoland/celld \ --bucket s3://my-cells-bucket \ --endpoint https://ACCOUNT.r2.cloudflarestorage.com \ --region auto \ --listen 0.0.0.0:8080 \ --advertise node-a.internal:8080 删除 --endpoint / --region 以用于真实的 AWS S3。在负载均衡器后面,为每个节点提供一个可以到达其同伴的独特 --advertise。运行 celld 使用标准的 AWS 凭证链。部署到与 S3 兼容的存储桶,然后在同一个存储桶上启动 celld:celld deploy . \ --bucket s3://my-cells-bucket celld \ --bucket s3://my-cells-bucket \ --listen 0.0.0.0:8080 \ --advertise 10.0.0.12:8080 使用 --endpoint 以用于其他与 S3 兼容的服务,并在无法推断时使用 --region。一个车队运行一个应用程序,每个节点从 deploy/current.json 加载其最新的成功提交的部署。运行 celld --help 获取完整的命令行。部署对象使用 crates/celld/protocol.rs 中记录的类型。celld deploy 从 PATH 调用 esbuild 用于 Worker 代码,接受支持的 Wrangler 配置子集——包括共同部署或仅资产的静态资产——并直接写入这些对象。每个节点从存储桶租约中发现所有者和同伴;没有帐户或加入服务。对等 HTTP 不终止 TLS。将每个广告地址放在受信任的私有网络上或加密的覆盖网络,如 WireGuard 或 Tailscale;不要直接发布对等端口。除非明确提供 --unsafe-public-advertise,否则拒绝字面公共 IP。第一个当前节点在存储桶中创建 fleet/peer-auth.json。所有对等请求都经过协议版本化、主体绑定、HMAC 认证、时钟绑定,并使用该车队的密钥进行重放保护。将对存储桶及其凭据的访问视为车队管理员访问。操作一个车队 celld diagnose 默认枚举每个节点租约,然后对每个实时同伴执行签名直接探测:celld diagnose --bucket s3://my-cells-bucket 该报告在单独故障后继续检查,并区分过期记录、格式错误或不安全的广告地址、不可达的同伴和不兼容的协议。它还打印每个节点的粗略常驻单元、WebSocket、RSS、CPU、文件描述符、压力和剥离样本。传递一个或多个 --peer NODE_ID 选项以限制检查。在测量首个版本的安全默认设置时,压力剥离是可选的。在加载的节点上设置常驻单元的高和低水位线:CELLD_MAX_RESIDENT_CELLS=1000 \ CELLD_RESIDENT_LOW_WATER=800 \ celld --bucket s3://my-cells-bucket --listen 0.0.0.0:8080 \ --advertise node-a.internal:8080 在 Linux 上,CELLD_MAX_RSS_MB 和 CELLD_MAX_CPU_PERCENT 添加进程内存和 CPU 触发器;常驻单元水位线是可移植的。在压力下,celld 耐用地复制和围栏最近最少使用的闲置单元,将它们发布为无主单元而不重置它们的纪元,并拒绝 t
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡