阿里云函数计算:事件驱动的 Serverless

FreeGuideOnline 最新 2026-07-01

什么是阿里云函数计算

阿里云函数计算(Function Compute,简称 FC)是一款事件驱动的全托管 Serverless 计算服务。你只需要编写并上传代码,平台就会自动准备好计算资源,以弹性、可靠的方式运行你的代码。你无需管理服务器等基础设施,只需为代码运行期间消耗的资源付费。

  • 事件驱动:函数由多种事件源触发,例如 HTTP 请求、对象存储文件上传、消息队列新消息等。
  • 全托管:自动伸缩、负载均衡、日志监控、安全保障全部由平台处理。
  • 按需付费:只有函数真正运行时才产生费用,闲置时不收费。
  • 毫秒级计费:精确到 1 毫秒,资源利用率更高。

函数计算让开发者可以专注于业务逻辑,快速交付无服务器应用。


核心概念

服务与函数

函数计算通过“服务”来组织和管理“函数”。

  • 服务:是逻辑上的分组单元,类似于项目或微服务。同一服务下的函数共享配置,例如日志仓库、权限角色、VPC 网络等。
  • 函数:是运行的基本单元,包含一段代码、运行时环境、触发器和资源配置(如内存大小、超时时间)。每个函数只处理一种业务逻辑。

事件与触发器

函数不会无缘无故执行,而是被事件驱动。触发器负责将外部事件映射到具体函数。

  • 事件:是触发函数运行的数据,以 JSON 格式传递给函数。比如,一个 HTTP 请求的路径、请求头、请求体就是一次事件;对象存储上传完文件后产生的事件包含存储桶名称和文件对象键。
  • 触发器:是事件源与函数的绑定。配置好触发器后,一旦事件源产生匹配的事件,函数立刻被调用。常见的触发器类型:
    • HTTP 触发器:通过 URL 直接调用函数,适合搭建 API。
    • 定时触发器:按 cron 表达式周期性执行函数,适合数据备份、定时任务。
    • 对象存储 OSS 触发器:当文件上传、删除时自动处理,适合图片处理、音视频转码。
    • 日志服务 SLS 触发器:实时消费日志数据,适合日志清洗、异常告警。
    • 消息队列触发器:对接 MNS、Kafka 等,实现异步消息处理。

运行时和自定义容器

函数代码需要运行在特定的运行时环境中。函数计算预先提供了多种标准运行时:

  • Python 3.10 / 3.9 / 3.6
  • Node.js 16 / 14 / 12
  • Java 11 / 8
  • Go 1.x
  • PHP 7.2
  • .NET Core 3.1 / 2.1
  • 以及 Custom Runtime 和 Custom Container

如果你需要更灵活的环境,可以使用自定义运行时(Custom Runtime),上传任意语言编写的程序;或者使用自定义容器镜像(Custom Container),直接从容器镜像服务拉取镜像运行,完全自定义操作系统、库和工具。

弹性与实例

函数计算利用函数实例来执行代码。每个实例具有独立的内存、执行环境和临时磁盘空间。平台会根据请求数量自动创建或释放实例。

  • 预留实例:为了消除冷启动延迟,可以配置一定数量的常驻实例,立刻响应调用。
  • 按量实例:常规情况下,请求到来时由平台快速创建新实例,函数执行完毕后被销毁或保留一小段时间用于复用。
  • 实例并发:一个实例可以同时处理多个请求(目前支持的多请求并发度需要运行时配合),进一步提升资源利用率。

适用场景

  • Web 与 API 后端:直接用 HTTP 触发器暴露 RESTful API,不需要搭建服务器。
  • 数据 ETL 与实时处理:OSS 文件一上传,函数就触发进行数据转换、格式校验并存入数据库;或从消息队列拉取数据做流式处理。
  • 自动化运维:定时触发函数检查云资源,自动扩容、备份数据、生成报表。
  • 多媒体处理:用户上传图片或视频到 OSS,函数自动压缩、加水印、截图或转码。
  • AI 推理:函数集成深度学习模型,提供低延迟推理 API,无需维护 GPU 集群。
  • 物联网(IoT):设备上报数据到消息队列,函数进行解析、存储和规则引擎联动。

快速入门:第一个 HTTP 函数

下面通过一个 Node.js 例子,演示如何从零创建一个可通过 URL 访问的函数。你也可以使用 Python、Java 等语言。

步骤一:进入控制台并创建服务

  1. 登录阿里云函数计算控制台。
  2. 在左侧导航栏选择“服务及函数”,点击“创建服务”。
  3. 填写服务名称(例如 my-serverless-app),选择地域,其他可保持默认。点击“确定”完成服务创建。

