Language:Chinese VersionEnglish Version

无服务器领域分化为两种截然不同的模式,而这一差异并非表面现象。AWS Lambda 在 2014 年开创了函数即服务模式,并用了十年时间将自己确立为”无需管理服务器即可运行代码”的实际标准答案。Cloudflare Workers 则采取了根本不同的策略:不是在少数几个 AWS 区域中运行函数,而是在 300 多个位置同时运行,从根本上解决了地理延迟问题。Cloudflare Workers 与 AWS Lambda 边缘无服务器的对比最终是一个关于计算资源应相对于用户部署在何处的问题——答案很大程度上取决于计算资源实际执行的任务。到 2026 年,两个平台都已相当成熟,但它们仍然是针对不同约束条件优化的真正不同的工具。

基本架构差异

Lambda 在 AWS 区域内运行。当函数在 us-east-1 执行时,东京的用户在函数启动前就为每次调用增加了 150ms 的网络往返时间。Lambda 通过 Lambda@Edge 和 CloudFront 集成来缓解这一问题,但这些只是在区域模型之上的附加层——并非对该模型的真正重新思考。其思维模式仍然是”部署到某个区域,希望它足够接近。”

Workers 运行在 Cloudflare 的全球网络中,截至 2026 年已覆盖 330 多个城市。来自东京的请求会路由到东京的 PoP,来自法兰克福的请求会路由到法兰克福。没有区域选择,没有多区域部署策略,也不需要权衡延迟与成本。代码默认无处不在,Cloudflare 的 Anycast 路由确保请求到达地理上最近的节点。这不是部署细节——而是平台的结构性特性,从根本上改变了在边缘构建应用的可行性。

隔离模型同样存在显著差异。Lambda 在由 Firecracker 管理的 MicroVM 中运行。每次调用都能获得完整的 Linux 环境实现真正的隔离,这支持丰富的运行时环境但需要初始化时间。Workers 在 V8 隔离环境中运行——与 Chrome 同样的 JavaScript 引擎——其中每个 Worker 是共享进程中的一个轻量级隔离。V8 隔离的启动时间是微秒级而非毫秒级,这是 Workers 标志性零冷启动特性的技术基础。

2026 年的冷启动现实

冷启动是两个平台之间最常被引用的性能差异,而这一差距是真实且持续的。

对于绝大多数调用,Cloudflare Workers 的冷启动时间实际上为0毫秒。V8 隔离区初始化速度极快——通常包括脚本解析在内不到5毫秒——以至于 Cloudflare 在其文档中不区分”热启动”和”冷启动”。隔离区模型意味着启动开销在结构上可以忽略不计。没有外部依赖的 Workers 从 Cloudflare 边缘测量开始,可在1毫秒内处理请求。

2026年,AWS Lambda 的冷启动时间根据运行时和函数配置不同,大致在100毫秒到500毫秒之间。Lambda 上的 Node.js 和 Python 运行时通常在100到200毫秒内冷启动。需要 JVM 或 CLR 初始化的 Java 和 .NET 运行时,经常达到500毫秒到1,000毫秒。Lambda SnapStart(适用于 Java)通过快照技术解决 JVM 问题,但增加了自身的操作复杂性。预置并发通过保持函数热启动完全消除了冷启动,但成本实际上弥合了无服务器定价和常开计算定价之间的差距。

对于接收稳定、可预测流量的工作负载,Lambda 冷启动是可以管理的背景噪音。对于具有突发或不可预测流量模式的工作负载——不规则激增的 API 端点、认证服务、任何具有人工驱动流量模式的服务——冷启动延迟会出现在您的 p99 和 p999 指标中,并且对用户可见。Workers 简单地没有这个问题需要管理。

运行时限制:各平台实际允许的内容

两个平台的运行时限制不仅仅是需要记忆的数字——它们定义了哪些问题类别属于哪个平台。

Cloudflare Workers 限制:

  • 内存:每个隔离区128MB
  • CPU 时间:每个请求30秒(付费计划;免费计划为10毫秒)
  • 脚本大小:压缩后10MB
  • 子请求:每个请求1,000个
  • 环境变量:每个Worker 64个,每个5KB
  • 运行时:JavaScript/TypeScript (V8)、WebAssembly、Python(通过Pyodide,测试版)

AWS Lambda 限制:

  • 内存:128MB 到 10,240MB(可配置)
  • 执行持续时间:最长15分钟
  • 部署包:压缩后50MB,解压后250MB(使用容器映像为10GB)
  • 并发:默认每个区域1,000个(软限制,可提高)
  • 运行时:Node.js、Python、Java、Go、Ruby、.NET,通过 Lambda Layers 使用自定义运行时

