Partekatu bidez


Asignaciones de escalado de KEDA de Azure Functions en Container Apps

Al implementar Azure Functions en Azure Container Apps, la plataforma convierte automáticamente los parámetros del desencadenador de Functions en configuraciones de escalado keDA. Esta traducción garantiza que las funciones se escalen correctamente en función de la carga de trabajo entrante de varios orígenes de eventos.

Funcionamiento de las asignaciones de escalado

Azure Functions en Container Apps usa KEDA para supervisar los orígenes de eventos y escalar las aplicaciones de funciones. La plataforma se realiza automáticamente:

  1. Traduce parámetros de Functions: convierte la configuración del desencadenador de Functions (de host.json o atributos de desencadenador) en metadatos del escalador KEDA.

  2. Aplica reglas de escalado: usa los parámetros traducidos para crear las reglas de escalado de KEDA adecuadas.

  3. Supervisa los eventos: KEDA supervisa continuamente los orígenes de eventos en función de estas reglas.

  4. Escala las instancias: escala vertical o reduce verticalmente automáticamente las instancias de contenedor en función de la carga de trabajo.

En las secciones siguientes se detallan las asignaciones de parámetros específicas para cada tipo de desencadenador.

Parámetros de escalado

En las secciones siguientes se detalla cómo se asignan los parámetros de desencadenador de Azure Functions a sus configuraciones de escalador KEDA correspondientes para cada tipo de desencadenador admitido.

Cola de Azure Storage

En la tabla siguiente se muestra cómo los parámetros de desencadenador de cola de Azure Storage se asignan a los valores de configuración del escalador KEDA.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro batchSize queueLength
Ruta de acceso de configuración extensions.queues.batchSize (host.json) metadata.queueLength
Valor predeterminado 16 5
Descripción del desencadenador de Functions Descripción del escalador KEDA
Número de mensajes de cola que el tiempo de ejecución de Functions recupera y procesa en paralelo. Cuando el número que se está procesando alcanza newBatchThreshold, el tiempo de ejecución captura otro lote. El número máximo de mensajes simultáneos por función es batchSize más newBatchThreshold. Establézcalo batchSize en 1 para eliminar la simultaneidad a menos que la aplicación se escale horizontalmente a varias máquinas virtuales. El valor máximo de batchSize es 32. Valor de destino para la longitud de la cola que se pasa al escalador. Por ejemplo, si un pod puede controlar 10 mensajes, establezca el destino de longitud de cola en 10. Si el número real de mensajes de la cola es 30, el escalador se escala a tres pods.

Lógica de traducción

metadata.queueLength = extensions.queues.batchSize

Azure Service Bus (envío único)

En la tabla siguiente se muestra cómo se asignan los parámetros de desencadenador de Azure Service Bus a los valores de configuración del escalador KEDA.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro maxConcurrentCalls messageCount
Ruta de acceso de configuración extensions.serviceBus.maxConcurrentCalls (host.json) metadata.messageCount
Valor predeterminado 16 5
Descripción del desencadenador de Functions Descripción del escalador KEDA
Limita el número máximo de llamadas simultáneas por instancia escalada. En el caso de las instancias de varios núcleos, el máximo se multiplica por el número de núcleos. Use esta configuración solo cuando isSessionsEnabled sea false. Número de mensajes activos en la cola o el tema de Azure Service Bus en el que se va a escalar.

Lógica de traducción

metadata.messageCount = extensions.serviceBus.maxConcurrentCalls

Azure Service Bus (basado en sesiones)

En la tabla siguiente se muestra cómo los parámetros de desencadenador de Azure Event Hubs se asignan a los valores de configuración del escalador KEDA.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro maxMessageBatchSize messageCount
Ruta de acceso de configuración extensions.serviceBus.maxMessageBatchSize (host.json) metadata.messageCount
Valor predeterminado 1 000 5
Descripción del desencadenador de Functions Descripción del escalador KEDA
Número máximo de mensajes pasados a cada llamada de función para el procesamiento por lotes. Número de mensajes activos en la cola o el tema de Azure Service Bus en el que se va a escalar.

Lógica de traducción

metadata.messageCount = extensions.serviceBus.maxMessageBatchSize

Azure Event Hubs

