本地开发
Cloud Functions 支持多种在标准部署环境之外运行函数的方法。这特别适合迭代开发,以及在部署之前测试函数的情况。
使用场景
无需部署函数即可运行函数的能力可以简化本地测试、数据存放区域限制合规性以及多云部署。
本地测试
每次更改后,通过重新部署函数来测试函数都需要等待部署。相比之下,直接在开发环境中测试函数可以缩短迭代测试周期。
如需详细了解测试,请参阅在部署 Cloud Functions 函数之前先对其进行测试页面。
数据存放区域限制
在某些情况下,法规或政策可能会要求将数据保存在 Cloud Functions 本身无法访问的特定地理、组织或网络边界内。
如果符合数据局部限制的平台与 Cloud Functions 的一个抽象层兼容,您可以直接在该平台上基于这些层运行您的函数。
多云部署
多云函数部署是既定模式,可缓解可靠性关键环境中的停机风险。将函数部署到 Cloud Functions 本身之外的环境,可以降低应用发生计划外停机的风险。
实现选项
在设置专属函数托管环境之前,您需要进行以下两个关键选择:
- 您想使用哪个抽象层。
- 您将运行的函数类型。
抽象层
Cloud Functions 本身使用多层架构,其中大部分是开源的。借助这些开源组件,您可以在其他平台上运行针对 Cloud Functions 设计的代码。
此架构中可在 Cloud Functions 基础架构外部运行的两个组件是 Functions 框架和 Google Cloud CLI 函数模拟器。本文档介绍了其中每个层的用途以及它们如何组合在一起。
下图显示了 Cloud Functions、Cloud Run 和其他基于容器的平台上函数部署的典型布局:
事件类型
Cloud Functions 有两种主要函数:
HTTP 函数可以由任意 HTTP 请求(例如 webhook)触发,而事件驱动型函数则接收由其他 Google Cloud 产品生成的事件。
选择抽象层
您可以使用 Functions 框架或 Functions 模拟器在本地运行函数。
Functions 框架是 Cloud Functions 中使用的一组开源库,用于将传入的 HTTP 请求解组为特定于语言的函数调用。您可以使用它们将您的函数转换为可在本地运行的 HTTP 服务。
Functions 模拟器使用云原生 Buildpack 和 Docker 来封装由 Functions 框架创建的 HTTP 服务,并将其构建成可运行的容器,然后在基于 Cloud Functions 函数容器的架构上运行。
这两种方式各有利弊:
- 基于 Functions 框架的环境通常具有较低的资源需求
- Functions 框架不需要底层容器化软件(例如 Docker)
- 基于 Functions 框架的环境需要底层语言基础架构(例如软件包管理系统和语言运行时)
- Functions 模拟器会镜像生产命令,例如调用和部署。
- Functions 模拟器能够以很高的准确度模拟生产环境中部署的函数的执行情况。
在本地运行函数
Functions 框架和 Functions 模拟器都会向您的函数转发 HTTP 请求。
如需详细了解如何使用 Functions 框架在本地运行函数,请参阅运行 Functions 框架。
如需详细了解如何使用 Functions 模拟器在本地运行函数,请参阅使用 Functions 模拟器运行函数。