本地开发

Cloud Run functions 支持多种在标准部署环境之外运行函数的方法。这特别适合迭代开发,以及在部署之前测试函数的情况。

使用场景

无需部署函数即可运行函数的能力可以简化本地测试、数据存放区域限制合规性以及多云部署。

本地测试

每次更改后,通过重新部署函数来测试函数都需要等待部署。相比之下,直接在开发环境中测试函数可以缩短迭代测试周期。

如需详细了解测试,请参阅在部署 Cloud Run functions 函数之前先对其进行测试。

数据存放区域限制

在某些情况下,法规或政策可能会要求将数据保存在 Cloud Run functions 本身无法访问的特定地理位置、组织或网络边界内。

如果符合数据存放位置限制的平台与 Cloud Run functions 的一个抽象层兼容,则可以直接在相应平台上基于这些层运行您的函数。

多云部署

多云函数部署是既定模式,可缓解可靠性关键环境中的停机风险。将函数部署到 Cloud Run functions 本身之外的环境,可以降低应用发生计划外停机的风险。

实现选项

在设置专属函数托管环境之前,您需要进行以下两个关键选择:

  • 您想使用哪个抽象层。
  • 您将运行的函数类型。

抽象层

Cloud Run functions 本身使用多层架构,其中大部分是开源的。借助这些开源组件,您可以在其他平台上运行针对 Cloud Run functions 设计的代码。

此架构中可在 Cloud Run functions 基础设施外部运行的两个组件是 Functions 框架和 Functions Emulator。本文档介绍了其中每个层的用途以及它们如何组合在一起。

下图展示了 Cloud Run functions、Cloud Run 和其他基于容器的平台上函数部署的典型布局:

函数封装布局:函数、Functions 框架、Buildpack、主机平台

事件类型

Cloud Run functions 有两种主要函数:

HTTP 函数可以由任意 HTTP 请求(例如 webhook)触发,而事件驱动型函数则接收由其他 Google Cloud 产品生成的事件。

选择抽象层

您可以使用 Functions 框架或 Functions 模拟器在本地运行函数。

Functions 框架是 Cloud Run functions 中使用的一组开源库,用于将传入的 HTTP 请求解组为特定于语言的函数调用。您可以使用它们将您的函数转换为可在本地运行的 HTTP 服务。

Functions 模拟器使用云原生 Buildpack 和 Docker 来封装由 Functions 框架创建的 HTTP 服务,并将其构建成可运行的容器,然后在基于 Cloud Run functions 容器的架构上运行。

这两种方式各有利弊:

  • 基于 Functions 框架的环境通常具有较低的资源需求
  • Functions 框架不需要底层容器化软件(例如 Docker)
  • 基于 Functions 框架的环境需要底层语言基础架构(例如软件包管理系统和语言运行时)
  • Functions 模拟器会镜像生产命令,例如调用和部署。
  • Functions 模拟器能够以很高的准确度模拟生产环境中部署的函数的执行情况。

在本地运行函数

Functions 框架和 Functions 模拟器都会向您的函数转发 HTTP 请求。

如需详细了解如何使用 Functions 框架在本地运行函数,请参阅运行 Functions 框架。

如需详细了解如何使用 Functions 模拟器在本地运行函数,请参阅使用 Functions 模拟器运行函数。