Udostępnij przez


Mapowania skalowania KEDA usługi Azure Functions w usłudze Container Apps

Podczas wdrażania usługi Azure Functions w usłudze Azure Container Apps platforma automatycznie tłumaczy parametry wyzwalacza usługi Functions na konfiguracje skalowania KEDA. To tłumaczenie zapewnia odpowiednie skalowanie funkcji na podstawie obciążenia przychodzącego z różnych źródeł zdarzeń.

Jak działają mapowania skalowania

Usługa Azure Functions w usłudze Container Apps używa usługi KEDA do monitorowania źródeł zdarzeń i skalowania aplikacji funkcji. Platforma automatycznie:

  1. Tłumaczy parametry funkcji: konwertuje konfigurację wyzwalacza funkcji (z host.json atrybutów wyzwalacza lub wyzwalacza) na metadane modułu skalowania KEDA.

  2. Stosuje reguły skalowania: używa przetłumaczonych parametrów do tworzenia odpowiednich reguł skalowania KEDA.

  3. Monitoruje zdarzenia: usługa KEDA stale monitoruje źródła zdarzeń na podstawie tych reguł.

  4. Skaluje wystąpienia: automatycznie skaluje wystąpienia kontenerów w górę lub w dół na podstawie obciążenia.

W poniższych sekcjach opisano konkretne mapowania parametrów dla każdego typu wyzwalacza.

Parametry skalowania

W poniższych sekcjach opisano sposób mapowania parametrów wyzwalacza usługi Azure Functions na odpowiednie konfiguracje modułu skalowania KEDA dla każdego obsługiwanego typu wyzwalacza.

Kolejka usługi Azure Storage

W poniższej tabeli przedstawiono sposób mapowania parametrów wyzwalacza kolejki usługi Azure Storage na wartości konfiguracji modułu skalowania KEDA.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru batchSize queueLength
Ścieżka konfiguracji extensions.queues.batchSize (host.json) metadata.queueLength
Wartość domyślna 16 5
Opis wyzwalacza funkcji Opis narzędzia skalowania KEDA
Liczba komunikatów w kolejce, które środowisko uruchomieniowe usługi Functions pobiera i przetwarza równolegle. Gdy przetwarzany numer osiągnie newBatchThresholdwartość , środowisko uruchomieniowe pobiera kolejną partię. Maksymalna liczba współbieżnych komunikatów na funkcję to batchSize plus newBatchThreshold. Ustaw batchSize wartość 1, aby wyeliminować współbieżność, chyba że aplikacja skaluje się w poziomie do wielu maszyn wirtualnych. Maksymalna wartość batchSize to 32. Wartość docelowa długości kolejki przekazana do modułu skalowania. Jeśli na przykład jeden zasobnik może obsłużyć 10 komunikatów, ustaw docelową długość kolejki na 10. Jeśli rzeczywista liczba komunikatów w kolejce wynosi 30, narzędzie skalowania skaluje do trzech zasobników.

Logika tłumaczenia

metadata.queueLength = extensions.queues.batchSize

Azure Service Bus (pojedyncza wysyłka)

W poniższej tabeli przedstawiono sposób mapowania parametrów wyzwalacza usługi Azure Service Bus na wartości konfiguracji narzędzia skalowania KEDA.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru maxConcurrentCalls messageCount
Ścieżka konfiguracji extensions.serviceBus.maxConcurrentCalls (host.json) metadata.messageCount
Wartość domyślna 16 5
Opis wyzwalacza funkcji Opis narzędzia skalowania KEDA
Ogranicza maksymalną liczbę współbieżnych wywołań na wystąpienie skalowane. W przypadku wystąpień wielordzeniowych maksymalna liczba rdzeni jest mnożona przez liczbę rdzeni. Użyj tego ustawienia tylko wtedy, gdy isSessionsEnabled ma wartość false. Liczba aktywnych komunikatów w kolejce usługi Azure Service Bus lub temacie do skalowania.

Logika tłumaczenia

metadata.messageCount = extensions.serviceBus.maxConcurrentCalls

Azure Service Bus (oparta na sesjach)

W poniższej tabeli przedstawiono sposób mapowania parametrów wyzwalacza usługi Azure Event Hubs na wartości konfiguracji narzędzia skalowania KEDA.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru maxMessageBatchSize messageCount
Ścieżka konfiguracji extensions.serviceBus.maxMessageBatchSize (host.json) metadata.messageCount
Wartość domyślna 1000 5
Opis wyzwalacza funkcji Opis narzędzia skalowania KEDA
Maksymalna liczba komunikatów przekazywanych do każdego wywołania funkcji na potrzeby przetwarzania wsadowego. Liczba aktywnych komunikatów w kolejce usługi Azure Service Bus lub temacie do skalowania.

Logika tłumaczenia

metadata.messageCount = extensions.serviceBus.maxMessageBatchSize

Azure Event Hubs

