Celld
一句话简介
基于 Rust 的高性能计算与数据处理框架,致力于提供安全并发的运行时环境与高效的任务调度能力。
标签
适用应用场景
- 构建高吞吐低延迟的数据处理流水线
- 开发安全并发的网络服务与微服务
- 实现大规模并行计算任务调度
- 作为底层运行时支撑分布式系统组件
README 中文摘要
项目概述
celld 是一个开源守护进程,用于在自有机器上运行 Cloudflare Workers 与 Durable Objects。每个对象(即 cell)都是独立的 SQLite 数据库,按名称寻址,并复制到用户自有的 S3 兼容存储桶中。节点之间仅通过该存储桶协调,无需控制平面或共识协议。由于每个对象本身即小型数据库,应用天然实现分片——单一共享数据库的争用与爆炸半径式故障被设计消除,而非事后治理。空闲 cell 可休眠至接近零资源占用。
工作原理
每个 celld 节点内嵌 V8 引擎,执行 Wrangler 打包产物。整个集群共享一个 S3 兼容存储桶,其中存放部署包、cell 状态以及小型所有权记录。借助对象存储的"比较并交换"语义,确保任意时刻恰好只有一个节点持有某个 cell 的所有权——无需成员协议、故障检测器或共识服务。
celld 持续将每个 cell 的 SQLite 数据库复制到存储桶。当 cell 迁移或唤醒时,新持有者恢复该数据库并继续执行。存储桶即持久的真理之源,节点本身可任意替换。
安装与运行
安装脚本会下载 celld 二进制,可通过 gh attestation verify 校验来源:
curl -fsSL https://celld.dev/install.sh | sh
使用 celld deploy 部署 Worker 项目需要 PATH 中存在 esbuild;纯静态资源项目则不需要。容器镜像同时提供 Linux x86-64 与 ARM64 版本。
启动节点示例:
# 部署项目到存储桶
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
celld 使用标准 AWS 凭证链。集群中所有节点都从同一存储桶加载最新已提交的部署包(位于 deploy/current.json),不存在账号或加入服务。
网络与安全要点
节点间的 HTTP 通信不终止 TLS。所有宣告地址必须位于受信私网或 WireGuard、Tailscale 等加密隧道之上,禁止直接发布对等端口。字面公网 IP 会被拒绝,除非显式传入 --unsafe-public-advertise。集群首个上线节点会在桶中创建 fleet/peer-auth.json。所有对等请求均携带协议版本、消息体绑定、HMAC 认证、时钟边界以及基于该集群密钥的重放保护。桶及对应凭证的访问权限即集群管理员权限。
运维与诊断
celld diagnose 默认枚举所有节点租约,并对每个存活节点执行签名直连探活。报告会持续检查并区分过期记录、格式错误或不安全的宣告地址、不可达节点以及不兼容协议,同时输出常驻 cell、WebSocket、RSS、CPU、文件描述符、压力与丢弃等粗粒度指标。可通过 --peer NODE_ID 限定检查范围。
压力丢弃为可选项。可通过环境变量设置常驻 cell 的高低水位线:
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 会复制并隔离最久未使用的空闲 cell,将其发布为无主状态但不重置 epoch,直至水位回落到低位线才重新获取无主 cell。存在活跃任务或主机 WebSocket 的 cell 不参与丢弃。
从源码构建
cargo build --locked
cargo test --locked
cargo clippy --all-targets --locked -- -D warnings
工作区构建 celld 运行时,版本化的对象存储协议位于 crates/celld/protocol.rs,examples/ 下的 Wrangler 示例覆盖所支持的 Worker 与 Durable Object 能力。运行时与兼容性仍在演进;每次发布前会运行独立引擎冒烟测试、Workers 与 Durable Objects 参考行为的一致性测试,以及带故障注入的分布式协议确定性仿真。
摘要更新于 2026-08-08 00:31:46
· 原文 7138 字符
· md5 08cf6eb88e0f…