你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 容器应用中部署 Azure Functions 时,平台会自动将 Functions 触发器参数转换为 KEDA 缩放配置。 此转换可确保 Functions 根据来自各种事件源的传入工作负荷进行适当缩放。
缩放映射的工作原理
容器应用中的 Azure Functions 使用 KEDA 监视事件源并缩放函数应用。 平台自动:
转换 Functions 参数:将 Functions 触发器配置(来自
host.json或触发器属性)转换为 KEDA 缩放程序元数据。应用缩放规则:使用已转换的参数创建适当的 KEDA 缩放规则。
监视事件:KEDA 会根据这些规则持续监视事件源。
缩放实例:根据工作负荷自动纵向扩展或缩减容器实例。
以下各节详细介绍了每个触发器类型的特定参数映射。
缩放参数
以下部分详细介绍了 Azure Functions 触发器参数如何映射到每个受支持的触发器类型的相应 KEDA 缩放程序配置。
Azure 存储队列
下表显示了 Azure 存储队列触发器参数 如何映射到 KEDA 缩放程序配置值。
| 参数 | Functions 配置 | KEDA 配置 |
|---|---|---|
| 参数名称 | batchSize |
queueLength |
| 配置路径 |
extensions.queues.batchSize (host.json) |
metadata.queueLength |
| 默认值 | 16 | 5 |
| 函数触发器说明 | KEDA 缩放程序说明 |
|---|---|
Functions 运行时并行检索和处理的队列消息数。 当正在处理的数字到达 newBatchThreshold时,运行时将提取另一批。 每个函数的最大并发消息数是 batchSize 加 newBatchThreshold号。 设置为 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 缩放功能或外部监视解决方案。