128MB 的 Workers 内存上限是许多工作负载最关键的约束。需要加载大型机器学习模型、处理高分辨率图像或维护大量内存数据结构的任务根本无法在 Workers 环境中运行。Lambda 的 10GB 上限可以容纳几乎所有实际的计算工作负载,包括运行量化的大语言模型(LLMs)、视频处理流程以及在 Workers 环境中不可能完成的复杂数据转换任务。

15 分钟的 Lambda 执行时间上限与 Workers 的 30 秒 CPU 限制同样定义了问题范围。Workers 针对快速、无状态的请求处理进行了优化。Lambda 可以运行长时间运行的批处理作业、处理大文件、协调多步骤工作流,以及执行本质上需要分钟级而非毫秒级完成的工作。

定价:实际工作负载的真实数据

无服务器定价比较通常比较理论上的最低价格。以下是代表性生产工作负载的实际数据:每月 1000 万次请求,平均执行时间 50ms,典型负载大小。

Cloudflare Workers(付费计划,基础价 $5/月):

  • 包含:基础价格中每月包含 1000 万次请求
  • 额外请求:超出包含的 1000 万次后,每百万次 $0.30
  • CPU 时间计费:超出免费套餐后,每百万 CPU 毫秒 $0.02
  • 每月 1000 万次请求,50ms CPU 时间:总计约 $5 至 $8

AWS Lambda(us-east-1,x86,512MB 内存):

  • 请求成本:每百万次请求 $0.20(1000 万次总计 $2.00)
  • 计算成本:每 GB-秒 $0.0000166667;1000 万 × 0.05秒 × 0.5GB = 250,000 GB-秒 = $4.17
  • 免费套餐:每月 100 万次请求和 400,000 GB-秒(前 12 个月)
  • 免费套餐后每月 1000 万次请求:总计约 $6.17

在这个规模上,价格基本相当。差异出现在极端情况下。对于流量高、计算量低的工作负载——简单的 API 网关、身份验证中间件、头部操作——Workers 的请求定价模型可能明显更便宜,因为 CPU 时间保持最小。对于计算密集型工作负载,其中 512MB 或更多的 Lambda 内存被充分利用,Lambda 的计算定价与实际资源消耗的关联性更可预测。

隐藏的成本变量是数据传输。CloudFront 和 API Gateway 费用显著增加了面向互联网工作负载的 Lambda 有效成本。Workers 的基础定价中包含了从 Cloudflare 网络输出的流量。对于响应负载较大的架构,这种差异可能完全超过计算成本的比较。

Workers 的优势:原生边缘用例

有几类工作负载非常适合 Workers,在这种情况下使用 Lambda 会带来架构摩擦而没有相应的好处。

API 网关和请求路由。重写标头、转换请求负载、根据 URL 模式或查询参数将请求路由到不同的源 — 这些操作在 Workers 上执行只需个位数的毫秒时间,且不会增加区域延迟。在 Lambda 上执行相同的逻辑,即使是通过 Lambda@Edge,也涉及更多组件、更高的冷启动风险和更高的基础成本。

身份验证和会话验证。JWT 验证、对 KV 进行 API 密钥查找、按 IP 或用户进行速率限制 — 这些操作需要快速且接近用户。使用 KV 存储的 Workers 可以在不往返任何源的情况下验证令牌和执行速率限制,使全球身份验证开销保持在 5ms 以下。在单个 AWS 区域中的基于 Lambda 的身份验证层会给错误大陆的用户增加 50 到 200ms 的延迟。

A/B 测试和功能标志。决定向用户展示哪个变体、设置 cookie 并相应地重写响应,这正是 V8 隔离模型能最优处理的无状态、低内存、请求范围逻辑。Workers 可以读取 KV 标志、做出路由决策并返回响应,无需任何源服务器参与。Lambda 中的相同模式需要 API Gateway、Lambda 调用以及仔细的缓存管理,以避免提供过期的变体。

基于地理位置的路由。Workers 可以访问每个请求上的 request.cf.countryrequest.cf.cityrequest.cf.latitude 及相关属性 — 无需 IP 地理位置库、无需外部 API 调用、无额外延迟。将欧盟用户路由到符合 GDPR 的源、提供本地化内容或阻止特定区域的请求,只需在边缘编写几行代码,零增加延迟。

