Partilhar via


Azure Functions KEDA scaling mappings on Container Apps

Quando implementa o Azure Functions nas Azure Container Apps, a plataforma traduz automaticamente os parâmetros do seu disparo Functions em configurações de escalabilidade KEDA. Esta tradução garante que as suas Funções escalam adequadamente com base na carga de trabalho recebida de várias fontes de eventos.

Como funcionam os mapeamentos de escalabilidade

O Azure Functions on Container Apps utiliza o KEDA para monitorizar as fontes de eventos e escalar as suas aplicações de funções. A plataforma automaticamente:

  1. Traduz parâmetros de Funções: Converte a configuração do seu disparo de Funções (de host.json ou atributos de disparo) em metadados do escalador KEDA.

  2. Aplica regras de escalabilidade: Utiliza os parâmetros traduzidos para criar regras de escalabilidade KEDA apropriadas.

  3. Monitoriza eventos: A KEDA monitoriza continuamente as suas fontes de eventos com base nestas regras.

  4. Escala instâncias: Escala automaticamente as instâncias dos teus contentores para cima ou para baixo consoante a carga de trabalho.

As secções seguintes detalham os mapeamentos de parâmetros específicos para cada tipo de gatilho.

Parâmetros de escala

As secções seguintes detalham como os parâmetros de disparo do Azure Functions correspondem às suas configurações de escalador KEDA correspondentes para cada tipo de disparo suportado.

Fila de Armazenamento do Azure

A tabela seguinte mostra como os parâmetros de disparo do Azure Storage Queue correspondem aos valores da configuração do escalador KEDA.

Parâmetro Configuração das Funções Configuração KEDA
Nome do parâmetro batchSize queueLength
Caminho de configuração extensions.queues.batchSize (host.json) metadata.queueLength
Valor predefinido 16 5
Descrição do gatilho de funções Descrição do escalador KEDA
O número de mensagens de fila que o runtime das Funções recupera e processa em paralelo. Quando o número a ser processado atinge o newBatchThreshold, o tempo de execução obtém outro lote. O número máximo de mensagens concorrentes por função é batchSize mais newBatchThreshold. Defina batchSize para 1 para eliminar a concorrência, a menos que a aplicação escale para várias VMs. O máximo batchSize é 32. O valor alvo para o comprimento da fila é passado para o escalador. Por exemplo, se um pod conseguir lidar com 10 mensagens, defina o alvo de comprimento da fila para 10. Se o número real de mensagens na fila for 30, o escalador escala para três pods.

Lógica de tradução

metadata.queueLength = extensions.queues.batchSize

Azure Service Bus (single dispatch)

A tabela seguinte mostra como os parâmetros de disparo do Azure Service Bus correspondem aos valores de configuração do escalador KEDA.

Parâmetro Configuração das Funções Configuração KEDA
Nome do parâmetro maxConcurrentCalls messageCount
Caminho de configuração extensions.serviceBus.maxConcurrentCalls (host.json) metadata.messageCount
Valor predefinido 16 5
Descrição do gatilho de funções Descrição do escalador KEDA
Limita o número máximo de chamadas concorrentes por instância escalonada. Para instâncias multicore, o máximo é multiplicado pelo número de cores. Use esta definição apenas quando isSessionsEnabled for falso. Número de mensagens ativas na sua fila ou tópico do Azure Service Bus para escalar.

Lógica de tradução

metadata.messageCount = extensions.serviceBus.maxConcurrentCalls

Azure Service Bus (single dispatch, based sessions)

A tabela seguinte mostra como os parâmetros de disparo do Azure Service Bus correspondem aos valores de configuração do escalador KEDA quando isSessionsEnabled é verdadeiro.

Parâmetro Configuração das Funções Configuração KEDA
Nome do parâmetro maxConcurrentSessions messageCount
Caminho de configuração extensions.serviceBus.maxConcurrentSessions (host.json) metadata.messageCount
Valor predefinido 8 5
Descrição do gatilho de funções Descrição do escalador KEDA
Número máximo de sessões geridas em simultâneo por instância escalonada. Use esta definição apenas quando isSessionsEnabled for verdadeira. Número de mensagens ativas na sua fila ou tópico do Azure Service Bus para escalar.

Lógica de tradução

metadata.messageCount = extensions.serviceBus.maxConcurrentSessions

Azure Service Bus (processamento por lotes)

A tabela seguinte mostra como os parâmetros de disparo do Azure Service Bus correspondem aos valores de configuração do escalador KEDA para processamento em lote.

Parâmetro Configuração das Funções Configuração KEDA
Nome do parâmetro maxMessageBatchSize messageCount
Caminho de configuração extensions.serviceBus.maxMessageBatchSize (host.json) metadata.messageCount
Valor predefinido 1000 5
Descrição do gatilho de funções Descrição do escalador KEDA
O número máximo de mensagens passadas para cada função chama para processamento em lote. Número de mensagens ativas na sua fila ou tópico do Azure Service Bus para escalar.

Lógica de tradução

metadata.messageCount = extensions.serviceBus.maxMessageBatchSize

Hubs de Eventos do Azure

A tabela seguinte mostra como os parâmetros dos Azure Event Hubs se mapeiam para os valores de configuração do escalador KEDA.

Parâmetro Configuração das Funções Configuração KEDA
Nome do parâmetro targetUnprocessedEventThreshold unprocessedEventThreshold
Caminho de configuração extensions.eventHubs.targetUnprocessedEventThreshold (host.json) metadata.unprocessedEventThreshold
Valor predefinido null 64
Descrição do gatilho de funções Descrição do escalador KEDA
Número desejado de eventos não processados por instância de função. Usado para escalabilidade baseada em alvos. Valor médio-alvo para desencadear ações de escalonamento.

Lógica de tradução

metadata.unprocessedEventThreshold = extensions.eventHubs.targetUnprocessedEventThreshold

Apache Kafka

A tabela seguinte mostra como os parâmetros de disparo do Apache Kafka correspondem aos valores da configuração do escalador KEDA.

Parâmetro Configuração das Funções Configuração KEDA
Nome do parâmetro LagThreshold lagThreshold
Caminho de configuração Atributo de disparo de função metadata.lagThreshold
Valor predefinido 1000 10
Descrição do gatilho de funções Descrição do escalador KEDA
Use este valor como as execuções alvo por instância para o gatilho Kafka. O número de instâncias desejadas é calculado com base no atraso total do consumidor dividido por LagThreshold.
Use este valor como alvo para o atraso total (soma de todos os atrasos de partição) para desencadear ações de escalabilidade.

Example

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

Lógica de tradução

metadata.lagThreshold = LagThreshold

Acionador HTTP

O gatilho HTTP não corresponde a um escalador KEDA. Em vez disso, utilize as capacidades integradas de escalonamento HTTP do Container Apps ou soluções externas de monitorização.