En la tabla siguiente se muestra cómo los parámetros de desencadenador de Azure Event Hubs se asignan a los valores de configuración del escalador KEDA.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro targetUnprocessedEventThreshold unprocessedEventThreshold
Ruta de acceso de configuración extensions.eventHubs.targetUnprocessedEventThreshold (host.json) metadata.unprocessedEventThreshold
Valor predeterminado nulo 64
Descripción del desencadenador de Functions Descripción del escalador KEDA
Número deseado de eventos sin procesar por instancia de función. Se usa para el escalado basado en destino. Valor medio de destino para desencadenar acciones de escalado.

Lógica de traducción

metadata.unprocessedEventThreshold = extensions.eventHubs.targetUnprocessedEventThreshold

Apache Kafka

En la tabla siguiente se muestra cómo los parámetros de desencadenador de Apache Kafka se asignan a los valores de configuración del escalador KEDA.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro LagThreshold lagThreshold
Ruta de acceso de configuración Atributo de desencadenador de función metadata.lagThreshold
Valor predeterminado 1 000 10
Descripción del desencadenador de Functions Descripción del escalador KEDA
Use este valor como ejecuciones de destino por instancia para el desencadenador de Kafka. El número de instancias deseadas se calcula en función del retraso total del consumidor dividido por LagThreshold.
Use este valor como destino del retraso total (suma de todos los retrasos de partición) para desencadenar acciones de escalado.

Example

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

Lógica de traducción

metadata.lagThreshold = LagThreshold

Azure Cosmos DB (la base de datos de Azure Cosmos)

El desencadenador de Azure Cosmos DB no se asigna a un escalador KEDA. Use el escalado personalizado en su lugar.

El desencadenador Functions establece el número máximo de elementos recibidos por llamada de función. El ámbito de transacción se conserva para los procedimientos almacenados.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro MaxItemsPerInvocation N/A
Ruta de acceso de configuración Atributo de desencadenador de función N/A
Valor predeterminado 100 N/A

Example

[CosmosDBTrigger(
  databaseName: "ToDoItems",
  containerName: "Items",
  Connection = "CosmosDBConnection",
  MaxItemsPerInvocation = 100)]

Desencadenador HTTP

El desencadenador HTTP no se asigna a un escalador KEDA. En su lugar, use las funcionalidades de escalado HTTP integradas de Container Apps o las soluciones de supervisión externa.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro maxConcurrentRequests N/A
Ruta de acceso de configuración extensions.http.maxConcurrentRequests (host.json) N/A
Valor predeterminado 100 (consumo), -1 (Premium/Dedicado) N/A

Desencadenador de Blob Storage

En la tabla siguiente se muestra cómo los parámetros del desencadenador de Azure Blob Storage se asignan a los valores de configuración del escalador KEDA.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro maxDegreeOfParallelism blobCount
Ruta de acceso de configuración extensions.blobs.maxDegreeOfParallelism (host.json) metadata.blobCount
Valor predeterminado 8 × número de núcleos disponibles 5
Descripción del desencadenador de Functions Descripción del escalador KEDA
Establece el número de invocaciones simultáneas permitidas para todas las funciones desencadenadas por blobs en una aplicación de funciones. Valor mínimo: 1. Valor medio de destino para desencadenar acciones de escalado. (Valor predeterminado: 5, opcional)

Lógica de traducción

metadata.blobCount = extensions.blobs.maxDegreeOfParallelism

Event Grid

Los parámetros de desencadenador de Azure Event Grid no se asignan a un escalador KEDA.

El desencadenador de Event Grid usa una solicitud HTTP de webhook. Esta solicitud se configura mediante la misma host.json configuración que el desencadenador HTTP. Esta configuración controla la ejecución en paralelo para la administración de recursos.

Desencadenador de RabbitMQ

En la tabla siguiente se muestra cómo los parámetros de desencadenador rabbitMQ se asignan a los valores de configuración del escalador KEDA.

Parámetro Configuración de funciones Configuración de KEDA
Nombre del parámetro prefetchCount value
Ruta de acceso de configuración extensions.rabbitMQ.prefetchCount (host.json) metadata.value
Valor predeterminado 30 100.50
Descripción del desencadenador de Functions Descripción del escalador KEDA
Número de mensajes que el receptor puede solicitar y almacenar en caché simultáneamente. Tasa de trabajos pendientes de mensajes o publicación/s para desencadenar el escalado. En el modo QueueLength, el valor representa la longitud de la cola de destino para el escalado.

Lógica de traducción

metadata.value = extensions.rabbitMQ.prefetchCount