HTML 和响应转换。Workers 的 HTMLRewriter API 提供了一个流式 HTML 解析器,专为修改传输中的响应而构建。注入分析脚本、个性化内容、重写链接和修改 meta 标签都可以在 CDN 层完成,无需触及源服务器。Lambda 没有类似的功能,除非部署大量额外基础设施。

Lambda 的优势:密集计算和 AWS 生态系统

Workers 的限制并非随意设定 — 它们反映了在 330 多个位置运行共享基础设施的权衡。当这些限制不适合您的需求时,Lambda 就是正确的选择。

内存密集型计算。图像调整大小、PDF 生成、运行 ML 推理、代码编译、处理大型 JSON 数据集 — 任何需要超过 128MB 工作内存的操作都必须在 Lambda 上运行。10GB 的上限基本可以满足任何实际工作负载的需求。支持容器镜像的 Lambda 可以打包任意原生库,这使得视频处理(ffmpeg)、科学计算(NumPy、SciPy)和自定义 ML 推理(PyTorch、ONNX Runtime)等工作负载成为可能,而这些工作负载 Workers 是无法实现的。

长时间运行的任务。后台作业、批处理、复杂的编排工作流,以及任何需要超过 30 秒 CPU 时间的工作都应该放在 Lambda 上。Step Functions 与 Lambda 的集成支持具有重试逻辑、分支和并行执行的可持久多步骤工作流。Workers 有 Durable Objects 用于有状态协调,但它们是为协调问题而设计的,而不是计算问题。

AWS 生态系统集成。如果您的基础设施运行在 AWS 上 — RDS、DynamoDB、S3、SQS、SNS、Kinesis、Secrets Manager — Lambda 的 VPC 集成、基于 IAM 的身份验证和事件源映射使其成为明显的计算层。Lambda 可以调用和被几乎每个 AWS 服务调用。集成就是如此顺畅。将 Workers 与 AWS 服务集成需要管理凭证,向 AWS 服务端点进行外部 HTTPS 调用,并在 Lambda 内部遍历的每个服务边界处增加延迟。

定时和事件驱动的工作负载。EventBridge Scheduler、CloudWatch Events、S3 事件通知、SQS 触发器 — Lambda 的事件源集成涵盖了异步工作负载模式的完整范围。Workers Cron Triggers 可以处理简单情况下的定时任务,但它们无法匹配 Lambda 在复杂事件驱动架构方面的事件源集成深度。

Durable Objects 与 DynamoDB:边缘状态

如果没有 Durable Objects,Workers 的无状态模型将是一个重大限制,这是 Cloudflare 提供的边缘有状态协调逻辑解决方案。Durable Object 是一个具有持久存储、全局唯一标识符和保证单线程执行的 JavaScript 类实例。全球任意数量的 Workers 都可以向同一个 Durable Object 发送消息,Cloudflare 会将这些消息路由到单个实例 — 处理该对象 ID 所有状态的同一物理位置。这使得 Durable Object 成为实时协调的理想选择:协作编辑、实时游戏状态、聊天室、具有强一致性保证的速率限制。

DynamoDB 是一款解决不同类别问题的不同工具。它是一款可扩展的全局键值和文档数据库,具有可配置的读写容量、二级索引、流和事务功能。DynamoDB 专为大规模数据存储和检索而设计,具有 Durable Objects 存储所不具备的丰富查询功能。Durable Objects 存储本质上是一个具有强一致性的按对象键值存储 — 适用于协调状态,而非跨数千条记录运行查询。

实际指导:当您需要协调原语时使用 Durable Objects — 即多个边缘位置需要达成一致的实时状态的单一事实来源。当您需要数据库时使用 DynamoDB — 可查询、可索引、高容量记录存储,具有运营成熟度和丰富的 SDK 生态系统。

Workers KV 与 S3

Workers KV 是一个具有最终一致性的全局复制键值存储,读取延迟非常低(从边缘节点缓存命中时约 2ms)。它专为存储配置数据、功能标志、用户偏好和访问令牌而设计,这些数据 Workers 在每次请求时都需要读取。读取优化设计意味着写入会在 60 秒内全局传播,读取返回的缓存值可能最多有 60 秒的延迟。它不是一个数据库。它是应用程序配置状态的类 CDN 层。

S3 是一个对象存储系统,专为持久性、可扩展性和任意对象大小的吞吐量而设计。两者并非针对相同用例竞争。Workers KV 用于小型、频繁读取的数据,需要以最小延迟全局访问。S3 用于文件、备份、大对象、构建工件以及任何需要版本控制、访问控制策略或桶级操作的内容。错误在于尝试将 Workers KV 用于其未设计的数据访问模式 — 批量扫描、大值或高写入工作负载 — 并得出其与 S3 相比不足的结论。

