Serverless 计算让你无需管理服务器即可运行代码。你编写函数,部署它们,平台处理扩展、可用性和基础设施。在 2026 年,三个平台主导了 serverless 领域:AWS Lambda、Vercel Serverless Functions 和 Cloudflare Workers。每个都有不同的优势和权衡。
在本文中,我们通过真实示例、性能考量和定价分析来对它们进行比较。
Serverless 如何工作
你部署一个函数。当请求到达时,平台会:
- 启动一个执行环境(或重用一个已热启动的环境)
- 运行你的函数
- 返回响应
- 空闲时缩减到零(你不需要为空闲时间付费)
平台概览
AWS Lambda
最初的 serverless 平台(2014 年推出)。最成熟、功能最丰富,与 AWS 生态系统深度集成。
// AWS Lambda handler export const handler = async (event) => { const body = JSON.parse(event.body); const result = await processData(body); return { statusCode: 200, headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(result), }; };
Vercel Serverless Functions
与 Next.js 和前端部署工作流紧密集成。函数与你的前端一起部署,无需配置。
// app/api/hello/route.ts (Next.js App Router) import { NextResponse } from 'next/server'; export async function GET(request: Request) { const { searchParams } = new URL(request.url); const name = searchParams.get('name') || 'World'; return NextResponse.json({ message: `Hello, ${name}!` }); }
Cloudflare Workers
在全球 300 多个城市的 Cloudflare 边缘网络上运行。使用 V8 引擎(与 Chrome 相同)而非 Node.js,这意味着极快的冷启动。
// Cloudflare Worker export default { async fetch(request, env) { const url = new URL(request.url); const name = url.searchParams.get('name') || 'World'; return new Response( JSON.stringify({ message: `Hello, ${name}!` }), { headers: { 'Content-Type': 'application/json' } } ); }, };
功能比较
| 功能 | AWS Lambda | Vercel Functions | Cloudflare Workers |
|---|---|---|---|
| 运行时 | Node.js, Python, Go, Rust, Java, .NET | Node.js, Python, Go, Ruby | V8 Isolates (JS/TS, Rust via WASM) |
| 最大执行时间 | 15 分钟 | 60s (Hobby), 300s (Pro) | 30s (免费), 15min (付费) |
| 内存 | 128MB - 10GB | 1024MB - 3008MB | 128MB |
| 冷启动 | 100-500ms | 100-300ms | < 5ms |
| 部署位置 | 单区域(或多区域但需额外工作) | 多区域 | 300+ 边缘位置 |
| 最大负载 | 6MB(同步),256KB(异步) | 4.5MB | 100MB |
| 内置存储 | 否(使用 DynamoDB、S3) | 否(使用外部数据库) | KV、D1 (SQLite)、R2(兼容 S3) |
| 定价模式 | 按请求 + 持续时间 | 包含在计划中 | 按请求 + 持续时间 |
| 免费额度 | 每月 1M 请求 | 每月 100K (Hobby) | 每天 100K 请求 |
冷启动
冷启动是初始化新函数实例所需的时间。这是 serverless 最大的性能顾虑。
| 平台 | 典型冷启动时间 | 原因 |
|---|---|---|
| Cloudflare Workers | < 5ms | V8 隔离,不需要完整运行时 |
| Vercel Functions | 100-300ms | 边缘或区域的 Node.js 运行时 |
| AWS Lambda | 100-500ms | 完整容器初始化 |
| AWS Lambda (Java) | 1-5 秒 | JVM 启动开销 |
Cloudflare Workers 在冷启动方面以巨大优势获胜,因为它们使用 V8 隔离而不是容器。
定价比较
免费额度
| 平台 | 免费请求数 | 免费计算 |
|---|---|---|
| AWS Lambda | 每月 1M | 400,000 GB-秒 |
| Vercel | 每月 100K | 包含在 Hobby 计划中 |
| Cloudflare Workers | 每天 100K(约每月 3M) | 每次调用 10ms CPU |
大规模使用(每月 10M 请求,平均持续时间 50ms)
| 平台 | 估计月费用 |
|---|---|
| AWS Lambda | ~$2.50(请求)+ |
| Vercel | $20/月(Pro 计划,包含函数) |
| Cloudflare Workers | $5/月(付费计划,包含 10M 请求) |
对于大多数用例,Cloudflare Workers 是最便宜的。Vercel 的定价简单,但包含整个平台(托管、CDN、分析)。AWS Lambda 的定价最为精细。
真实世界用例
AWS Lambda:最适合
- 复杂的后端工作流 - step functions、事件驱动架构
- 与 AWS 服务集成 - S3 触发器、DynamoDB 流、SQS 队列
- 长时间运行的任务 - 最多 15 分钟的执行时间
- 多语言团队 - 支持最广泛的运行时
Vercel Functions:最适合
- Next.js 应用 - 零配置 API 路由
- 前端优先的团队 - 前端和后端一起部署
- 快速原型开发 - git push 即部署
- Jamstack 架构 - 静态前端 + serverless API
// app/api/subscribe/route.ts import { NextResponse } from 'next/server'; export async function POST(request: Request) { const { email } = await request.json(); // Validate if (!email || !email.includes('@')) { return NextResponse.json( { error: 'Invalid email' }, { status: 400 } ); } // Save to database await db.subscribers.create({ email }); return NextResponse.json({ success: true }); }
Cloudflare Workers:最适合
- 低延迟 API - 代码在全球 300 多个位置运行
- 边缘计算 - 转换响应、A/B 测试、个性化
- 高流量 API - 大规模使用时最便宜,免费额度慷慨
- 全球应用 - 通过 KV 和 D1 将数据放在用户附近
// Edge-side A/B test export default { async fetch(request, env) { const url = new URL(request.url); // Assign user to variant const cookie = request.headers.get('Cookie') || ''; let variant = cookie.includes('ab=b') ? 'b' : 'a'; if (!cookie.includes('ab=')) { variant = Math.random() < 0.5 ? 'a' : 'b'; } // Fetch the appropriate version const response = await fetch(`${url.origin}/variants/${variant}`); const newResponse = new Response(response.body, response); // Set cookie for consistent experience newResponse.headers.set('Set-Cookie', `ab=${variant}; Path=/; Max-Age=86400`); return newResponse; }, };
何时选择哪个
选择 AWS Lambda 如果:
- 你已经深入使用 AWS 生态系统
- 你需要长时间运行的函数(最多 15 分钟)
- 你需要复杂的事件驱动架构
- 你需要 JavaScript 之外的运行时(Python、Go、Rust、Java)
选择 Vercel Functions 如果:
- 你正在使用 Next.js 或前端框架开发
- 你想要最简单的部署体验(git push)
- 你的团队以前端为主
- 你想要托管 + 函数 + CDN 集于一个平台
选择 Cloudflare Workers 如果:
- 你需要全球最低的延迟
- 你想要大规模使用时最便宜的选项
- 你需要边缘计算能力
- 冷启动时间对你的用例至关重要
可以组合使用吗?
当然可以。一个常见的架构:
- Cloudflare Workers:边缘路由、缓存、安全
- Vercel Functions:前端 API 路由、SSR
- AWS Lambda:重度后端处理、定时任务、事件管道
结论
Serverless 已经显著成熟。在 2026 年,AWS Lambda、Vercel Functions 和 Cloudflare Workers 之间的选择取决于你的技术栈和优先级:
- 最简单的开发者体验:Vercel
- 最强大和灵活:AWS Lambda
- 最佳性能和定价:Cloudflare Workers
三者都已经可用于生产环境并经过实战检验。从适合你当前技术栈的那个开始,随着需求的增长进行扩展。