Skalierungsmodi des Ereignis-Pollers von Apache Kafka in Lambda - AWS Lambda

Skalierungsmodi des Ereignis-Pollers von Apache Kafka in Lambda

Sie können zwischen zwei Skalierungsmodi von Ereignis-Pollern für Zuordnungen von Ereignisquellen von Amazon MSK und selbstverwaltetem Apache Kafka wählen.

On-Demand-Modus (Standard)

Wenn Sie zuerst eine Kafka-Ereignisquelle erstellen, weist Lambda eine Standardanzahl von Ereignis-Pollern zu, um alle Partitionen im Kafka-Thema zu verarbeiten. Lambda erhöht oder verringert automatisch die Anzahl der Ereignis-Poller je nach Nachrichtenlast.

In Intervallen von einer Minute wertet Lambda den Offset-Lag aller Partitionen des Themas aus. Wenn die Offset-Verzögerung zu hoch ist, empfängt die Partition Nachrichten schneller als Lambda sie verarbeiten kann. Falls erforderlich, fügt Lambda dem Thema Ereignis-Poller hinzu oder entfernt sie. Dieser Prozess der automatischen Skalierung durch Hinzufügen oder Entfernen von Ereignis-Pollern erfolgt innerhalb von drei Minuten nach der Auswertung.

Wenn Ihre Ziel-Lambda-Funktion gedrosselt ist, reduziert Lambda die Anzahl der Ereignis-Poller. Diese Aktion verringert den Workload der Funktion, indem sie die Anzahl der Nachrichten reduziert, die Ereignis-Poller abrufen und an die Funktion senden können.

Modus bereitgestellter Kapazität

Für Workloads, bei denen Sie den Durchsatz Ihrer Zuordnung von Ereignisquellen optimieren müssen, können Sie den Bereitstellungsmodus verwenden. Im Bereitstellungsmodus definieren Sie Mindest- und Höchstgrenzen für die Anzahl der bereitgestellten Ereignis-Poller. Diese bereitgestellten Event-Poller sind auf Ihre Zuordnung von Ereignisquellen ausgerichtet und können unerwartete Nachrichtenspitzen durch reaktionsschnelle Autoskalierung bewältigen. Wir empfehlen die Verwendung des Bereitstellungsmodus für Kafka-Workloads, die strenge Leistungsanforderungen haben.

In Lambda ist ein Event-Poller eine Recheneinheit, die einen Durchsatz von bis zu 5 MBps verarbeiten kann. Nehmen wir als Referenz an, dass Ihre Ereignisquelle eine durchschnittliche Nutzlast von 1 MB erzeugt und die durchschnittliche Funktionsdauer 1 Sekunde beträgt. Wenn die Nutzdaten keiner Transformation (wie Filterung) unterzogen wird, kann ein einzelner Poller einen Durchsatz von 5 MB/s und 5 gleichzeitige Lambda-Aufrufe unterstützen. Die Verwendung des Bereitstellungsmodus verursacht zusätzliche Kosten. Kostenvoranschläge finden Sie unter AWS Lambda-Preise.

Anmerkung

Wenn Sie den Bereitstellungsmodus verwenden, müssen Sie keine VPC-Endpunkte in AWS PrivateLink erstellen oder die zugehörigen Berechtigungen als Teil Ihrer Netzwerkkonfiguration gewähren.

Im Bereitstellungsmodus liegt der Bereich der akzeptierten Werte für die Mindestanzahl der Ereignis-Poller (MinimumPollers) zwischen 1 und 200 (einschließlich). Der Bereich der akzeptierten Werte für die maximale Anzahl von Event-Pollern (MaximumPollers) liegt zwischen 1 und einschließlich 2.000. MaximumPollers muss größer als oder gleich MinimumPollers sein. Um eine geordnete Verarbeitung innerhalb der Partitionen zu gewährleisten, begrenzt Lambda das MaximumPollers auf die Anzahl der Partitionen im Thema.

Weitere Einzelheiten zur Auswahl geeigneter Werte für minimale und maximale Ereignis-Poller finden Sie unter Bewährte Methoden.

