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 没那么神秘。