通过


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

容器应用上的 Azure Functions KEDA 缩放映射

在 Azure 容器应用中部署 Azure Functions 时,平台会自动将 Functions 触发器参数转换为 KEDA 缩放配置。 此转换可确保 Functions 根据来自各种事件源的传入工作负荷进行适当缩放。

缩放映射的工作原理

容器应用中的 Azure Functions 使用 KEDA 监视事件源并缩放函数应用。 平台自动:

  1. 转换 Functions 参数:将 Functions 触发器配置(来自 host.json 或触发器属性)转换为 KEDA 缩放程序元数据。

  2. 应用缩放规则:使用已转换的参数创建适当的 KEDA 缩放规则。

  3. 监视事件:KEDA 会根据这些规则持续监视事件源。

  4. 缩放实例:根据工作负荷自动纵向扩展或缩减容器实例。

以下各节详细介绍了每个触发器类型的特定参数映射。

缩放参数

以下部分详细介绍了 Azure Functions 触发器参数如何映射到每个受支持的触发器类型的相应 KEDA 缩放程序配置。

Azure 存储队列

下表显示了 Azure 存储队列触发器参数 如何映射到 KEDA 缩放程序配置值

参数 Functions 配置 KEDA 配置
参数名称 batchSize queueLength
配置路径 extensions.queues.batchSize (host.json) metadata.queueLength
默认值 16 5
函数触发器说明 KEDA 缩放程序说明
Functions 运行时并行检索和处理的队列消息数。 当正在处理的数字到达 newBatchThreshold时,运行时将提取另一批。 每个函数的最大并发消息数是 batchSizenewBatchThreshold号。 设置为 batchSize 1 可消除并发,除非应用横向扩展到多个 VM。 batchSize 的最大值为 32。 传递给缩放程序的队列长度的目标值。 例如,如果一个 Pod 可以处理 10 条消息,请将队列长度目标设置为 10。 如果队列中的实际消息数为 30,则缩放程序将扩展到三个 Pod。

翻译逻辑

metadata.queueLength = extensions.queues.batchSize

Azure 服务总线 (单调度)

下表显示了 Azure 服务总线触发器参数 如何映射到 KEDA 缩放程序配置值

参数 Functions 配置 KEDA 配置
参数名称 maxConcurrentCalls messageCount
配置路径 extensions.serviceBus.maxConcurrentCalls (host.json) metadata.messageCount
默认值 16 5
函数触发器说明 KEDA 缩放程序说明
限制每个缩放实例的最大并发调用数。 对于多核实例,最大值乘以核心数。 仅当为 false 时 isSessionsEnabled ,才使用此设置。 要缩放的 Azure 服务总线队列或主题中的活动消息数。

翻译逻辑

metadata.messageCount = extensions.serviceBus.maxConcurrentCalls

Azure 服务总线(单一调度,基于会话)

下表显示了 Azure 服务总线触发器参数在 true 时isSessionsEnabled如何映射到 KEDA 缩放程序配置值

参数 Functions 配置 KEDA 配置
参数名称 maxConcurrentSessions messageCount
配置路径 extensions.serviceBus.maxConcurrentSessions (host.json) metadata.messageCount
默认值 8 5
函数触发器说明 KEDA 缩放程序说明
每个缩放实例并发处理的会话数上限。 仅当为 true 时 isSessionsEnabled ,才使用此设置。 要缩放的 Azure 服务总线队列或主题中的活动消息数。

翻译逻辑

metadata.messageCount = extensions.serviceBus.maxConcurrentSessions

Azure 服务总线 (批处理)

下表显示了 Azure 服务总线触发器参数 如何映射到用于批处理的 KEDA 缩放程序配置值

参数 Functions 配置 KEDA 配置
参数名称 maxMessageBatchSize messageCount
配置路径 extensions.serviceBus.maxMessageBatchSize (host.json) metadata.messageCount
默认值 1000 5
函数触发器说明 KEDA 缩放程序说明
传递给每个函数调用进行批处理的消息数上限。 要缩放的 Azure 服务总线队列或主题中的活动消息数。

翻译逻辑

metadata.messageCount = extensions.serviceBus.maxMessageBatchSize

Azure 事件中心

下表显示了 Azure 事件中心触发器参数 如何映射到 KEDA 缩放程序配置值

参数 Functions 配置 KEDA 配置
参数名称 targetUnprocessedEventThreshold unprocessedEventThreshold
配置路径 extensions.eventHubs.targetUnprocessedEventThreshold (host.json) metadata.unprocessedEventThreshold
默认值 null 64
函数触发器说明 KEDA 缩放程序说明
每个函数实例所需的未处理事件数。 用于基于目标的缩放。 触发缩放作的平均目标值。

翻译逻辑

metadata.unprocessedEventThreshold = extensions.eventHubs.targetUnprocessedEventThreshold

Apache Kafka

下表显示了 Apache Kafka 触发器参数 如何映射到 KEDA 缩放程序配置值

参数 Functions 配置 KEDA 配置
参数名称 LagThreshold lagThreshold
配置路径 函数触发器属性 metadata.lagThreshold
默认值 1000 10
函数触发器说明 KEDA 缩放程序说明
使用此值作为 Kafka 触发器的每个实例的目标执行。 所需实例数是根据使用者总滞后时间除以 LagThreshold的总消耗量计算的。
使用此值作为总滞后时间(所有分区滞后时间的总和)的目标,以触发缩放作。

Example

[KafkaTrigger(
  "BrokerList",
  "topic",
  ConsumerGroup = "$Default",
  LagThreshold = 100)]

翻译逻辑

metadata.lagThreshold = LagThreshold

HTTP 触发器

HTTP 触发器不会映射到 KEDA 缩放程序。 请改用容器应用内置的 HTTP 缩放功能或外部监视解决方案。