Sie können den Bereitstellungsmodus für Ihre Kafka-Zuordnung von Ereignisquellen über die Konsole oder die Lambda-API konfigurieren.

Konfigurieren des Bereitstellungsmodus für eine vorhandene Zuordnung von Ereignisquellen (Konsole)
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion mit der Zuordnung von Ereignisquellen aus, für die Sie den Bereitstellungsmodus konfigurieren möchten.

  3. Wählen Sie Konfiguration und anschließend Auslöser aus.

  4. Wählen Sie die Zuordnung von Ereignisquellen, für die Sie den Bereitstellungsmodus konfigurieren möchten, und wählen Sie dann Bearbeiten.

  5. Wählen Sie unter Bereitstellungsmodus die Option Konfigurieren aus.

    • Geben Sie für Minimum Event Pollers einen Wert zwischen 1 und 200 ein. Wenn Sie keinen Wert angeben, wählt Lambda einen Standardwert von 1.

    • Geben Sie für Maximum Event Pollers einen Wert zwischen 1 und 2000 ein. Dieser Wert muss größer oder gleich Ihrem Wert für Minimum Event Pollers sein. Wenn Sie keinen Wert angeben, wählt Lambda einen Standardwert von 200.

  6. Wählen Sie Speichern.

Sie können den Bereitstellungsmodus programmatisch konfigurieren, indem Sie das ProvisionedPollerConfig-Objekt in Ihrer EventSourceMappingConfiguration verwenden. Der folgende CLI-Befehl UpdateEventSourceMapping konfiguriert beispielsweise einen MinimumPollers-Wert von 5 und einen MaximumPollers-Wert von 100.

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{"MinimumPollers": 5, "MaximumPollers": 100}'

Nachdem Sie den Bereitstellungsmodus konfiguriert haben, können Sie die Verwendung von Event-Pollern für Ihren Workload beobachten, indem Sie die ProvisionedPollers-Metrik überwachen. Weitere Informationen finden Sie unter Metriken zur Zuordnung von Ereignisquellen.

Um den Bereitstellungsmodus zu deaktivieren und zum Standardmodus (on-demand) zurückzukehren, können Sie den folgenden CLI-Befehl UpdateEventSourceMapping verwenden:

aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'

Bewährte Verfahren und Überlegungen bei der Verwendung des Bereitstellungsmodus

Die optimale Konfiguration der minimalen und maximalen Ereignispoller für Ihre Zuordnung von Ereignisquellen hängt von den Leistungsanforderungen Ihrer Anwendung ab. Wir empfehlen Ihnen, mit den standardmäßigen Minimum Event Pollers zu beginnen, um das Leistungsprofil zu erstellen. Passen Sie Ihre Konfiguration auf der Grundlage der beobachteten Nachrichtenverarbeitungsmuster und Ihres gewünschten Leistungsprofils an.

Erhöhen Sie bei Workloads mit starkem Datenverkehr und strengen Leistungsanforderungen die Mindestanzahl der Event-Poller, um plötzliche Nachrichtenfluten zu bewältigen. Um den Mindestbedarf an Event-Pollern zu ermitteln, berücksichtigen Sie die Nachrichten pro Sekunde und die durchschnittliche Größe der Nutzdaten Ihres Workloads und verwenden Sie die Durchsatzkapazität eines einzelnen Event-Pollers (bis zu 5 MBps) als Referenz.

Um eine geordnete Verarbeitung innerhalb einer Partition aufrechtzuerhalten, begrenzt Lambda die maximale Anzahl der Event-Poller auf die Anzahl der Partitionen im Thema. Darüber hinaus hängt die maximale Anzahl von Event-Pollern, auf die Ihr Zuordnung von Ereignisquellen skaliert werden kann, von den Gleichzeitigkeitseinstellungen der Funktion ab.

Wenn Sie den Bereitstellungsmodus aktivieren, aktualisieren Sie Ihre Netzwerkeinstellungen, um AWS PrivateLink VPC-Endpunkte und zugehörige Berechtigungen zu entfernen.