步骤二:创建函数

  1. 进入刚刚创建的服务,点击“创建函数”。

  2. 选择“使用内置运行时创建”,函数名称填入 hello-world

  3. 运行时选择 Node.js 16

  4. 函数代码方式选择“在线编辑”,在代码编辑框输入以下内容:

    module.exports.handler = async (event, context) => {
      const name = event.queryParameters?.name || '世界';
      const body = JSON.stringify({
        message: `你好,${name}!欢迎使用函数计算。`,
        timestamp: Date.now()
      });
      return {
        statusCode: 200,
        headers: { 'Content-Type': 'application/json' },
        body
      };
    };
    
  5. 在“高级配置”中,将内存设为 128 MB,超时时间设为 10 秒,执行角色选择或创建一个有基本权限的 RAM 角色。

  6. 点击“创建”。

步骤三:配置 HTTP 触发器

  1. 在函数详情页,点击“触发器”标签,然后“创建触发器”。
  2. 选择“HTTP 触发器”。
  3. 认证方式选择“anonymous”(无需签名即可访问,仅适合测试)或“function”(需要鉴权,安全推荐)。
  4. 请求方法选择 GETPOST
  5. 点击“确定”。系统会为该触发器生成一个公网访问地址,格式类似:
    https://1234567890.cn-hangzhou.fc.aliyuncs.com/2016-08-15/proxy/my-serverless-app/hello-world/
    

步骤四:测试函数

在浏览器或使用 curl 访问触发器地址,并带上查询参数:

curl "https://你的触发器地址?name=阿里云"

预期返回:

{
  "message": "你好,阿里云!欢迎使用函数计算。",
  "timestamp": 1717001234567
}

开发与部署流程

本地开发与调试

函数计算提供多种工具帮助你在本地开发:

  • Funcraft:命令行工具,可以初始化项目、本地运行、部署函数。支持通过 fun local start 在本地模拟 HTTP 触发器。
  • Serverless Devs:函数计算推荐的 Serverless 应用全生命周期管理工具。支持 YAML 描述资源,提供 s local invoke 本地调用、s deploy 一键部署。
  • API 与 SDK:可使用 Python、Java 等 SDK 直接管理函数,适合集成进 CI/CD。

部署方式

  1. 控制台上传:适合简单测试,直接在代码编辑器中粘贴代码或上传 ZIP 包。
  2. 命令行部署:使用 fun deploys deploy 将本地代码打包上传。
  3. 容器镜像部署:编写 Dockerfile,构建镜像后推送到阿里云容器镜像服务,然后在创建函数时选择“使用容器镜像”,指定镜像地址。
  4. CI/CD 自动化:在代码仓库中配置流水线(如 GitHub Actions、阿里云效),在推送代码后自动构建并部署函数。

日志与监控

  • 函数计算自动将标准输出和错误日志集成到阿里云日志服务 SLS。
  • 在控制台函数详情页的“日志查询”中,可以实时查看每次调用的日志。
  • 在“监控图表”中可查看调用次数、执行时间、错误率、流量等关键指标。
  • 可设置告警规则,当错误率升高或延迟超过阈值时发送通知。

最佳实践建议

  • 无状态设计:函数实例可能被随时回收,不要依赖本地文件系统或实例内存保存状态。状态可保存在对象存储 OSS、表格存储 Tablestore 或数据库中。
  • 合理设置内存和超时:内存大小与 CPU 成正比,根据性能测试结果调整,避免资源浪费。同时为函数设置合理的超时时间,防止异常导致长时间运行。
  • 使用预留实例消除冷启动:对于延迟敏感的在线服务,可配置预留实例。配合按量实例实现成本与性能的平衡。
  • 细化职责:一个函数只做一件事情。通过工作流(如阿里云函数工作流 FnF)将它们编排成复杂的流程。
  • 环境变量管理配置:将数据库连接字符串、API 密钥等存储在函数配置的环境变量中,代码中通过 context.credentials 或环境变量读取,避免硬编码。

支付宝小程序云函数

如果你是支付宝小程序开发者,函数计算还提供了支付宝小程序云函数方案。在小程序端直接定义云函数,无需管理服务器即可快速实现后端逻辑。开发流程与标准函数计算类似,但在小程序 IDE 中内置了便捷的部署和调试支持,适合快速构建轻量级全栈应用。


总结

阿里云函数计算把基础设施的复杂性完全屏蔽,让开发者可以快速响应业务需求,用更少的代码、更低的管理成本构建弹性伸缩的应用。从简单的 Web API 到复杂的事件处理流水线,它都能提供合适的 Serverless 计算能力。接下来,你可以尝试编写自己的函数,结合 OSS、消息队列等服务,感受无服务器架构的便利。