本文以一个函数创建流程为例,为您介绍每个阶段涉及到的相关概念,方便您系统地了解函数计算。创建函数的具体操作,请参见使用事件函数处理云服务产生的事件。
FC函数创建流程
FC函数是函数计算的资源调度与运行的基本单位。FC函数由函数代码和函数配置构成。下图是创建FC函数的基本流程。
创建函数
在创建函数阶段,您可选择函数类型和匹配的运行环境,并上传函数代码到函数计算,其他参数都可在稍后的配置函数阶段根据具体情况配置。
函数选型
事件函数
选择事件触发如OSS触发器、Kafka触发器、SLS触发器等方式,按照函数计算定义的接口编写程序。更多信息,请参见创建事件函数。
Web函数
选择流行Web框架如Flask、ThinkPHP、Express、SpringBoot等,按照框架定义的接口编写程序。更多信息,请参见创建Web函数。
任务函数
选择任务模式处理异步请求,每个任务都将追踪状态且允许手动启停,推荐在定时任务、音视频处理、数据处理等离线场景使用。更多信息,请参见创建任务函数。
GPU函数
选择流行 AI 项目如 Stable Diffusion WebUI、ComfyUI、RAG、TensorRT等方式,推荐以镜像方式部署至函数计算。更多信息,请参见创建GPU函数。
运行环境
内置运行时
内置运行时是函数计算平台预定义的运行环境,必须按照函数计算定义的接口编写请求处理程序。内置运行时不支持单实例多并发场景,但冷启动最快,适合在基于事件触发的场景中使用,例如使用OSS 触发器、Kafka 触发器、SLS 触发器等方式。更多信息,请参见函数计算运行时。
事件(
event
)事件数据以 JSON 格式文档的形式传递给您的函数。运行时将事件转换为一个对象,并将该对象传递给函数的入口参数
event
。如果事件由另一项阿里云服务生成,则事件格式取决于生成该事件的服务。更多信息,请参见触发器Event格式。上下文(
context
)当函数计算运行您的函数时,会将上下文对象传递函数的入口参数
context
。该对象包含有关调用、服务、函数和执行环境等信息。更多信息,请参见上下文。
自定义运行时
自定义运行时支持Flask、ThinkPHP、Express、SpringBoot等主流Web框架,您只需按照框架定义的接口编写程序。针对自定义运行时,您的代码文件ZIP包是一个HTTP Server程序,您只需设置函数配置中的启动命令和启动参数完成HTTP Server的启动。更多信息,请参见基本原理。
自定义镜像
函数计算提供自定义镜像功能,开发者可以将容器镜像作为函数的交付物。您可将自定义镜像上传至ACR然后使用镜像,或者使用示例镜像。具体操作,请参见创建自定义镜像函数。
函数计算中,只有自定义镜像支持创建GPU函数。
版本
发布版本相当于为函数创建版本快照,版本快照包括函数代码及函数配置,不包括触发器、异步任务配置及预留策略等资源属性。版本类似于
Git
里的一个commit
,该commit
包含了一个或者多个代码文件及其配置变更,是当前仓库的一次快照。更多信息,请参见版本管理。别名
别名可以理解为指向特定函数版本的指针,使用别名访问函数时,函数计算会将别名解析为其指向的版本,调用方无需了解别名指向的具体版本。您可以利用别名来轻松实现发布、回滚以及灰度发布等功能。别名类似于
Git
里的tag
,可以将当前commit
标记为tag
,进而release
为一次业务迭代。更多信息,请参见别名管理。CPU实例
函数计算的基本实例,适用于各种突发流量和计算密集场景。更多信息,请参见实例类型及使用模式。
GPU实例
基于Turing架构的实例,将不同业务负载下沉至GPU硬件加速,使得业务处理效率更高。主要适用于音视频、AI人工智能和图像处理等场景。更多信息,请参见实例类型及使用模式。
配置函数
完成函数创建后,您可能需要根据业务需求调整以下配置项。
基础配置
触发器
某些阿里云服务可以使用触发器直接调用FC函数。这些服务将事件推送到函数计算,并在指定事件发生时立即调用该函数。更多信息,请参见触发器简介。
一个函数可具有多个触发器。每个触发器都可以作为一个客户端独立调用您的函数,函数计算传递到您的函数的每个事件仅具有一个触发器的数据。函数计算将事件文档转换为一个对象,并将该对象传递给函数处理程序。
运行时
函数计算通过使用运行时支持多种语言。运行时系统提供在执行环境中运行的语言特定环境。运行时在函数计算与函数之间中继调用事件、上下文信息和响应。更多信息,请参见运行时介绍。
环境变量
环境变量作为函数配置的一部分,以字符串键值对的方式存储,不同函数拥有独立的环境变量。您可以使用环境变量来调整函数的行为,而无需更新代码。更多信息,请参见配置环境变量。
层
层是可以包含其他代码或其他内容的
.zip
文件。层通常包含库、自定义运行时、数据或配置文件。函数计算提供官方公共层供您使用,同时也支持创建自定义层。一般来说,使用层具有以下优势:减小部署包的大小。
将所有函数依赖项放在一个层中,有助于减少函数代码部署包的大小,并加快代码的部署速度。
分离核心函数逻辑与依赖项。
借助层,您无需更新函数代码即可更新函数依赖项,反之亦然。这有助于将二者分离,并帮助您专注于函数逻辑。
在多个函数之间共享依赖项。
您可以将公共函数或依赖项放在层中,并将其添加到账户中任意数量的函数中。如果没有层,则需要在每个单独的部署包中包含相同的依赖项。
使用自定义镜像(Custom Container)的函数不支持添加层,您可以在创建自定义镜像函数时打包首选运行时系统、库和其他依赖项到容器映像。
权限
为函数配置权限通过配置函数角色来实现,函数计算平台会使用这个RAM角色(Role)来生成访问您的阿里云资源的临时密钥,并传递给您的代码。更多信息,请参见授予函数计算访问其他云服务的权限。
日志
函数计算支持与日志服务 SLS(Simple Log Service)进行集成,为函数配置日志后,函数计算会自动收集日志,并把日志投递到指定的日志库。更多信息,请参见配置日志。
网络
创建的函数默认可以访问公网,但无法访问VPC内的资源。如果您需要函数能够访问VPC内的资源,或允许指定的VPC来调用函数,那么需要手动为函数配置网络和权限。更多信息,请参见配置网络。
存储
预留实例
函数计算会为您创建预留模式的函数实例,并且在您将预留实例数设置为0之前预留实例会持续运行。因此,即使您的函数实例未执行任何请求,只要没有释放函数实例,您都需要为这些函数实例付费。更多信息,请参见配置预留实例。
异步配置
函数计算支持以任务模式执行异步请求。在任务模式下,函数计算系统会记录您的每个任务在各个阶段的执行状态,提供任务状态查询,任务排队数指标,任务去重,任务主动终止等功能。异步任务适用于长时执行任务。如果您的异步请求处理延时敏感,要求在百毫秒以下,或者您需要持续的每秒数千甚至更高的任务提交速度,那么异步任务模式不太合适。更多信息,请参见异步调用。
生命周期
函数实例会根据实时请求量动态创建或销毁,每个函数实例的生命周期包括实例构建(Creating)、请求调用(Invoke)和实例销毁(Destroy)三个阶段。更多信息,请参见配置实例生命周期。
健康检查
函数计算支持为Web函数和GPU函数实例设置周期性健康检查,避免请求消息被分配至异常实例而导致请求失败。更多信息,请参见配置实例健康检查。
DNS
自定义DNS功能适用于加速站点访问等场景,且只支持内置运行时和自定义运行时。更多信息,请参见配置自定义DNS。
自定义域名
您可以为函数或应用绑定自定义域名,实现通过固定的域名访问该函数或应用。您也可以将配置的自定义域名作为源站域名,为其添加CDN加速域名,使您的访问用户能够更加快速地读取所需内容,降低访问时延,提高服务质量。更多信息,请参见配置自定义域名。
调用函数
部署FC函数后,可以通过多种方式调用函数。例如函数计算控制台快速创建测试事件来调用函数、使用SDK调用函数、调用API直接调用函数、函数URL HTTP(S)端点、事件源触发等。以下是函数调用过程中涉及到的一些概念。
同步调用
事件被函数处理完成后直接返回结果。更多信息,请参见同步调用。
异步调用
事件被成功触发后立即返回响应结果,无需等待后台任务执行完成。函数计算系统会可靠地处理该消息,但不会返回具体的调用情况和函数执行状态。如您想获取异步调用结果,必须通过配置异步调用目标来实现。具体信息,请参见功能概览。
调用分析
调用分析功能是函数请求级别的执行状态汇总,开启调用分析功能后,系统会收集函数每次执行的指标信息。更多信息,请参见请求级别指标日志。
单实例并发数
单实例并发数是指单个函数实例同时可以处理的请求数。更多信息,请参见配置单实例并发度。
闲置模式
在预留模式下,开启闲置模式后,如果实例上没有正在执行任何请求,函数计算将冻结为实例分配的GPU资源或vCPU资源,将实例转为闲置状态,闲置状态实例的费用远远小于活跃状态实例,减少了预留模式的使用成本。
按量模式
按量模式下,函数计算系统自动为函数分配和释放实例。更多信息,请参见实例类型及使用模式。
预留模式
预留模式是将函数实例的分配和释放交由您管理。当您预留了函数实例,函数计算系统收到函数调用请求时,会优先将请求转发给您预留的函数实例。当函数请求的峰值超过预留的函数实例处理能力时,剩余的部分请求将会转发给您的按量模式的实例。更多信息,请参见实例类型及使用模式。
预留模式下的函数实例保持常驻状态,可以彻底消除冷启动对业务的影响。
为了解决预留模式配置的固定预留实例利用不充分问题,您可以设置预留模式实例的弹性伸缩功能,支持定时弹性伸缩和指标追踪弹性伸缩两种方案。
定时弹性伸缩
在指定时间将预留的函数实例量设定成需要的值。更多信息,请参见修改或删除预留实例并发。
指标追踪弹性伸缩
通过追踪监控指标实现对预留模式的函数实例进行动态伸缩。更多信息,请参见修改或删除预留实例并发。
实例数上限
当前函数最大的实例数上限。阿里云账号(主账号)在单个地域内默认的实例数上限为 300,您可以联系我们(钉钉群号:
64970014484
)申请调整此限制。
其他相关概念
标签
使用标签(Tag)对服务资源进行归类,便于搜索和资源聚合。您还可以通过标签功能将服务分组,实现不同角色对不同分组的服务拥有不同的操作权限。更多信息,请参见标签管理。
- 本页导读 (1)
- FC函数创建流程
- 创建函数
- 函数选型
- 运行环境
- 版本
- 别名
- CPU实例
- GPU实例
- 配置函数
- 基础配置
- 触发器
- 运行时
- 环境变量
- 层
- 权限
- 日志
- 网络
- 存储
- 预留实例
- 异步配置
- 生命周期
- 健康检查
- DNS
- 自定义域名
- 调用函数
- 同步调用
- 异步调用
- 调用分析
- 单实例并发数
- 闲置模式
- 按量模式
- 预留模式
- 实例数上限
- 其他相关概念
- 标签