为满足不同场景下的用户需求,函数计算提供事件函数、Web函数、任务函数和GPU函数四种函数类型。本文介绍函数计算支持的函数类型的适用场景及差异,供您进行技术选型。
选型分析
函数类型选型
对比项 | 事件函数 | Web函数 | 任务函数 | GPU函数 |
适用场景 | 基于各个语言的流行Web应用框架(Java SpringBoot、Node.js Express、Python Flask、Golang Gin等),快速构建Web应用,或者迁移已有的框架应用。 | 对函数发起异步调用,且需要追踪并保存异步调用各个阶段的状态,可以选择创建任务函数。 | 使用流行AI项目(Stable Diffusion WebUI、ComfyUI、RAG、TensorRT等)的容器镜像创建GPU实例,快速构建AI模型推理服务。 | |
运行时环境 | 推荐使用函数计算运行时 | 推荐使用自定义运行时 | 推荐使用函数计算运行时 | 仅支持自定义容器运行环境 |
异步任务 | 默认关闭 | 默认关闭 | 默认开启 | 默认关闭 |
函数运行环境选型
对比项 | 内置运行时 | 自定义运行时 | 自定义容器运行环境 |
开发流程 | 按照函数计算定义的接口编写请求处理程序。 | 基于Web应用框架模板开发应用,通过公网访问地址即时看到结果。 | 将自定义镜像上传至ACR然后使用镜像,或者使用ACR中已有的镜像。 |
支持的实例类型 | CPU实例 | CPU实例 | CPU实例和GPU实例 |
单实例多并发 | 不支持 | 支持 | 支持 |
冷启动 | 最快。代码包中不包含运行时,所以冷启动最快。 | 较快。代码包是一个HTTP Server程序,体积较大,但不需要拉取ACR容器镜像,所以冷启动会较快。 | 较慢。需要拉取镜像,所以冷启动较慢。 |
代码交付物大小限制 | 代码包大小不超过100 MB或500 MB,具体请参见代码部署包大小限制说明。 |
| |
代码交付物格式 | ZIP、JAR(Java)、文件夹 | 容器镜像 | |
支持的编程语言 | Node.js、Python、PHP、Java、C#、Go | 无限制 | 无限制 |
通过控制台创建函数
事件函数
如果您想通过事件触发(OSS触发器、Kafka触发器、SLS触发器等)来调用关联函数,请参见创建事件函数。推荐您选择内置运行时作为运行环境。
Web函数
如果您想基于各个语言的流行框架(Java SpringBoot、Node.js Express、Python Flask、Golang Gin等)编写程序,请参见创建Web函数。推荐您选择自定义运行时作为运行环境。
任务函数
如果您想对函数发起异步调用,且需要追踪并保存异步调用各个阶段的状态,可以选择创建任务函数。任务函数默认开启任务模式,您可以使用任务模式提交、查看、停止和重试异步任务。详情参见创建任务函数。推荐您选择内置运行时作为运行环境。
GPU函数
如果您想使用流行AI项目(Stable Diffusion WebUI、ComfyUI、RAG、TensorRT等)的容器镜像创建GPU实例,请使用GPU函数。具体操作,请参见创建GPU函数。GPU函数仅支持自定义容器运行环境。