W poniższej tabeli przedstawiono sposób mapowania parametrów wyzwalacza usługi Azure Event Hubs na wartości konfiguracji narzędzia skalowania KEDA.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru targetUnprocessedEventThreshold unprocessedEventThreshold
Ścieżka konfiguracji extensions.eventHubs.targetUnprocessedEventThreshold (host.json) metadata.unprocessedEventThreshold
Wartość domyślna null 64
Opis wyzwalacza funkcji Opis narzędzia skalowania KEDA
Żądana liczba nieprzetworzonych zdarzeń na wystąpienie funkcji. Służy do skalowania na podstawie celu. Średnia wartość docelowa wyzwalania akcji skalowania.

Logika tłumaczenia

metadata.unprocessedEventThreshold = extensions.eventHubs.targetUnprocessedEventThreshold

Apache Kafka

W poniższej tabeli przedstawiono sposób mapowania parametrów wyzwalacza platformy Apache Kafka na wartości konfiguracji modułu skalowania KEDA.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru LagThreshold lagThreshold
Ścieżka konfiguracji Atrybut wyzwalacza funkcji metadata.lagThreshold
Wartość domyślna 1000 10
Opis wyzwalacza funkcji Opis narzędzia skalowania KEDA
Użyj tej wartości jako docelowych wykonań na wystąpienie wyzwalacza platformy Kafka. Liczba żądanych wystąpień jest obliczana na podstawie całkowitego opóźnienia konsumenta podzielonego przez LagThreshold.
Użyj tej wartości jako wartości docelowej dla całkowitego opóźnienia (sumy wszystkich opóźnień partycji), aby wyzwolić akcje skalowania.

Example

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

Logika tłumaczenia

metadata.lagThreshold = LagThreshold

Azure Cosmos DB

Wyzwalacz usługi Azure Cosmos DB nie jest mapowany na narzędzie skalowania KEDA. Zamiast tego użyj niestandardowego skalowania.

Wyzwalacz usługi Functions ustawia maksymalną liczbę odebranych elementów na wywołanie funkcji. Zakres transakcji jest zachowywany dla procedur składowanych.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru MaxItemsPerInvocation N/A
Ścieżka konfiguracji Atrybut wyzwalacza funkcji N/A
Wartość domyślna 100 N/A

Example

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

Wyzwalacz HTTP

Wyzwalacz HTTP nie jest mapowany na moduł skalowania KEDA. Zamiast tego użyj wbudowanych funkcji skalowania HTTP usługi Container Apps lub zewnętrznych rozwiązań do monitorowania.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru maxConcurrentRequests N/A
Ścieżka konfiguracji extensions.http.maxConcurrentRequests (host.json) N/A
Wartość domyślna 100 (Zużycie), -1 (Premium/Dedykowana) N/A

Wyzwalacz przechowywania obiektów blob

W poniższej tabeli przedstawiono sposób mapowania parametrów wyzwalacza usługi Azure Blob Storage na wartości konfiguracji narzędzia skalowania KEDA.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru maxDegreeOfParallelism blobCount
Ścieżka konfiguracji extensions.blobs.maxDegreeOfParallelism (host.json) metadata.blobCount
Wartość domyślna 8 × liczbę dostępnych rdzeni 5
Opis wyzwalacza funkcji Opis narzędzia skalowania KEDA
Ustawia liczbę współbieżnych wywołań dozwolonych dla wszystkich funkcji wyzwalanych przez obiekt blob w aplikacji funkcji. Wartość minimalna: 1. Średnia wartość docelowa wyzwalania akcji skalowania. (Wartość domyślna: 5, opcjonalnie)

Logika tłumaczenia

metadata.blobCount = extensions.blobs.maxDegreeOfParallelism

Event Grid

Parametry wyzwalacza usługi Azure Event Grid nie są mapowane na program skalowania KEDA.

Wyzwalacz usługi Event Grid używa żądania HTTP elementu webhook. To żądanie można skonfigurować przy użyciu tych samych host.json ustawień co wyzwalacz HTTP. Te ustawienia kontrolują równoległe wykonywanie na potrzeby zarządzania zasobami.

Wyzwalacz RabbitMQ

W poniższej tabeli przedstawiono sposób mapowania parametrów wyzwalacza RabbitMQ na wartości konfiguracji modułu skalowania KEDA.

Parameter Konfiguracja funkcji Konfiguracja KEDA
nazwa parametru prefetchCount value
Ścieżka konfiguracji extensions.rabbitMQ.prefetchCount (host.json) metadata.value
Wartość domyślna 30 100.50
Opis wyzwalacza funkcji Opis narzędzia skalowania KEDA
Liczba komunikatów, które odbiorca może jednocześnie żądać i buforować. List prac komunikatów lub szybkość publikowania/s w celu wyzwolenia skalowania. W trybie QueueLength wartość reprezentuje docelową długość kolejki na potrzeby skalowania.

Logika tłumaczenia

metadata.value = extensions.rabbitMQ.prefetchCount