The Cloudflare Blog

Deno is joining Cloudflare

8.5内容质量

TL;DR · AI 摘要

Deno团队加入Cloudflare,通过整合Durable Objects技术简化自托管Workers,使开发者能更高效构建分布式应用。

核心要点

  • Deno与Cloudflare合并后,Workerd和celld将合并为统一运行时。
  • Cloudflare的Durable Objects提供分布式单例,每个对象自带SQLite数据库。
  • Deno改进JavaScript体验但未改变运行时组装方式,需结合Durable Objects实现扩展。

结构提纲

按章节快速跳转。

  1. Deno团队加入Cloudflare,旨在简化自托管Workers和Durable Objects。

  2. Ryan Dahl通过Node.js探索异步编程模型,Deno延续这一理念但未解决分布式问题。

  3. Cloudflare的Durable Objects提供分布式单例,支持SQLite数据库和WebSocket。

  4. Deno与Cloudflare合并后,将统一Workerd和celld运行时。

  5. 合并后将简化自托管Workers,提升开发者构建分布式应用的效率。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Deno加入Cloudflare
    • 技术整合
      • Workerd + celld合并
    • Durable Objects
      • 分布式单例
      • SQLite数据库
    • 开发者价值
      • 简化自托管
      • 提升可扩展性

金句 / Highlights

值得收藏与分享的关键句。

  • Durable Objects提供分布式单例,每个对象有独立数据库,支持WebSocket和同步SQLite访问。

    — 第4段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • Deno改进JavaScript体验但未改变运行时组装方式,需结合Durable Objects实现扩展。

    — 第5段

    ⬇︎ 下载 PNG𝕏 分享到 X
  • 合并后Workerd和celld将统一,简化自托管Workers和Durable Objects的使用。

    — 第3段

    ⬇︎ 下载 PNG𝕏 分享到 X
#Deno#Cloudflare#JavaScript#Workers#Durable Objects
打开原文

Deno 正加入 Cloudflare | Cloudflare 博客

post

Workers

收购

Durable Objects

JavaScript

2026年10月9日

Deno 正加入 Cloudflare

Kenton Varda  和 Ryan Dahl

1分钟阅读

复制链接

Deno 团队将加入 Cloudflare,通过彻底简化自行托管 Workers 和 Durable Objects,让开发者能够在更多场景中使用相同的原语。

关于这一举措的含义及其背景,以下是高级首席工程师 Ryan Dahl 和杰出工程师 Kenton Varda 的说明。

Ryan Dahl Deno(现在是 Cloudflare)

Deno 团队将加入 Cloudflare,我们将合并 workerd 和 celld!关于 Deno 运行时及我们各项工作的最新动态,请查看我在 Deno 博客上的文章。

很久以前,我在柏林的一间仓库里,用一个 500 行的 JavaScript IRC 服务器和现场观众互动的方式介绍了 Node.js。Node.js 是对纯粹异步编程模型能实现什么的探索。异步 I/O 已经被证明对快速服务器非常重要,但实现起来却很困难。移除同步网络功能使构建系统变得更简单,这些系统以前需要更多复杂的机制。让 IRC 演示令人兴奋的是它所需的代码量如此之少。

我创建 Deno 的初衷是寻找更多这样的强大抽象——寻找可以简化功能、去除冗余能力的同时,为工程师提供更强大工具的场景。通过 Deno,我们改进了编写 JavaScript 的体验,但并未从根本上改变开发者围绕运行时需要构建的内容。更大的挑战在于网络应用:计算分布、状态协调、数据存储以及根据需求自动扩展。

那个古老的 IRC 演示一直让我感到困扰——它只是一个服务器,甚至只使用了一条线程。它能够处理许多用户连接,但如果连接数过多就会变慢。最终扩展 IRC 意味着使用多台机器,并在它们之间共享频道。现代聊天应用还需要存储消息历史、用户账户和其他数据。