中间件模式:Workers 作为 Lambda 的前端

对于许多生产工作负载,最有效的架构不是非此即彼的选择。Workers 处理请求层 — 身份验证、速率限制、地理位置、A/B 测试、标头转换 — 并将合格的请求传递给 Lambda(或任何源)以执行计算密集型业务逻辑。这种中间件模式捕获了 Workers 在边缘处理高容量、低复杂性操作时的延迟和成本优势,同时保留了 Lambda 在需要时的完整功能。

一个具体的模式:Workers 脚本根据 KV 缓存的令牌验证 Authorization 标头,通过 Durable Object 增加速率限制计数器,从 request.cf 注入地理位置标头,然后将增强后的请求转发到由 Lambda 支持的 API Gateway 端点。Lambda 函数接收一个预先认证、预先限流、增强地理位置信息的请求,可以完全专注于业务逻辑。Lambda 中的冷启动问题影响较小,因为 Workers 层吸收了快速路径请求,而 Lambda 只看到需要完全处理的流量子集。

此模式特别适用于:具有大量机器人流量的公共 API(Workers 在到达 Lambda 计费之前就在边缘处理滥用请求)、需要低延迟全球响应但保持集中业务逻辑的多区域应用程序,以及希望逐步添加边缘功能的从纯 Lambda 架构迁移的应用程序。

部署体验:Wrangler 与 SAM/CDK

开发和部署体验的差异足以影响 DevOps 能力有限的团队的平台选择。

通过 Wrangler CLI 部署 Workers 真的很快。wrangler deploy 在不到 30 秒内将 Worker 推送到 Cloudflare 的全球网络。无需配置构建管道,无需打包容器,无需选择区域。使用 wrangler dev 进行本地开发会运行一个本地 V8 环境,通过本地模拟密切模仿生产行为,包括 KV 和 Durable Objects 绑定。从代码更改到部署更改的反馈循环以秒为单位衡量。

Lambda 部署在操作上更为复杂。AWS SAM CLI、CDK 或 Terraform 是标准的部署工具,每个都需要熟悉 CloudFormation 资源建模。部署 Lambda 函数意味着定义 IAM 角色、配置 API Gateway 或 Function URL、将环境变量作为 SSM 参数或 Secrets Manager 条目进行管理,以及连接事件源映射。对于已经为其他 AWS 资源运行基础设施即代码工作流的团队来说,这是熟悉的领域。对于刚开始或偏好最小化基础设施开销的团队来说,操作层面的开销是一个重要的成本。

Lambda 的部署故事随着容器镜像支持而有所改进——将函数打包为 Docker 镜像可以消除大多数依赖管理摩擦,并允许使用标准 Docker 工具进行本地测试。但从镜像推送到 Lambda 更新的部署管道仍然涉及 ECR、CloudFormation 堆栈更新,以及比 Wrangler 单命令部署更多的组件。

做出决定

正确的平台直接源自特定工作负载的需求,而非对某个厂商生态系统的偏好。

选择 Workers 当:您的主要关注点是全球分布式用户的延迟;您的逻辑是请求范围的、无状态的,并且可以在 128MB 内运行;您无条件需要零冷启动;您正在构建边缘中间件、身份验证或路由逻辑;或者您希望为 JavaScript/TypeScript 服务提供尽可能简单的部署路径。

选择 Lambda 当:您的工作负载需要超过 128MB 内存;执行时间经常超过 30 秒;您与其他 AWS 服务深度集成,需要 VPC 访问或基于 IAM 的身份验证;您需要 JavaScript 之外的运行时支持(Go、带原生包的 Python、Java、.NET);或者您需要长时间运行的执行模型来处理批处理作业、文件处理或复杂的工作流编排。

答案比从业者预期的更经常是”两者都”。这些平台在架构层面是互补的:Workers 用于外围,Lambda 用于其背后的繁重工作。将选择视为二元选择的团队最终往往会因 Workers 的限制而过度约束自己,或者忽略在区域 Lambda 函数上运行身份验证和路由逻辑的实际性能成本。中间件模式不是一种妥协——它通常是架构上正确的答案。


Cloudflare Workers 与 AWS Lambda:决策矩阵

