你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure Functions Flex Consumption 计划托管

Flex Consumption 是基于 Linux 的 Azure Functions 托管计划,它基于 Consumption 按使用付费的无服务器计费模型。 它通过引入专用网络、实例内存大小选择和基于无服务器模型的快速/大规模横向扩展功能,为你提供了更大的灵活性和可自定义性。

重要

Flex 消耗计划目前为预览版。 有关使用此托管计划时当前限制的列表,请参阅“注意事项”。 有关预览期间计费的最新信息,请参阅“计费”

可以查看 Flex Consumption 计划示例存储库中 Flex Consumption 计划功能的端到端示例。

好处

Flex Consumption 计划基于 Consumption 计划的优势,其中包括动态缩放和基于执行的计费。 借助 Flex Consumption,还可以获得以下额外功能:

此表可帮助你将 Flex Consumption 的功能与 Consumption 托管计划直接进行比较:

功能 消耗 Flex Consumption
缩放到零 ✅ 是 ✅ 是
缩放行为 事件驱动 事件驱动(快速)
虚拟网络 ❌ 不支持 ✅ 受支持
专用计算(缓解冷启动问题) ❌ 无 ✅ 始终就绪的实例(可选)
计费 仅执行时间 执行时间 + 始终就绪的实例
横向扩展实例(最大值) 200 1000

有关 Flex Consumption 计划与 Consumption 计划和其他所有计划和托管类型的完整比较,请参阅函数缩放和托管选项

虚拟网络集成

Flex Consumption 通过添加对虚拟网络集成的支持,扩展了 Consumption 计划的传统优势。 应用在 Flex Consumption 计划中运行时,可以连接到在虚拟网络中保护的其他 Azure 服务。 尽管如此,你仍可以利用无服务器计费和缩放,以及 Flex Consumption 计划的规模和吞吐量优势。 有关详细信息,请参阅“启用虚拟网络集成”

实例内存

在 Flex Consumption 计划中创建函数应用时,可以选择运行应用的实例的内存大小。 请参阅“计费”,了解实例内存大小如何影响函数应用的成本。

目前,Flex Consumption 同时提供以下实例内存大小选项:2,048 MB 和 4,096 MB。

确定要与应用一起使用的实例内存大小时,需要考虑以下事项:

  • 2048 MB 实例内存大小是默认值,应该用于大多数情况。 对于应用需要更高并发能力或更高处理能力的场景,请使用 4,096 MB 实例内存大小。 有关详细信息,请参阅“配置实例内存”
  • 你可以随时更改实例内存大小。 有关详细信息,请参阅“配置实例内存”
  • 实例资源在函数代码和 Functions 主机之间共享。
  • 实例内存越大,每个实例可以处理更多并发执行或更密集的 CPU 或内存工作负载。 特定的缩放决策适用于特定工作负载。
  • HTTP 触发器的默认并发取决于实例内存大小。 有关详细信息,请参阅 HTTP 触发器并发
  • 可用的 CPU 和网络带宽与特定实例大小成正比。

始终就绪实例

Flex Consumption 包括一项始终就绪的功能,可用于选择始终运行并分配给每个按函数缩放组或函数的实例。 对于需要始终准备好处理请求的最小实例数的情况(例如,减少应用程序的冷启动延迟),这是一个不错的选择。 默认值为 0(零)。

例如,如果为 HTTP 函数组始终设置为 2,平台将让两个实例始终运行,并将这两个实例分配给应用中的 HTTP 函数。 这些实例正在处理函数执行,但根据并发设置,平台将扩展到这两个实例之外的按需实例。

若要了解如何配置始终就绪的实例,请参阅“设置始终就绪的实例计数”

按函数缩放

并发是确定 Flex Consumption 函数应用缩放方式的一个关键因素。 为了提高具有各种触发器类型的应用的缩放性能,Flex Consumption 计划为按函数缩放应用提供了一种更确定的方式。

按函数缩放行为是托管平台的一部分,因此你无需配置应用或更改代码。 有关详细信息,请参阅《事件驱动缩放》一文中的“按函数缩放”

在按函数缩放中,HTTP、Blob(事件网格)和持久触发器都是特殊情况。 应用中的所有 HTTP 触发函数都在同一实例中分组和缩放,并且所有持久触发的函数(业务流程触发器、活动触发器或实体触发器)都在同一实例中分组和缩放。 应用中的所有其他函数单独缩放。

并发

并发是指在应用的实例上函数的并行执行的数量。 可以将每个实例设置为在任何给定时间应处理的最大并发执行数。 有关详细信息,请参阅 HTTP 触发器并发

并发对应用缩放方式有直接影响,因为在较低的并发级别,需要更多实例来处理函数的事件驱动的需求。 虽然你可以控制和微调并发,但我们提供了适用于大多数情况的默认值。 若要了解如何设置 HTTP 触发器函数的并发限制,请参阅“设置 HTTP 并发限制”

