Hacker News 中文摘要

RSS订阅

Celld:自托管、分布式持久化对象 -- Celld: Self-hosted, distributed Durable Objects

文章摘要

celld是一个开源守护进程,可在自有机器上运行Cloudflare Workers和Durable Objects。每个对象都是一个独立的SQLite数据库,通过名称寻址并复制到S3兼容存储桶中,节点仅通过该存储桶协调,无需控制平面或共识机制。

文章总结

好的,这是根据您的要求,对原文进行中文重述和精简后的版本:

标题: GitHub - denoland/celld:自托管、分布式的持久化对象

核心内容:

celld 是一个开源守护进程,允许你在自己的机器上运行 Cloudflare Workers 和 Durable Objects。每个对象都是一个独立的 SQLite 数据库,通过名称寻址,并复制到你拥有的兼容 S3 的存储桶中。节点仅通过该存储桶进行协调,无需控制平面或共识机制。由于每个对象都是自己的小型数据库,应用天然实现了分片,避免了单一共享数据库的争用和故障影响范围问题。空闲的单元(cell)会休眠,几乎不消耗资源。

工作原理:

每个 celld 节点都嵌入了 V8 引擎并执行 Wrangler 构建包。整个集群共享一个兼容 S3 的存储桶,其中包含部署包、单元状态和所有权记录。通过对象存储的“比较并交换”操作,确保同一时间只有一个节点拥有某个单元,无需成员协议、故障检测器或共识服务。

celld 会持续将每个单元的 SQLite 数据库复制到存储桶中。当单元迁移或唤醒时,其新所有者会恢复该数据库并继续执行。存储桶是持久化的数据源,节点是可替换的。

安装与运行:

  1. 安装: 通过 curl -fsSL https://celld.dev/install.sh | sh 命令安装。安装程序会将已验证的版本保存在 ~/.local/lib/celld/releases 目录下。
  2. 容器运行: 提供了 Linux x86-64 和 ARM64 的 Docker 镜像 (ghcr.io/denoland/celld)。运行容器时需要挂载本地状态卷,并传入 AWS 凭证环境变量以及存储桶、端点、监听地址等参数。
  3. 基本运行: 使用 celld deploy 命令将项目部署到 S3 兼容的存储桶,然后启动 celld 守护进程指向同一个存储桶。所有节点都会加载最新的成功部署。节点通过存储桶中的租约发现彼此的所有者和地址,无需账户或加入服务。
  4. 安全: 节点间的 HTTP 通信不终止 TLS,应部署在受信任的私有网络或加密覆盖网络中。所有对等请求都经过 HMAC 认证、时钟绑定和重放保护。

集群运维:

  • 诊断: 使用 celld diagnose 命令可以枚举所有节点租约,并对每个在线节点进行签名探测,报告其状态、资源使用情况等。
  • 压力卸载: 可以设置环境变量(如 CELLD_MAX_RESIDENT_CELLS)来启用压力卸载功能。当达到高水位线时,celld 会持久化并释放最近最少使用的空闲单元,直到资源使用降至低水位线。有活跃工作或 WebSocket 连接的单元不会被卸载。

构建与贡献:

  • 源码构建: 使用 cargo build --locked 等标准 Rust 命令构建。
  • 贡献: 不接受 Pull Request。欢迎通过邮件发送 git format-patch 格式的补丁,并需同意贡献者许可协议。

许可: Apache-2.0

评论总结

根据评论内容,总结如下:

主要观点与论据:

  1. 技术架构创新(评分:无,作者:jauntywundrkind)

    • 关键引用:"celld is isolates! The very lightweight within v8 isolation boundary"(celld使用V8隔离边界,实现极轻量级运行)
    • 关键引用:"the deno team rolled their own new runtime! This one without denocore!"(Deno团队自研运行时,未使用denocore)
  2. 对S3作为控制层的质疑(评分:无,作者:q3k)

    • 关键引用:"that S3 is the control plane and consensus layer, no?"(S3本身就是控制平面和共识层)
    • 关键引用:"You're just pushing this down the stack"(只是将问题下推到堆栈底层)
  3. 对地理分布能力的担忧(评分:无,作者:zuzululu)

    • 关键引用:"cloudflare gives you that instant geo-sync across the world"(CloudFlare提供全球即时同步)
    • 关键引用:"do I need to buy bare metal in major continents"(用户需自行购买各大洲裸金属服务器)
  4. 对抽象概念的肯定(评分:无,作者:khalidx)

    • 关键引用:"The 'durable object' concept has been repeatably demonstrated to be a valuable abstraction"(持久对象概念已被反复证明是有价值的抽象)
    • 关键引用:"Each object is its own SQLite database... this concept can take you a long way"(每个对象独立SQLite数据库,兼具强大与简洁)
  5. 对本地开发体验的期待(评分:无,作者:hhthrowaway1230)

    • 关键引用:"Would be great if I could run locally from the start without configuring an s3"(希望无需配置S3即可本地运行)

平衡性总结: - 正面观点:技术架构创新(V8隔离、自研运行时)、抽象概念价值(持久对象)、开源潜力 - 负面/质疑观点:S3作为控制层的本质未变、地理分布能力不足、本地开发门槛高 - 中性建议:支持在spot实例运行、与workerd对比需求