需求 Cloudflare Workers AWS Lambda
冷启动延迟 ~0ms (V8 隔离) 100–500ms (因运行时而异)
全球分布 330+ PoPs,自动 单区域;Lambda@Edge 用于 CDN
最大内存 128MB 10,240MB
最大执行时间 30s CPU 时间 15 分钟
支持的运行时 JS/TS, Wasm, Python (测试版) Node.js, Python, Java, Go, .NET, 自定义
1000万次请求/月的定价 ~$5–$8 (含基础计划) ~$6.17 (免费额度之后)
有状态协调 Durable Objects DynamoDB + Step Functions
键值存储 Workers KV (最终一致性) DynamoDB, ElastiCache
AWS 生态系统集成 仅外部 HTTPS 调用 原生,VPC,IAM
部署简便性 wrangler deploy (<30s) SAM/CDK/Terraform (中等)
请求中的地理位置数据 原生 (request.cf.*) 需要外部服务或 CloudFront 标头
HTML 响应转换 HTMLRewriter API (流式) 无原生等效功能
最适合的场景 边缘中间件,认证,路由,A/B 测试 密集计算,长时间任务,AWS 原生工作负载

常见问题

Cloudflare Workers 能否完全替代 AWS Lambda?

对于符合 Workers 限制的工作负载 — JavaScript 或 TypeScript 逻辑,128MB 以下内存,请求范围执行 — 是的,Workers 可以完全替代 Lambda,并且通常能提供更低的延迟和更简单的部署。对于需要更多内存、更长的执行时间、原生运行时支持(Go 二进制文件、JVM、.NET)或直接与 AWS 服务集成的工作负载,Lambda 是正确的平台,Workers 无法替代它。对于大多数生产系统的实际情况是,两个平台架构中的不同部分,而不是一个替代另一个。

对于高流量 API,Workers 定价与 Lambda 相比如何?

在请求量大但每次请求计算量低的情况下,Workers 的定价通常更有优势。每月 5 美元的付费计划包含 1000 万次请求;额外请求每 100 万次收费 0.30 美元。Lambda 的请求定价为每 100 万次 0.20 美元,加上基于内存和持续时间的计算费用。对于执行最少计算量的简单 API,Workers 从设计上就能节省成本。对于在 512MB 或更高配置下长时间运行的密集型 Lambda 函数,Lambda 的计算定价可能更高效,因为您是根据实际资源使用量而非固定的请求费率来付费。

Workers 免费套餐与 Lambda 免费套餐有何区别?

Workers 的免费套餐每天提供 10 万次请求(每月约 300 万次),每次请求有 10ms 的 CPU 时间。Lambda 的免费套餐每月提供 100 万次请求和 40 万 GB-秒的计算量,在 AWS 账户的整个生命周期内有效(并非如普遍误解的那样仅限前 12 个月 — Lambda 的计算免费套餐是永久性的)。对于开发和低流量生产工作负载,两个免费套餐都很慷慨。Workers 免费套餐的每日重置对于月内分布不均匀的工作负载是一个实际限制;Lambda 的月度聚合对于可变流量模式更为灵活。

Cloudflare Workers 是否支持 Python 和其他语言?

通过 Pyodide 在 Workers 中支持 Python 计划于 2025 年可用,但存在显著限制:并非所有 Python 包都能在 Pyodide 环境中运行,启动开销高于原生 JavaScript Workers,内存上限仍为 128MB。对于能在这些约束条件下运行的 Python 工作负载 — 数据转换、使用小型模型的基本 ML 推理、脚本逻辑 — 是可行的。对于您期望 pip install 能可靠处理任意包的标准 Python 开发,Lambda 的原生 Python 运行时是更可预测的选择。从 Rust、Go 和 C 编译为 Wasm 得到良好支持,是需要在 Workers 上运行的性能敏感逻辑的实用路径。

Workers 中间件模式设置复杂吗?

中间件模式 — Workers 作为 Lambda 或其他源的前端 — 实现起来很简单。一个验证身份验证、应用速率限制并代理到 AWS API Gateway 端点的 Workers 脚本通常为 50 到 100 行 TypeScript。Wrangler 的 fetch API 使向任何 HTTPS 源发出出站请求变得简单。主要的运营考虑因素是凭证管理:从 Workers 进行任何 AWS 服务调用的 AWS 凭证应通过 Workers secrets 处理,而不是硬编码。熟悉基本 Workers 开发的团队可以在一天内实现生产级中间件层。

By Michael Sun

Founder and Editor-in-Chief of NovVista. Software engineer with hands-on experience in cloud infrastructure, full-stack development, and DevOps. Writes about AI tools, developer workflows, server architecture, and the practical side of technology. Based in China.

Leave a Reply

Your email address will not be published. Required fields are marked *

You missed