Node.js 创始人 Ryan Dahl 近日宣布,其创立的服务器端 JavaScript 运行时 Deno 将被 Cloudflare 收购。尽管 Deno 最初旨在取代 Node.js,但 Cloudflare 计划仅维持该运行时的维护工作一年,随后终止开发。Dahl 对此表示接受,并指出在服务器端计算领域,单纯构建另一个 Node.js 替代品并非正确方向。

Deno 的困境与战略转向
Dahl 向 The Register 透露:“我现在认为,如果你选择用 Node.js 来构建服务器,那你就是搞错了方向。”对于 Cloudflare 而言,此次收购实质上是一次“人才收购”(acquihire)。Dahl 及其 12 名同事将加入 Cloudflare 团队,重点致力于扩展 Workers 平台,并探索将其应用于潜在的开源场景。
Deno 由 Sequoia 于 2022 年投资 2100 万美元支持,截至今年 8 月拥有 40 万月度用户。然而,面对 Node.js 强大的生态引力,Deno 难以实现真正的差异化。“我们在多年开发 Deno 的过程中发现,你很难真正偏离 Node.js,”Dahl 解释道,“随着我们继续推动 Deno 的采用,我们发现不得不基本撤回一些最初的承诺,并随时间推移变得更加兼容 Node,这使我们沦为一种替代性的 Node.js 实现。”
目前,Cloudflare 将在接下来的一年内为 Deno 提供错误修复和安全补丁。Dahl 正在为这个 MIT 许可的开源项目寻找新的归属地,OpenJS Foundation 被视为可能的接收方之一。
从单体运行时到分布式微服务器
Dahl 认为,传统的服务器架构存在局限。“目前,几乎所有其他服务器实际上都运行在 Linux VM 层。而 Cloudflare Workers 并非如此,”他说。Workers 基于 Google V8 isolates 技术,这是一种在单个操作系统进程内运行的轻量级沙箱,代码在其中执行无需专用运行时环境。
今年 8 月,Dahl 发布了新项目 celld,它是 Cloudflare Durable Objects 的开源实现。Durable Objects 允许开发者构建有状态的实时分布式应用程序。每个 Durable Object 实例充当一个单线程的微服务器,拥有唯一的全局 ID 和与之共置的存储,其中会话的用户数据存储在其专属的 SQLite 副本中。Dahl 称这种机制为“一种完美的分布式系统抽象”,因为应用程序的各个实例可以在离用户最近的边缘位置启动。
此前,Durable Objects 硬编码在 Cloudflare 的基础设施中。celld 的出现旨在提供一个可托管在任何地方的实现。事实上,Cloudflare 早在 2022 年就已开源了相关版本,双方在这一技术路径上达成了共识。
背景:Node.js 的革命性影响
Dahl 于 2009 年推出的 Node.js 彻底改变了 Web 应用架构。借助 Google V8 JavaScript 引擎,Node.js 能够以远低于传统 Apache Web 服务器的内存占用,并发处理每秒数千个请求。如今,Node.js 支撑着全球约 3000 万个网站,下载量达 1.3 亿次。
2018 年,Dahl 推出 Deno(“Node”的变位词),试图修正他在 Node.js 中犯下的错误,包括引入内置 fetch、权限模型以及原生 TypeScript 支持等特性。尽管初衷良好,但市场现实迫使这一尝试最终走向终结,转而融入 Cloudflare 的边缘计算体系。