编程模型能否从一开始就将跨机器的分区作为设计的一部分?

当我了解到 Cloudflare 的 Durable Objects 时,解决方案逐渐清晰。它提供了一个非常强大的抽象:带有 SQLite 数据库的分布式单例。每个 Durable Object 像是一个小型的、可单独寻址的服务器,拥有自己的关系型数据库。它的 JavaScript 执行是单线程的(易于推理),可以处理 WebSockets,其本地 SQLite 数据库可以同步访问。通过为每个频道使用一个 DO 构建聊天应用,你已经对数据和 WebSocket 连接进行了分片,从而使应用具备可扩展性。

除了聊天应用,DO 还能构建更多功能。在此抽象之上可以构建其他服务:队列、KV、Durable Execution(CF 的 Workflow API),甚至 Git 存储。Durable Object 抽象简单却极其强大。

但要在 Cloudflare 之外运行这种模式一直很困难。Cloudflare 的网络非常出色——但人们可能有无数理由想自己运行它。Workerd 已经是开源的,但其 Durable Objects 支持仅限于单个实例。我想要的是分布式版本:跨多台机器的 IRC 频道,平台负责放置、路由和持久化存储。这种抽象的力量在于它的扩展能力。这就是我开始开发 celld 的原因。

构建和运营 Deno Deploy 让我深刻认识到云基础设施的复杂性:需要对接多个公有云、多种数据库,以及高度耦合的服务。通过 celld,我想要实现截然相反的目标:一个用 Rust 编写的二进制文件,仅依赖对象存储作为外部服务。

令我兴奋的是这种模式为开发者带来的优势:专为跨机器分布式应用设计的计算能力、关系型数据库、队列和实时通信原语。要运行它,你只需管理多个 celld 实例和一个对象存储桶。你的应用可以包含多个服务,而无需每个服务都单独配置基础设施项目。这比第一次 Node.js 演示以来我一直在追求的简洁性更接近。

我们正在加入 Cloudflare,让 Workers 编程模型成为构建服务器的主流方式。通过将 celld 和 workerd 结合,我们希望让开发者在自己的基础设施上构建和运营分布式应用变得极其简单。

Kenton Varda Cloudflare

这可能会让一些人感到意外,但当 Deno 团队在 8 月发布 celld 时,我们感到非常欣喜。

为什么是意外?事实上,有一种流行理论认为我们不应该感到高兴。

你可能在互联网上听说过这样的说法:我们让 Cloudflare Workers 的工作方式与其他云平台不同,是为了制造"锁定效应"。这种说法认为,基于 Workers 的软件很难迁移到其他托管平台,因此如果你在 Workers 上开发应用,就会"被困"在 Cloudflare 上。对于使用 Durable Objects 的应用来说尤其如此:它们不仅编写方式不同,架构设计也完全不同。据说这构成了一个巧妙的陷阱:当你深陷其中无法切换时,地板就会突然被抽走。

根据这个理论,celld 是一个威胁:作为 Workers 和 Durable Objects 的开源实现,它允许基于 Workers 的应用无缝迁移到其他提供商。没有陷阱了!

这个理论是错误的

##### Workers 的不同之处在于它更优秀

我们设计 Workers 的方式不同,是因为我们相信这是一种构建 Web 应用的更优方式。

  • Workers 的设计让在全球数百个位置运行的应用管理变得极其简单且成本极低,这是其他主流托管平台尚未实现的成就。定价策略没有花招:我们确实创造了一种比竞争对手更高效的新型架构,并将节省的成本转嫁给了用户。
  • Workers 的实时环境设计(即"绑定")同时让访问外部资源的配置变得更简单、更安全。通常,这两者很难兼得!
  • Durable Objects 让构建实时协作和分布式系统变得容易,而这些在传统三层 Web 架构中要么困难要么根本不可能实现。

