【celld】把 Cloudflare Workers 和持久化对象搬回自己服务器的开源利器

这是一个开源的守护进程,允许你在自己的机器上自托管并运行 Cloudflare Workers 和 Durable Objects(持久化对象)。它解决了开发者对单一云厂商的依赖问题,通过将每个对象转化为独立的 SQLite 数据库并利用 S3 兼容存储进行节点协调,巧妙地实现了无控制平面的分布式架构,从而避免了共享数据库带来的性能争用和单点故障风险。

主要功能与特性

  • 自托管与无共识分布式:在自有机器上运行 Workers 和 Durable Objects,节点间仅通过 S3 兼容存储桶协调,无需复杂的控制平面、成员协议或共识服务。
  • 天然分片与故障隔离:每个对象都是一个独立的 SQLite 数据库,应用天然实现分片,消除了共享数据库的争用,并将故障爆炸半径降到最低。
  • 按需休眠:空闲的计算单元(Cells)会自动休眠,几乎不消耗系统资源。
  • V8 引擎驱动:每个节点内置 V8 引擎,直接执行 Wrangler 打包的代码。
  • 自动化状态同步:持续将每个单元的 SQLite 数据库复制到 S3 存储桶,确保数据持久化,当单元迁移或唤醒时,新节点可无缝恢复执行。
  • 集群诊断与压力管理:提供诊断工具检查节点健康状态,并支持基于内存、CPU 和驻留单元数量的压力卸载(Pressure shedding)机制,自动释放闲置资源以保护高负载节点。

安装与使用示例

你可以通过官方提供的脚本快速安装该工具:

curl -fsSL https://celld.dev/install.sh | sh

(注:如果安装程序提示,请将 ~/.local/bin 添加到你的 PATH 环境变量中。)

如果你更倾向于使用 Docker,可以直接运行官方镜像:

docker run --rm ghcr.io/denoland/celld --version

部署与启动示例:

配置好标准的 AWS 凭证后,你可以将项目部署到 S3 兼容存储桶,并启动节点:

# 将当前项目部署到 S3 兼容存储桶
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

适用场景与目标用户

适用场景:
* 需要边缘计算或 Serverless 架构,但出于合规、安全或成本考虑,希望将数据和控制权保留在本地或私有云的场景。
* 需要高并发、低延迟,且对数据隔离和状态管理要求极高的分布式应用。
* 希望避免被特定公有云厂商锁定,追求基础设施灵活迁移的项目。

目标用户:
* 追求基础设施自主可控的后端开发者和系统架构师。
* 熟悉 Cloudflare Workers 生态,但需要私有化部署方案的开发团队。
* 需要构建高可用、分布式状态应用的工程师。

总结

这个项目通过将复杂的分布式共识简化为基于对象存储的协调机制,为开发者提供了一种极其轻量且优雅的私有化 Serverless 解决方案。它让 Durable Objects 的强大能力不再局限于特定公有云,是构建高可用分布式应用的优秀选择,建议访问其主页获取更详细信息。

类似文章