部署

灵活消耗计划中的部署遵循单一路径。 生成项目代码并将其压缩到应用程序包中后,将其部署到 Blob 存储容器中。 启动时,应用将检索包并从中运行。 默认情况下,用于存储内部主机元数据 (AzureWebJobsStorage) 的同一存储帐户也用作部署容器。 不过,你可以使用替代存储帐户,或者通过配置应用的部署设置来选择首选的身份验证方法。 在简化部署路径时,不再需要通过应用设置来影响部署行为。

计费

在 Flex Consumption 计划中运行应用时,可通过两种模式确定成本。 每个模式基于每个实例确定。

计费模式 说明
按需 按需模式下运行时,仅对函数代码在可用实例上执行的时间付费。 在按需模式下,不需要最小实例计数。 系统会针对以下内容计费:

• 当每个按需实例主动执行函数(以 GB 秒为单位)时,预配的总内存量减去每月 GB-s 的免费额度。
• 执行的总数减去每月执行的免费额度(数量)。
始终就绪 可以配置一个或多个实例,将它们分配给特定触发器类 (HTTP/Durable/Blob) 和单独的函数,这些实例始终可用于处理请求。 启用任何始终就绪的实例后,系统会针对以下内容计费:

• 在所有始终就绪实例(称为基线,以 GB-秒为单位)中预配的总内存量。
• 每个始终就绪实例主动执行函数(以 GB-秒为单位)期间预配的总内存量。
• 总执行次数。

在始终就绪的计费中,没有免费额度。

这两种执行模式的最小计费执行期为 1000 ms。 过去,计费活动周期向上舍入到最近的 100 ms。 可以在“监视参考”中找到 Flex Consumption 计划计费计量的详细信息。

有关在按照 Flex Consumption 计划运行时如何计算成本的详细信息(包括示例),请参阅“基于消耗的成本”

有关执行定价、始终就绪基线成本以及按需执行的免费额度的最新信息,请参阅 Azure Functions 定价页

支持的语言堆栈版本

下表显示了 Flex Consumption 应用当前支持的语言堆栈版本:

语言堆栈 所需版本
C#(独立进程模式)1 .NET 82
Java Java 11、Java 17
Node.js Node 20
PowerShell PowerShell 7.4
Python Python 3.10、Python 3.11

1不支持 C# 进程内模式。 你需要迁移 .NET 代码项目,才能在隔离的工作器模型中运行
2需要 1.20.0 版本或 Microsoft.Azure.Functions.Worker 之后的版本及 1.16.2 版本或 Microsoft.Azure.Functions.Worker.Sdk 之后的版本。

区域订阅内存配额

目前,在给定订阅中的每个区域中,对于 Flex Consumption 计划上运行的应用的所有实例,内存限制为 512,000 MB。 这意味着,在给定的订阅和区域中,可以采用以下最大实例大小和计数的任意组合,这些都达到当前的 512,000 MB 限制。 例如:

实例内存大小 (MB) 最大实例计数(每个区域)
2048 MB 250
4096 MB 125

只要实例内存大小和计数保持在 512,000 MB 限制内,就可以在给定区域中采用任何其他实例内存大小和计数的组合。 如果应用需要更大的配额,你可以创建支持工单来请求增加配额。

弃用的属性和设置

在 Flex Consumption 中,Bicep、ARM 模板和整体控制平面中使用的许多标准应用程序设置和站点配置属性已弃用或已移动,在自动创建函数应用资源时不应使用。 有关详细信息,请参阅“Flex Consumption 计划弃用”

注意事项

在当前预览版中使用 Flex Consumption 计划时,请记住以下其他注意事项:

  • VNet 集成按照此处的说明确保为订阅启用 Microsoft.App Azure 资源提供程序。 灵活消耗应用所需的子网委派是 Microsoft.App/environments
  • 触发器:除 Kafka、Azure SQL 和 SignalR 触发器外,所有触发器都完全受支持。 Blob 存储触发器仅支持事件网格源。 非 C# 函数应用必须使用扩展捆绑包[4.0.0, 5.0.0) 版本或更高版本。
  • 区域:目前并非所有区域都受支持。 若要了解详细信息,请参阅“查看当前支持的区域”
  • 部署:目前不支持这些与部署相关的功能:
    • 部署槽位
    • 使用 Azure DevOps 任务 (AzureFunctionApp@2) 进行持续部署
    • 使用 GitHub Actions (functions-action@v1) 进行持续部署
  • 缩放:预览版中最小的最大缩放比例为 40。 当前支持的最高值为 1000
  • 授权:目前不支持 EasyAuth。 目前,如果在 Flex 消耗计划应用中启用了 EasyAuth,未经身份验证的调用方不会受阻止。
  • CORS:目前不支持 CORS 设置。 如果为 Flex Consumption 应用配置了 CORS,则可能会出现异常。

Azure Functions 托管选项在 Flex Consumption 计划中创建和管理函数应用