函数类型选型
本文介绍函数工作流支持的函数类型的适用场景及差异,供您进行函数类型选型。
函数选型建议
为满足不同场景下的用户需求,函数工作流支持通过在线编写代码、上传代码文件或者使用容器镜像,创建事件函数和HTTP函数,且支持使用GPU计算资源。
在使用函数工作流时,可以根据业务场景和技术栈偏好,选择合适的函数类型和运行时。常见应用场景的函数选型建议请参考表1。
应用场景 |
函数选型建议 |
说明 |
---|---|---|
Web应用和API服务 |
使用代码创建HTTP函数 |
HTTP函数支持主流Web应用框架,可以通过浏览器访问,或由URL直接调用。 |
文件处理和数据流处理 |
结合内置运行时创建事件函数 |
事件函数可以配置事件触发,集成了多种华为云产品(如对象存储服务OBS、分布式消息服务 RabbitMQ 版、云日志服务LTS等)。 |
Chatbot和文生图等模型推理场景 |
结合自定义镜像创建HTTP函数并启用GPU |
使用基于流行AI项目(如Stable Diffusion、ComfyUI、Ollama等)的容器镜像创建HTTP函数,启用GPU快速构建AI模型推理服务。 |
定时任务和音视频转码等异步任务场景 |
结合内置运行时创建事件函数 |
事件函数可以配置事件触发,能够通过特定事件或定时触发来调用关联函数。 |
函数类型选型分析
关于事件函数与HTTP函数的具体分析,请参考表2。
对比项 |
事件函数 |
HTTP函数 |
---|---|---|
功能 |
用于处理文件和数据流,可以通过各类云产品的事件触发(如基于EG的OBS应用事件源触发器、Kafka触发器、LTS触发器等),以及用于处理异步请求,能够追踪并保存每个异步调用的状态。 |
支持流行的Web应用框架和AI流行项目,可以通过浏览器访问,或通过URL调用。 |
适用场景 |
|
|
运行环境 |
推荐使用内置运行时。 |
推荐使用定制运行时或自定义镜像。 |
函数运行环境选型分析
关于函数运行环境的具体分析,请参考表3。
对比项 |
内置运行时 |
定制运行时 |
自定义镜像 |
---|---|---|---|
开发流程 |
根据函数工作流定义的函数执行入口编写请求处理程序。 |
基于Web应用框架模板开发应用,通过公网访问地址即时看到结果。 |
将自定义镜像上传至SWR然后使用镜像,或者使用SWR中已有的镜像。 |
支持的实例类型 |
CPU实例 |
CPU实例和GPU实例 |
CPU实例和GPU实例 |
单实例多并发 |
不支持 |
支持 |
支持 |
冷启动 |
最快。 代码包中不包含运行时,因此冷启动最快。 |
较快。 代码包是一个HTTP Server程序,体积较大,但不需要拉取SWR容器镜像,因此冷启动会较快。 |
较慢。 需要拉取镜像,因此冷启动较慢。 |
代码文件大小限制 |
代码包大小不超过100MB或500MB,具体请参见代码部署包大小限制说明。 |
未解压的镜像大小不超过10 GB。 |
|
代码文件格式 |
ZIP、JAR(Java) |
容器镜像 |
|
支持的编程语言 |
Node.js、Python、PHP、Java、C#、Go |
无限制 |
无限制 |
通过控制台创建函数
通过函数工作流控制台,支持创建以下函数。
FunctionGraph提供多种场景的函数模板,在使用函数模板创建函数时,能够实现代码与环境变量的自动填充,快速构建函数应用。如您的需求可由函数模板满足,如图4所示,可以选择使用函数模板创建函数。