17611538698
webmaster@21cto.com

Node.js 之父 Ryan Dahl 全新发布分布式基础架构 celld

架构 0 16 1小时前
图片

21CTO导读:与商用软件同样的状态管理与操作技巧,现在可以使用在你自己的基础设施上了。

对于那些钟情于 Cloudflare Workers 和 Durable Objects, 但又不想被该公司后端基础设施束缚的开发者来说,我们有了一个好消息。

上周,Node.js 的创始人Ryan Dahl发布了他的最新项目—— celld。

图片

celld的官方网站:https://celld.dev/

Ryan Dahl 是在阔别多年后,重新在 X 上发贴,并将新项目celld描述

为“一个自托管的分布式 Durable Objects 和 Workers 实现”。
图片

Dahl 的 celld 模型称与 Cloudflare 的WorkersDurable Objects 的 JavaScript API兼容,但他宣称运行成本要低得多。

这个项目并非仅仅是出于预算考虑而对开源软件的简单复制。在celld的网站上,Dahl和他的团队将他们对Durable Objects架构的复刻形容为一封“情书”。 

Cloudflare 的 Durable Objects 是一个单线程对象,拥有唯一的全局 ID 和独立的存储空间,用户数据存储在它自己的 SQLite 副本中。它运行在 Cloudflare 无服务器 Workers 运行时上,该运行时运行嵌入在隔离区(一种由 Google V8 JavaScript 引擎支持的轻量级虚拟机)中的应用程序。

Durable Objects 最初由Kenton Varda和 Cloudflare 所提出。

celld 的作者Ryan Dahl中肯的写道,它是“近年来分布式系统所拥有的最佳基础架构之一”。与AWS Lambda等传统无服务器平台不同,Durable Objects 模型将数据与计算资源置于同一位置,并采用单线程执行来消除复杂的并发问题。 

“如此优秀的原始设备应该可以在任何地方运行,”celld 页面上如此描述道。

图片

无服务器但有状态

自 2020 年推出以来,Durable Objects已被广泛应用于构建低延迟、高度分布式的 Web 应用程序。它是一个有状态的无服务器执行环境, 既是数据缓存,也能进行计算。 

利用WebSocket API,持久对象可以在实时环境中同时连接多个用户。WebSocket 的休眠模式可以让对象进入休眠状态,这样在无人使用应用时就不会产生云费用。 

因此,有状态无服务器模型最适合实时协作应用,例如多人游戏、团队生产力应用和人工智能代理。Cloudflare 在其无服务器 SQL服务和AI 网关中都使用了 Durable Objects 。

一位开发者详细解释说,使用 Durable Objects 让他可以省去一整套工具(Amazon API Gateway、Apache Kafka、Redis、AWS Lambda 和 EventBridge、Apache Airflow 和 Spark 都被提及到),因为 Durable Objects 可以“以更小的规模”处理所有这些功能。 

赋予耐用物品一个开源家园


Dahl是世界上顶尖的JavaScript I/O专家之一,他创建了Node.js,一个运行着世界上速度最快的Web应用程序的JavaScript运行时环境(但也无意中将“回调地狱”引入了JavaScript世界,即该语言的异步操作迫使程序员将函数作为嵌套回调传递,导致代码臃肿且难以理解)。

Dahl后来继续完善他的异步JavaScript理念,开发了第二代JavaScript运行时环境Deno。 

Celld 摒弃了 Cloudflare 后端,转而使用 Amazon Simple Storage Service (S3) 或同等服务作为存储引擎。它还使用了Tokio Rust 异步运行时。与 Durable Objects 类似,每个 Celld 对象都拥有自己的 SQLite 副本。 

图片

Dahl 向开源社区和开发者承诺,这种开源后端在规模化应用时将比 Durable Objects “便宜几个数量级”。

Dahl 还估算了一下,在 Cloudflare 上部署 100 个驻留的持久对象单元每月需要花费 415 美元,而 celld 的实现方案每月只需花费约 49 美元,该方案基于 DigitalOcean 的S3 兼容存储桶,并部署在 8GB 的 Droplet 上。他认为,随着工作负载的扩展,成本还会进一步降低。 

接下来,Cloudflare对Dahl的数据提出异议,并指出如果所有对象持续处于活动状态,则每月费用为415美元。一位发言人称,如果这些持久对象处于休眠状态,则在Cloudflare上的托管费用仅为20.65美元

无论其所谓的成本节约性如何,该模型本身凭借其自身优势引起了人们的广泛兴趣。

“很高兴看到支持在单一提供商之外运行持久对象。已深深点赞,”一位 Hacker News 读者热情地评论道,并指出持久对象的概念是一个很有价值的抽象概念。 

实际上,其他科技公司或机构也在研究各自的方案,力求将数据更靠近计算节点。例如,Postgres 服务提供商 Neon 最近推出了Neon Functions,它也能将数据和计算资源放在一起,以应对长时间运行的工作负载。 

celld 使用 Rust 和 JavaScript 编写,采用 Apache 2 开源许可证。它可以读取 JavaScript 和 TypeScript 代码。理论上,借助 WebAssembly 的强大功能,它也能够执行 Rust、C/C++、Go 或 Zig 代码,而 V8 只需稍作修改即可支持 WebAssembly。  

值得一提的是,celld 虽是开源的,但禁止使用 AI 进行贡献。
在它的GitHub 页面里有文字明确指出: “编码代理很容易提交大量缺乏上下文的更改,这会让维护者花费更多时间,而不是节省时间。”
“我们仍然欢迎人类贡献,但您应该在提交代码之前了解其功能。”

作者:洛逸

评论

我要赞赏作者

请扫描二维码,使用微信支付哦。

分享到微信