函数即服务 (FaaS) 是一种云计算模型,您可以在其中开发称为函数的模块化小型代码,云服务提供商会执行这些代码来响应特定事件。在此模型中,您只需专注于代码逻辑,而无服务器运行时会管理基础设施。云服务提供商负责处理物理硬件、操作系统和 Web 服务器软件。
这与传统的基于服务器的应用或单体式架构不同。在这些旧模型中,您通常需要管理一个持续运行的服务器,即使没有人使用您的应用也是如此。使用 FaaS 时,平台仅在特定事件触发时运行您的代码。这样,您就可以高效地构建应用,因为您只需在必要时才使用资源。
了解 FaaS 与平台即服务 (PaaS) 和基础设施即服务 (IaaS) 等其他云服务模式的比较情况很有帮助。FaaS 属于更广泛的“无服务器”类别,由提供方管理服务器,但它提供了不同级别的抽象。无服务器涵盖任何由提供方管理服务器的服务,例如数据库、存储或计算。FaaS 专门负责无服务器的计算部分,用于运行代码以响应事件。
特征 | FaaS(函数即服务) | PaaS(平台即服务) | IaaS(基础设施即服务) |
主要单位 | 单个函数(小代码段) | 整个应用 | 虚拟机 |
可伸缩性 | 即时按请求扩缩(包括缩减至零) | 速度较慢,根据配置的规则进行扩缩 | 手动或预配置的自动扩缩 |
定价模式 | 按执行时间(毫秒)付费 | 按运行资源(正常运行时间)付费 | 按分配的资源(大小/时间)付费 |
维护 | 无(由提供方管理一切) | 较低(提供商管理操作系统/运行时) | 较高(您负责管理操作系统、更新和补丁) |
适用场景 | 事件驱动型任务、粘合代码、数据处理 | Web 应用、长期运行的服务 | 旧式应用、复杂的基础设施 |
特征
FaaS(函数即服务)
PaaS(平台即服务)
IaaS(基础设施即服务)
主要单位
单个函数(小代码段)
整个应用
虚拟机
可伸缩性
即时按请求扩缩(包括缩减至零)
速度较慢,根据配置的规则进行扩缩
手动或预配置的自动扩缩
定价模式
按执行时间(毫秒)付费
按运行资源(正常运行时间)付费
按分配的资源(大小/时间)付费
维护
无(由提供方管理一切)
较低(提供商管理操作系统/运行时)
较高(您负责管理操作系统、更新和补丁)
适用场景
事件驱动型任务、粘合代码、数据处理
Web 应用、长期运行的服务
旧式应用、复杂的基础设施
FaaS 工作流可以简单高效。它通常依赖于事件驱动型模型,即操作会触发您的代码。
FaaS 用途广泛,非常适合许多现代应用架构。
您可以将复杂的应用分解为通过事件进行通信的小型独立组件。
FaaS 非常适合在用户上传图片后立即调整图片大小,或在数据到达时清理数据等任务。
您可以使用函数为移动应用背后的逻辑提供支持,或处理来自物联网 (IoT) 设备的数据。
对于可以拆分为许多小型同步作业的任务(如视频编码),FaaS 的运行效率非常高。
您可以使用在特定时间运行的函数来替换传统的计划任务,以执行维护或生成报告。
采用 FaaS 云技术可为开发者和企业带来诸多好处。
自动即时扩缩
您的应用可以处理流量突然激增的情况,从一个用户到数千个用户,无需您手动配置任何内容。
出色的费用控制(按用量付费)
您只需为代码运行的时间付费,与为空闲服务器付费相比,这可以显著节省成本。
加快开发速度
开发者可以快速编写代码并进行部署,而无需花费时间进行服务器管理或基础设施设置。
专注于应用代码,而非基础设施管理
团队可以将精力投入到为客户创造价值上,而不是修补服务器或管理操作系统。
高可用性和弹性
FaaS 平台通常会在多个可用区运行您的代码,因此,如果某个区域发生故障,您的应用仍可继续运行。
开发者在使用 FaaS 时面临的最常见问题之一是“冷启动”。当函数有一段时间没有运行时,云服务提供商会关闭环境以节省资源。下次有事件触发该函数时,系统需要设置环境并加载您的代码,因此会产生短暂的延迟。这种延迟称为冷启动,可能会拖慢应用的速度。
如果您的应用需要即时响应,可以按照以下步骤尽量缩短延迟时间。
函数即服务描述的是一种云计算模型,而 Cloud Run functions 是 Google Cloud 实现这一概念的产品。它是一种可扩缩的随用随付 FaaS 解决方案,让您无需执行任何服务器管理工作即可运行代码。
选择 Cloud Run functions 时,您将采用无服务器方法,由 Google Cloud 处理底层基础设施。您提供代码,平台负责管理执行环境、操作系统更新和自动扩缩功能。通过这种集成,您可以部署单一用途的函数来响应事件(例如 HTTP 请求或数据更改),而无需预配任何虚拟机。
该服务将函数部署的简易性与 Cloud Run 技术的强大功能相结合。开发者可以使用 Python、Node.js、Go、Java、.NET 和 Ruby 等语言构建事件驱动型应用。由于它在 Google 的强大基础设施上运行,因此您的函数可以自动从 0 个实例扩展到数千个实例,以满足需求。
如需详细了解函数即服务和无服务器计算,您可以探索以下资源。