2、主流平台概览:AWS Lambda、Azure Functions、阿里云函数计算、腾讯云云函数
说到 Serverless,很多人第一反应就是「哪个平台好用?」。说实话,这个问题我当年也纠结过。2017 年我第一次接触函数计算,选型时看了好几家,最后发现——没有最好的平台,只有最合适的场景。
今天我就带你过一遍四个主流平台:AWS Lambda、Azure Functions、阿里云函数计算、腾讯云云函数。我会从实际使用的角度,聊聊它们各自的特点、坑点,以及我个人的一些偏好。
2.1 AWS Lambda:老大哥,生态最全
AWS Lambda 是 Serverless 的鼻祖。2014 年推出,到现在已经快十年了。我最早接触的就是它,那时候文档还不太全,踩了不少坑。
核心特点:
- 支持语言多:Node.js、Python、Java、Go、Ruby、.NET,还有自定义运行时
- 触发源丰富:S3、DynamoDB、API Gateway、SQS、SNS……几乎 AWS 所有服务都能触发
- 冷启动时间:Java 和 .NET 比较慢,Python 和 Node.js 快一些
我个人习惯:生产环境用 Python 或 Node.js,冷启动控制在 200ms 以内。Java 虽然性能好,但冷启动太慢,不适合对延迟敏感的场景。
避坑指南:
- 我曾经遇到过 Lambda 超时的问题。默认超时是 3 秒,如果你处理大文件或调用外部 API,很容易超时。记得在控制台或代码里把超时时间调大,最大可以到 15 分钟。
- 还有一个坑:Lambda 的临时存储只有 512MB。如果你要处理大文件,得挂载 EFS。
2.2 Azure Functions:微软生态的利器
Azure Functions 是微软家的。如果你公司用的是 Azure 全家桶,那它很合适。我有个客户是做企业级应用的,他们从 .NET 迁移到 Serverless,选的就是 Azure Functions。
核心特点:
- 与 Visual Studio 深度集成:写代码、调试、部署一条龙
- 支持多种编程语言:C#、Java、JavaScript、Python、PowerShell
- 消费计划(Consumption Plan)和高级计划(Premium Plan)两种模式
小技巧:如果你用 C# 开发,Azure Functions 的体验是最好的。Visual Studio 里可以直接创建函数项目,本地调试完一键发布。我试过其他平台,没这么顺滑。
我个人觉得:Azure Functions 的文档写得不错,尤其是中文文档,比 AWS 的友好。但它的冷启动比 Lambda 稍慢,尤其是 C# 函数。
避坑指南:
- 我曾经在 Azure Functions 里用 Python,发现它不支持原生的异步处理。后来查了文档,才知道要手动配置。嗯,这点不如 Lambda 方便。
- 还有,Azure Functions 的计费模型有点复杂。消费计划按执行次数和资源消耗计费,高级计划按预配的实例计费。选错了,账单会吓到你。
2.3 阿里云函数计算:国内首选,中文友好
阿里云函数计算(FC)是国内用得最多的 Serverless 平台。我最近几个项目都在用,说实话,体验比前几年好多了。
核心特点:
- 支持语言:Node.js、Python、Java、Go、PHP、.NET Core
- 触发源:OSS、API Gateway、日志服务、定时触发器、MNS 等
- 冷启动优化:有预留实例功能,可以提前预热
我建议:如果你的业务主要在国内,优先考虑阿里云 FC。原因很简单——中文文档全,社区活跃,遇到问题能快速找到答案。AWS Lambda 虽然强,但中文资料少,出了问题只能翻英文论坛。
避坑指南:
- 我曾经在阿里云 FC 上部署了一个图像处理函数,结果发现临时存储空间不够。默认是 512MB,处理大图会报错。后来我挂载了 NAS,才解决。
- 还有一个坑:阿里云 FC 的日志默认输出到日志服务(SLS),但 SLS 是收费的。如果你只是调试,建议先关掉日志,或者用本地日志。
2.4 腾讯云云函数:后起之秀,性价比高
腾讯云云函数(SCF)是后起之秀。我去年帮一个创业公司做选型,对比了阿里云和腾讯云,最后选了 SCF。为什么?因为便宜。
核心特点:
- 支持语言:Node.js、Python、Java、Go、PHP
- 触发源:COS、API Gateway、CKafka、定时触发器
- 与微信生态集成:可以直接对接微信小程序、公众号
小技巧:如果你做微信小程序的后端,腾讯云 SCF 是天然的选择。它跟微信的 API 网关无缝集成,省去了很多配置工作。我做过一个小程序项目,从开发到上线只用了两周。
我个人觉得:腾讯云 SCF 的冷启动比阿里云稍快,但文档质量一般。有些功能文档写得不清楚,得靠猜。不过它的免费额度很慷慨,小项目基本不花钱。
避坑指南:
- 我曾经在 SCF 里用 Python 的第三方库,发现有些库装不上。后来才知道,SCF 的 Python 环境是精简版的,缺少一些系统依赖。解决办法是用 Docker 打包。
- 还有,SCF 的日志查询不如阿里云方便。阿里云 SLS 可以实时搜索,SCF 的日志要等几分钟才能查到。
2.5 平台对比:一张表看懂
说了这么多,我整理了一张对比表。你选型的时候可以参考。
| 特性 | AWS Lambda | Azure Functions | 阿里云 FC | 腾讯云 SCF |
|---|---|---|---|---|
| 推出时间 | 2014 | 2016 | 2017 | 2018 |
| 支持语言 | 多(6+) | 多(5+) | 多(6+) | 中(5种) |
| 冷启动 | 快(Python/Node) | 中等 | 中等 | 快 |
| 触发源 | 极丰富 | 丰富 | 丰富 | 中等 |
| 中文文档 | 一般 | 好 | 好 | 中等 |
| 免费额度 | 100万次/月 | 100万次/月 | 100万次/月 | 200万次/月 |
| 适合场景 | 全球化、复杂业务 | 企业级、.NET生态 | 国内业务、中文用户 | 微信生态、小项目 |
2.6 我的选型建议
你可能会问:「那我到底该选哪个?」
说实话,没有标准答案。但我可以给你几个参考方向:
- 如果你做全球化业务:选 AWS Lambda。它的生态最全,全球节点最多,遇到问题社区资源也最丰富。
- 如果你公司用微软技术栈:选 Azure Functions。C# 开发者用起来最顺手,Visual Studio 集成无敌。
- 如果你做国内业务:选阿里云 FC。中文文档好,社区活跃,遇到问题能快速解决。
- 如果你做微信小程序:选腾讯云 SCF。跟微信生态无缝集成,免费额度也够用。
注意:不要盲目追求大平台。我见过一个团队,业务全在 AWS 上,但用户都在国内,结果延迟高、成本也高。后来迁移到阿里云,成本降了 30%,延迟降了一半。
嗯,平台选型就聊到这里。下一章我会带你实战——用 AWS Lambda 写一个简单的函数,从零开始部署。到时候你会看到,其实 Serverless 没那么神秘。