2. 主流云平台对比:AWS Lambda、Azure Functions、Google Cloud Functions、阿里云函数计算
好,咱们直接切入正题。做无服务器架构,选平台是第一道坎。市面上主流的四家——AWS Lambda、Azure Functions、Google Cloud Functions、阿里云函数计算,我都深度用过。说实话,没有绝对的好坏,关键看你的业务场景和团队技术栈。
我个人习惯先看生态,再看价格,最后看冷启动。为什么?因为生态决定了你能多快把东西搭起来,价格决定了你月底会不会被账单吓到,冷启动则直接影响用户体验。下面我一个个聊。
2.1 AWS Lambda:老大哥,生态最全
AWS Lambda 是第一个吃螃蟹的,2014年就推出了。到现在,它依然是市场份额最大的。我在项目中遇到过不少客户,上来就问「Lambda 能不能跑 Python 3.12?」——能,而且支持得最早。
核心优势:
- 事件源最丰富:S3、DynamoDB、Kinesis、SQS、API Gateway……几乎 AWS 所有服务都能触发 Lambda。你想想看,这意味着你基本不用写胶水代码。
- 工具链成熟:SAM、CDK、Serverless Framework,随便选一个都能快速上手。
- 冷启动优化:有 Provisioned Concurrency,虽然要额外花钱,但能解决延迟敏感场景。
缺点:
- 定价略复杂:除了请求次数和运行时长,还要算 Provisioned Concurrency、弹性网卡等费用。我见过一个团队,一个月 Lambda 账单 2000 美元,结果发现一半是弹性网卡的钱。
- 冷启动依然存在:尤其是 Java 和 .NET 运行时,冷启动能到 5 秒以上。嗯,这里要注意,如果你用 Java,建议配合 SnapStart。
避坑指南:我曾经帮一个客户排查 Lambda 超时问题,发现他用了 10GB 的 Lambda 函数,但实际只用了 512MB 内存。Lambda 的 CPU 分配和内存成正比,内存越大 CPU 越强。所以,如果你的函数是 CPU 密集型,别省内存,否则反而更慢更贵。
2.2 Azure Functions:.NET 开发者的首选
Azure Functions 是微软家的,和 Visual Studio、Azure DevOps 集成得非常好。如果你团队主力是 C#,那 Azure Functions 会让你很舒服。
核心优势:
- .NET 原生支持:从 .NET Core 3.1 到 .NET 8,支持力度远超其他平台。
- 企业级特性:Durable Functions 做工作流编排,App Insights 做监控,都是现成的。
- 混合部署:支持在本地运行,也支持在 Azure Stack 上部署,适合有混合云需求的企业。
缺点:
- 冷启动比 Lambda 慢:尤其是消费计划(Consumption Plan),冷启动经常 3-5 秒。我建议用 Premium Plan,虽然贵点,但能保持实例常驻。
- 非微软语言支持一般:Python 和 Node.js 的支持虽然也有,但文档和社区资源明显不如 AWS。
个人经验:如果你用 Azure Functions,记得开启「Always On」功能(仅限 App Service Plan)。否则,函数在空闲 20 分钟后会被卸载,下次调用时冷启动会让你怀疑人生。
2.3 Google Cloud Functions:轻量级,适合事件驱动
Google Cloud Functions(GCF)是四家里最「轻」的。它的设计哲学很简单——你写代码,我跑,别管别的。我个人很喜欢它的简洁性,但功能也确实少一些。
核心优势:
- 与 GCP 服务深度集成:Cloud Storage、Pub/Sub、Firestore,触发起来非常自然。
- 冷启动相对较快:因为 Google 用了 gVisor 容器沙箱,启动速度比 AWS 和 Azure 快 30% 左右。
- 定价透明:按请求次数和计算时间计费,没有隐藏费用。
缺点:
- 运行时支持少:Node.js、Python、Go、Java、Ruby、PHP,就这些。.NET 和 Rust 暂时没有官方支持。
- 超时限制严格:HTTP 函数最长 60 分钟,后台函数最长 9 分钟。如果你有长时间运行的任务,得用 Cloud Run 或 GKE。
注意:Google Cloud Functions 的并发限制是 1000(每个区域)。如果你突然有大量请求,可能会被限流。我曾经在双十一期间帮客户压测,结果发现 GCF 的并发上限比 Lambda 低不少。建议提前申请配额提升。
2.4 阿里云函数计算:国内首选,性价比高
阿里云函数计算(FC)是国内最早推出的无服务器产品。如果你主要服务国内用户,FC 是绕不开的选择。它的优势在于对国内生态的适配。
核心优势:
- 国内节点多:华东、华北、华南、香港、新加坡,延迟低。
- 与阿里云生态集成:OSS、RDS、TableStore、CDN,触发和联动都很方便。
- 冷启动优化:有「预留实例」功能,可以指定常驻实例数,避免冷启动。
- 价格便宜:免费额度高(每月 100 万次调用 + 400,000 GBs),超出后单价也比 AWS 低 30% 左右。
缺点:
- 国际支持弱:海外节点少,文档英文版更新慢。
- 工具链不如 AWS 成熟:虽然也有 Funcraft、Serverless Devs,但社区插件和教程相对少。
避坑指南:我曾经用阿里云 FC 做视频转码,结果发现默认的 512MB 内存根本不够用。视频解码需要大量内存,建议至少 1GB。另外,FC 的临时磁盘空间只有 512MB,如果你要处理大文件,记得挂载 NAS。
2.5 横向对比:一张表说清楚
| 特性 | AWS Lambda | Azure Functions | Google Cloud Functions | 阿里云函数计算 |
|---|---|---|---|---|
| 推出时间 | 2014 | 2016 | 2017 | 2017 |
| 支持语言 | Python, Node.js, Java, Go, Ruby, .NET, Rust (自定义) | C#, Python, Node.js, Java, PowerShell | Node.js, Python, Go, Java, Ruby, PHP | Python, Node.js, Java, Go, PHP, .NET Core |
| 最大内存 | 10GB | 1.5GB (消费计划) / 14GB (高级计划) | 8GB | 3GB |
| 超时限制 | 15 分钟 | 10 分钟 (消费计划) / 无限 (高级计划) | 60 分钟 (HTTP) / 9 分钟 (后台) | 10 分钟 (同步) / 24 小时 (异步) |
| 冷启动优化 | Provisioned Concurrency | Premium Plan / Always On | 无(但启动快) | 预留实例 |
| 免费额度 | 100 万次/月 + 400,000 GBs | 100 万次/月 + 400,000 GBs | 200 万次/月 + 400,000 GBs | 100 万次/月 + 400,000 GBs |
| 国内节点 | 北京、上海、宁夏、香港 | 北京、上海、香港 | 无(需用香港或新加坡) | 华东、华北、华南、香港 |
2.6 我的选择建议
说了这么多,到底选哪个?我个人的经验是:
- 如果你在 AWS 生态里,或者需要最丰富的集成,选 Lambda。别犹豫,它最稳。
- 如果你团队主力是 .NET,或者公司已经用了 Azure,选 Azure Functions。别为了省几百块钱去折腾其他平台,团队效率更重要。
- 如果你做轻量级事件处理,或者预算有限,选 Google Cloud Functions。它的简洁和冷启动速度是亮点。
- 如果你主要服务国内用户,或者想省钱,选阿里云函数计算。性价比确实高,而且国内延迟低。
最后说一句:别迷信任何一个平台。我见过不少团队,一开始选了 Lambda,后来因为成本问题迁移到阿里云。也见过从 Azure 迁移到 AWS 的。关键是你的业务需求和技术栈。选一个你团队最熟悉的,比选一个「理论上最好」的更重要。