技术选型指南

为满足不同场景下的用户需求,函数计算提供事件函数、Web函数、任务函数和GPU函数四种函数类型。针对不同开发流程,函数计算提供内置运行、自定义运行时和自定义镜像三种运行时环境。根据不同业务的资源利用率高低和用户对付费模式的预期差别,函数计算提供弹性实例和常驻实例两种实例类型。本文将介绍函数计算提供的功能特性及其适用场景,帮助您进行技术选型。

选型概述

使用函数计算时,您可以根据业务场景和技术栈偏好,选择合适的函数类型和运行环境,并结合实例使用类型优化性能和成本。

  • Web应用API服务:推荐使用Web函数结合自定义运行时,该函数支持多种流行的Web应用框架,可以通过浏览器访问,或由URL直接调用。

  • 文件处理数据流处理:推荐使用事件函数结合内置运行时。您可以配置事件触发,集成多种阿里云产品(如对象存储云消息队列 RocketMQ 版日志服务SLS等)。

  • Chatbot文生图AI推理场景:推荐使用GPU函数结合自定义镜像,基于流行AI项目(如ComfyUI、RAG、TensorRT等)的容器镜像,快速构建AI模型推理服务。

  • 异步任务:推荐使用任务函数结合内置运行时,处理定时任务、音视频转码等场景。

说明
  • 内置运行时自定义运行时都以代码包形式部署至函数,适合轻量级应用。

  • 容器化部署,需选择自定义镜像GPU函数仅支持使用自定义镜像

函数类型选型

对比项

事件函数

Web函数

任务函数

GPU函数

功能

用于处理文件和数据流,可以通过各类云产品的事件触发(如OSS触发器Kafka触发器SLS触发器)。

支持流行的Web应用框架,可以通过浏览器访问,或通过URL调用。

用于处理异步请求,能够追踪并保存异步调用各个阶段的状态。

支持流行AI项目(如Stable Diffusion WebUI、ComfyUI、RAG、TensorRT)的容器镜像,快速构建AI模型推理服务。

适用场景

  • 云产品集成:OSS实时文件处理、SLS日志加工等。

  • ETL数据加工:数据库数据清洗、消息队列处理等。

  • 快速构建流行Web框架应用SpringBootExpressFlask等。

  • 迁移已有的应用:HTML5网站、REST API、BFF、移动APP、小程序、游戏结算等。

  • 常规任务:定时任务、周期任务、脚本任务等。

  • 多媒体处理:音视频转码、直播录制、图片加工等。

  • 传统在线推理:CV视觉识别、NLP语言处理等。

  • AIGC模型推理:文生文、文生图、文生音频等。

运行时环境

推荐使用内置运行时

推荐使用自定义运行时

推荐使用内置运行时

仅支持自定义镜像

异步任务

默认关闭

默认关闭

默认开启

默认关闭

运行时环境选型

对比项

内置运行时

自定义运行时

自定义镜像

开发流程

按照函数计算定义的接口编写请求处理程序。

基于Web应用框架模板开发应用,通过公网访问地址即时看到结果。

将自定义镜像上传至ACR然后使用镜像,或者使用ACR中已有的镜像。

支持的实例类型

CPU实例

CPU实例

CPU实例和GPU实例

单实例多并发

不支持

支持

支持

冷启动

最快。代码包中不包含运行时,冷启动最快。

较快。代码包为HTTP Server,体积较大但无需拉取镜像,因此冷启动较快。

较慢。需要拉取镜像,冷启动较慢。

代码交付物格式

ZIP、JAR(Java)、文件夹

容器镜像

代码交付物大小限制

部分地域(如杭州)最大500 MB,其他地域最大100MB。

说明

您可以配置层添加依赖,以减少代码包体积。

  • CPU实例镜像大小不超过10 GB(未解压)。

  • GPU实例镜像大小不超过15 GB(未解压)。

说明

对于AI推理应用,您可以将大尺寸模型存储在NASOSS,以减少镜像体积。

支持的编程语言

Node.js、Python、PHP、Java、C#、Go

无限制

无限制

实例类型选型

针对CPU函数,仅支持弹性实例。针对GPU函数,您可以根据业务资源利用率、对延时敏感程度和对费用的稳定性要求,选择弹性实例或常驻实例,详细选型指引请参见以下流程图。

image
说明

仅支持为Ada、Ada.2、Ada.3、HopperXpu.1系列卡型的GPU函数绑定常驻实例。

弹性实例

如果设置函数的最小实例数为0,将按请求量自动弹性伸缩,无请求后实例自动回收,即按使用量计费,不使用不收费,能够做到最大程度降本。业务请求越频繁,资源利用率越高,相对虚拟机弹性的降本幅度越高。

是否存在冷启动

是。针对时延敏感业务,为了解决冷启动问题,可以设置最小实例数≥1,提前锁定弹性资源,当请求到达时,迅速唤醒实例执行请求。

计费说明(后付费

函数的使用费用由弹性实例(活跃)和弹性实例(闲置)费用构成,如果设置最小实例数≥1,建议开启闲置模式开关。弹性实例(闲置)状态下vCPU资源使用不收费,GPU资源使用仅收1/5费用,使用费用远远小于弹性实例(活跃)状态的费用。

关于弹性实例(活跃)和弹性实例(闲置)的场景划分,请参见弹性实例

常驻实例

仅适用于GPU函数。用户需提前购买常驻资源池,然后基于常驻资源池为指定函数分配指定数量和卡型的常驻实例,从而实现使用成本的可控与固定。适用于业务资源利用率高、时延要求高或对费用稳定性有较高要求的场景。

是否存在冷启动

否。使用常驻实例时,函数最多可以同时处理的请求数=被分配的常驻实例数×实例并发数,超出的请求将被流控,而未超出的请求,可以实现实时响应,彻底消除冷启动。

计费说明(预付费

函数费用包括已购买的所有常驻资源池的预付费费用。