简而言之,我们相信我们只是为云软件创造了一个更优秀的编程模型。但要更优秀就必须不同:我们无法在保持与现有平台完全兼容的同时实现这些优势。

如果我们能够提供这些优势并且与传统云平台完全兼容,我们当然会这么做!如果每种计算工作负载都能轻松迁移到Workers上,这对我们业务来说将是一个巨大的优势。但现实是,创新有时需要以不同的方式做事。我们认为,从长远来看,成为独特且更优秀,比与所有人保持一致更好。

##### “锁定”实际上伤害了我们 —— 这就是我们选择开源的原因

如果Workers真的没有“逃生舱”(escape hatch),那么一些最大的客户可能根本不会选择我们。

当我们最初在2022年向Shopify等客户推介Workers for Platforms时,反馈非常明确:除非Workers运行时是开源的,否则他们不可能在我们平台上构建应用。

因此,我们开源了它。没错:似乎很多人并不知道,但Cloudflare Workers运行时workerd是开源的。这不是一个并行实现,而是我们生产环境运行的相同代码。

事实上,我们有一些前客户通过使用workerd迁移到了其他平台。这也没关系!如果没有开源,这些客户根本不会选择我们,而每有一个客户迁移离开,就有许多其他客户选择继续留在我们这里。

结果证明,开源并为人们提供“逃生舱”是一种良好的商业策略。

但我们还可以做得更好 —— 有了Deno的帮助,我们将实现这一点

我们发布workerd时,真心希望人们能在生产环境中使用它。确实有人这样做了,但到目前为止数量并不多。大多数人似乎甚至不知道这竟然可以实现。

为什么?

坦白说,我们在构建周边服务和工具生态系统方面做得不够好,未能真正让workerd发挥潜力。我们发布了运行时,然后就希望社区能接手并将其适配到所有可能的环境中。但事情并没有这样发展。也许我们太天真了。

出于透明度的考虑,我必须承认,workerd在生产就绪性方面一直存在一个重大缺口:Durable Objects。workerd实现了它们,但仅限于单实例方式,足以用于本地测试,但无法扩展。我们一直希望解决这个问题。原始发布版本的代码中就有很多待办事项(TODO)注释。问题是,我们生产环境中的Durable Object路由实现,根本不是任何自托管用户想要的方案。这是一个复杂的系统,专为处理数百个地理位置而设计,依赖于由站点可靠性工程师团队运营的多个外部服务。我们知道自托管场景需要不同的方案,但从未找到足够的时间来构建它。(实际上,我去年春天尝试过,但尴尬的是,它并没有成功。)

因此,现在希望你明白为什么我们对celld感到高兴:这是一个完全兼容我们自身实现的Workers和Durable Objects方案,同时专注于自托管和可扩展性。这是我们一直以来想要构建的,而Deno Land正在为我们构建它!

And who better to do it than Ryan Dahl and co? Ryan is the creator of Node.js. He invented the idea of using JavaScript on the server — without his work, Workers may never have existed. And then, he, Bert Belder, and the rest of the Deno Land crew did it again, creating Deno, another JavaScript (and TypeScript) runtime that further advanced the state of the art. The Deno team understands how to create a good developer experience around a self-hosted runtime — something we never quite cracked with workerd.

Imagine, then, our excitement when the Deno team told us they'd like to join forces on this project.

The Plan

Ryan and Bert will be leading a new effort to make workerd self-hosting a first-class supported way to build and run apps using the Workers programming model. This will involve merging code and ideas from celld back into workerd. I'm incredibly excited for this work — I will personally be using it to host an instance of Cloudflare OS in my home.

We'll have more announcements about this work in the coming months. But if you can't wait, you can start self-hosting celld or workerd today.

table of contents column

discussion column

RELATED TAGS AND SOCIAL MEDIA LINKS

Related tags

Follow on Social Media

  • Cloudflare
  • Kenton Varda
  • Ryan Dahl

EMAIL SIGNUP