3、主流云平台对比:AWS Lambda、Azure Functions、Google Cloud Functions、阿里云函数计算、腾讯云云函数
说实话,每次有朋友问我「Serverless 到底选哪家」,我都得先反问一句:你的业务在哪个区域?你的团队熟悉什么生态?
这不是敷衍。我这些年折腾过好几家云厂商的函数计算,踩过的坑比吃过的盐还多。今天咱们就掰开揉碎,把 AWS Lambda、Azure Functions、Google Cloud Functions、阿里云函数计算、腾讯云云函数这五个主流平台,从底层到体验,好好捋一遍。
3.1 先看全局:各家定位与生态
你想想看,选函数计算平台,其实是在选一个「生态圈」。函数本身只是入口,背后的事件源、存储、数据库、监控、网络,才是真正决定你开发效率的东西。
| 平台 | 推出时间 | 底层运行时 | 最大内存 | 超时时间 | 并发限制 |
|---|---|---|---|---|---|
| AWS Lambda | 2014 | Firecracker 微VM | 10GB | 15分钟 | 1000(可提) |
| Azure Functions | 2016 | 沙箱容器 | 1.5GB(消费计划) | 10分钟(消费计划) | 200(默认) |
| Google Cloud Functions | 2017 | gVisor 沙箱 | 8GB | 9分钟 | 1000 |
| 阿里云函数计算 | 2017 | 安全容器 | 3GB | 10分钟 | 100(默认) |
| 腾讯云云函数 | 2018 | 轻量容器 | 3GB | 900秒 | 500(默认) |
嗯,这里要注意:AWS Lambda 的 15 分钟超时,在 2018 年之前只有 5 分钟。我记得当时有个批处理任务,死活跑不完,最后只能拆成多个函数用 Step Functions 串起来。后来 AWS 把超时拉到 15 分钟,我才松了口气。
3.2 冷启动:谁更「冷」?
冷启动是 Serverless 绕不开的痛。说白了,就是函数第一次被调用时,平台需要拉起一个运行环境,这个过程耗时长短直接影响用户体验。
我做过一个压测对比,用同样的 Node.js 代码(一个简单的 HTTP 返回),分别在五个平台上测冷启动延迟:
# 模拟冷启动测试(单位:毫秒)
AWS Lambda: 250-400ms
Azure Functions: 400-800ms
Google Cloud: 300-600ms
阿里云函数计算: 200-350ms
腾讯云云函数: 300-500ms
为什么会这样?底层技术不同。AWS Lambda 用的 Firecracker 微VM,启动快、隔离强。阿里云函数计算在冷启动上优化得不错,我猜跟他们的安全容器技术有关。Azure Functions 的消费计划冷启动偏慢,但如果你用 Premium 计划,可以保持实例常驻,冷启动基本消失。
3.3 编程语言与运行时支持
我个人习惯用 Node.js 和 Python 写函数,因为生态丰富、上手快。但如果你团队里都是 Java 老炮,那选择面就窄一些。
| 平台 | 官方支持语言 | 自定义运行时 | 备注 |
|---|---|---|---|
| AWS Lambda | Node.js, Python, Java, Go, .NET, Ruby | 支持(通过 Runtime API) | 最丰富,社区自定义运行时也多 |
| Azure Functions | C#, Java, JavaScript, Python, PowerShell | 支持(自定义处理程序) | .NET 生态最佳 |
| Google Cloud Functions | Node.js, Python, Go, Java, .NET, Ruby | 支持(通过自定义容器) | Go 支持较好 |
| 阿里云函数计算 | Node.js, Python, Java, Go, PHP, .NET | 支持(Custom Runtime) | PHP 支持是亮点 |
| 腾讯云云函数 | Node.js, Python, Java, Go, PHP | 支持(Custom Runtime) | PHP 和 Go 支持不错 |
我曾经在 Azure Functions 上写过 C# 的函数,体验确实丝滑,毕竟微软自家的东西。但如果你要用 Python 做机器学习推理,AWS Lambda 配合 EFS 挂载模型文件,是我试过最顺手的方案。
3.4 事件源与触发方式
函数计算的价值在于「被事件驱动」。没有事件源,函数就是个孤岛。
我整理了一下各家的事件源丰富度:
- AWS Lambda:S3、DynamoDB、Kinesis、SQS、SNS、API Gateway、CloudWatch、EventBridge…… 几乎 AWS 所有服务都能触发 Lambda。EventBridge 尤其强大,可以写复杂的规则匹配事件。
- Azure Functions:Blob Storage、Cosmos DB、Event Hubs、Service Bus、HTTP 触发器、Timer 触发器。跟 Azure 生态绑定很深。
- Google Cloud Functions:Cloud Storage、Pub/Sub、Firestore、HTTP、Cloud Scheduler。事件源相对少一些,但够用。
- 阿里云函数计算:OSS、日志服务、API 网关、CDN、表格存储、消息队列 RocketMQ 版。国内生态覆盖很全。
- 腾讯云云函数:COS、API 网关、CKafka、CMQ、CLS、定时触发器。跟腾讯系产品(微信、企微)集成是独家优势。
避坑指南:我曾经在阿里云上做过一个 OSS 上传图片自动缩放的函数。结果发现,如果 OSS 和函数计算不在同一个地域,触发延迟会高得离谱。后来我把所有资源都迁到同一个可用区,问题才解决。所以,跨地域调用是大忌。
3.5 网络与 VPC 支持
很多企业场景下,函数需要访问内网数据库或 Redis。这时候 VPC 支持就至关重要。
- AWS Lambda:支持 VPC 内网访问,但需要绑定 ENI(弹性网卡)。冷启动会因此变慢,因为创建 ENI 需要时间。我建议用 RDS Proxy 或 ElastiCache 的 VPC 端点来优化。
- Azure Functions:Premium 计划和 Dedicated 计划支持 VNet 集成。消费计划不支持。嗯,这里要注意,消费计划下想访问内网资源,得用 VNet 集成 + 区域 VNet 对等,配置起来有点绕。
- Google Cloud Functions:支持 VPC 连接器,但需要额外配置。延迟比 AWS 的 ENI 方式稍好。
- 阿里云函数计算:支持 VPC 内网访问,配置简单。我试过直接挂载到 VPC 内的 RDS,延迟在 1ms 以内,体验不错。
- 腾讯云云函数:支持 VPC 内网访问,同样需要配置。跟腾讯云数据库、Redis 的集成比较顺畅。
注意:函数进入 VPC 后,就失去了公网访问能力。如果你既需要访问内网数据库,又需要调用外部 API,就得配 NAT 网关。这个坑我踩过两次,每次排查半天才发现是网络问题。
3.6 计费模式:谁更划算?
说白了,Serverless 的计费就三块:调用次数 + 执行时间 + 资源规格。但各家细节不同。
| 平台 | 免费额度(每月) | 计费粒度 | 额外费用 |
|---|---|---|---|
| AWS Lambda | 100万次调用 + 40万GB-秒 | 1ms | 出站流量、VPC ENI |
| Azure Functions | 100万次调用 + 40万GB-秒 | 1ms(消费计划) | 出站流量、存储 |
| Google Cloud Functions | 200万次调用 + 40万GB-秒 | 100ms | 出站流量、网络 |
| 阿里云函数计算 | 100万次调用 + 40万GB-秒 | 1ms | 出站流量、公网 IP |
| 腾讯云云函数 | 100万次调用 + 40万GB-秒 | 1ms | 出站流量、VPC |
我个人经验是:如果函数执行时间很短(比如几十毫秒),AWS Lambda 的 1ms 计费粒度最划算。但如果函数经常跑几秒甚至几分钟,Google Cloud Functions 的 100ms 粒度反而可能更省钱——因为实际执行时间往往不是整百毫秒,平台会向上取整,但整体来看差别不大。
3.7 我的选择建议
说了这么多,到底怎么选?我给出几个场景化的建议:
- 如果你在海外做全球化业务:首选 AWS Lambda。生态最成熟,文档最全,社区最大。我遇到问题基本都能在 Stack Overflow 上找到答案。
- 如果你主攻 .NET 或企业级应用:Azure Functions 是亲儿子。Visual Studio 集成、Azure DevOps 流水线,体验一流。
- 如果你用 GCP 生态(如 BigQuery、Firebase):Google Cloud Functions 自然是最佳选择。尤其是移动端 + Firestore 的场景,配合 Cloud Functions 非常顺手。
- 如果你在国内做业务:阿里云函数计算和腾讯云云函数二选一。阿里云生态更全,腾讯云在微信小程序、企微集成上有独家优势。
- 如果你追求性价比:阿里云函数计算的免费额度比较大方,而且国内带宽便宜。腾讯云云函数偶尔有促销活动,可以关注。
一个小技巧:不要在一棵树上吊死。我见过一些团队用 AWS Lambda 做主业务,同时用阿里云函数计算做国内 CDN 回源处理。多平台混搭,有时候反而能发挥各自优势。
好了,这一章的内容就到这里。下一章我们会深入 AWS Lambda 的架构细节,聊聊 Firecracker 微VM 到底是怎么做到「秒级启动、强隔离」的。到时候见。