Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
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 mit Durchsatzkapazitäten, die je nach Art der Ereignisquelle variieren. Bei Amazon MSK und selbstverwaltetem Apache Kafka kann jeder Event-Poller bis zu 5% MB/sec des Durchsatzes oder bis zu 5 gleichzeitige Aufrufe verarbeiten. Wenn Ihre Ereignisquelle beispielsweise eine durchschnittliche Nutzlast von 1 MB erzeugt und die durchschnittliche Dauer Ihrer Funktion 1 Sekunde beträgt, kann ein einzelner Kafka-Event-Poller 5 MB/sec Durchsatz- und 5 gleichzeitige Lambda-Aufrufe unterstützen (vorausgesetzt, es erfolgt keine Payload-Transformation). Bei Amazon SQS kann jeder Event-Poller bis zu 1% des Durchsatzes oder bis zu 10 gleichzeitige Aufrufe verarbeiten. MB/sec Bei Verwendung des bereitgestellten Modus fallen je nach Nutzung Ihres Event-Pollers zusätzliche Kosten an. Details zu den Preisen finden Sie unter AWS Lambda -Preise
Anmerkung
Wenn Sie den bereitgestellten Modus verwenden, müssen Sie im Rahmen Ihrer Netzwerkkonfiguration keine AWS PrivateLink VPC-Endpunkte erstellen oder die zugehörigen Berechtigungen 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)
-
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie die Funktion mit der Zuordnung von Ereignisquellen aus, für die Sie den Bereitstellungsmodus konfigurieren möchten.
-
Wählen Sie Konfiguration und anschließend Auslöser aus.
-
Wählen Sie die Zuordnung von Ereignisquellen, für die Sie den Bereitstellungsmodus konfigurieren möchten, und wählen Sie dann Bearbeiten.
-
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.
-
-
Wählen Sie Speichern.
Sie können den bereitgestellten Modus programmgesteuert mithilfe des Objekts in Ihrem konfigurieren. ProvisionedPollerConfig EventSourceMappingConfiguration Der folgende UpdateEventSourceMapping CLI-Befehl 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 (bei Bedarf) zurückzukehren, können Sie den folgenden UpdateEventSourceMapping CLI-Befehl verwenden:
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'
Erweiterte Fehlerbehandlungs- und Leistungsfunktionen
Für Kafka-Ereignisquellenzuordnungen mit aktiviertem Bereitstellungsmodus können Sie zusätzliche Funktionen konfigurieren, um die Fehlerbehandlung und Leistung zu verbessern:
-
Konfigurationen wiederholen — Steuern Sie, wie Lambda mit fehlgeschlagenen Datensätzen umgeht, wobei maximale Wiederholungsversuche, Altersgrenzen für Datensätze, Batch-Splitting und partielle Batch-Antworten berücksichtigt werden.
-
Ziele bei Ausfall von Kafka — Senden Sie fehlgeschlagene Datensätze zur späteren Verarbeitung oder Analyse an ein Kafka-Thema.
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 die zugehörigen Berechtigungen zu entfernen.
Kostenoptimierung für den Bereitstellungsmodus
Preisgestaltung im bereitgestellten Modus
Für den bereitgestellten Modus werden die Mindestanzahl an Event-Pollern sowie die Anzahl der während der Autoskalierung verbrauchten Event-Poller berechnet. Die Gebühren werden mithilfe einer Abrechnungseinheit namens Event Poller Unit (EPU) berechnet. Sie zahlen für die Anzahl und Dauer der verwendeten EPUs, gemessen in. Event-Poller-Unit-hours
Sie können den Bereitstellungsmodus entweder mit einem einzigen ESM für leistungssensitive Anwendungen verwenden oder Sie können mehrere ESMs innerhalb derselben VPC gruppieren, um die EPU-Kapazität und -Kosten gemeinsam zu nutzen. In den folgenden Abschnitten werden zwei Funktionen beschrieben, mit denen Sie Ihre Kosten für den Bereitstellungsmodus optimieren können. Preisdetails finden Sie unter AWS Lambda-Preise.
Verbesserte EPU-Nutzung
Jede EPU unterstützt bis zu 20 MB/s Durchsatzkapazitäten für Event-Polling und unterstützt standardmäßig 10 Event-Poller. Wenn Sie einen Bereitstellungsmodus für Kafka ESM erstellen, indem Sie die Mindest- und Höchstanzahl von Pollern festlegen, wird die Mindestanzahl von Pollern verwendet, um EPUs bereitzustellen, basierend auf der Standardeinstellung von 10 Event-Pollern pro EPU. Jeder Event-Poller kann jedoch unabhängig skaliert werden, um bis zu 5% MB/s der Durchsatzkapazität zu unterstützen. Dies erfordert möglicherweise eine geringere Dichte an Event-Pollern auf einer bestimmten EPU und kann eine Skalierung der EPUs auslösen. Die Anzahl der einer EPU zugewiesenen Event-Poller hängt von der Rechenkapazität ab, die von jedem Event-Poller verbraucht wird. Dieser Ansatz der verbesserten EPU-Nutzung ermöglicht es Event-Pollern mit unterschiedlichen Durchsatzanforderungen, die EPU-Kapazität effektiv zu nutzen und so die Kosten für alle ESMs zu senken.
ESM-Gruppierung
Um Ihre Kosten im Bereitstellungsmodus weiter zu optimieren, können Sie mehrere Kafka-ESMs so gruppieren, dass sie sich die EPU-Kapazität teilen. Mit ESM-Gruppierung und verbesserter EPU-Nutzung können Sie Ihre Kosten im Bereitstellungsmodus für Workloads mit geringem Durchsatz im Vergleich zur Ausführung im Single-ESM-Modus um bis zu 90% senken. Alle ESMs, die weniger als 1 EPU-Kapazität benötigen, profitieren von der ESM-Gruppierung. Solche ESMs benötigen in der Regel nur wenige Event-Poller, um ihren Durchsatzbedarf zu decken. Mit dieser Funktion können Sie den Bereitstellungsmodus für alle Ihre Kafka-Workloads verwenden und von Funktionen wie Schemavalidierung, Filterung von Avro/Protobuf Ereignissen, Aufrufen mit niedriger Latenz und verbesserter Fehlerbehandlung profitieren, die nur im Bereitstellungsmodus verfügbar sind.
Wenn Sie den PollerGroupName Parameter mit demselben Wert für mehrere ESMs innerhalb derselben Amazon VPC konfigurieren, teilen sich diese EPU-Ressourcen, anstatt dass für jede einzelne eine dedizierte EPU-Kapazität erforderlich ist. Sie können bis zu 100 ESMs pro Poller-Gruppe gruppieren, und die Gesamtzahl der Poller für alle ESMs in einer Gruppe darf 2000 nicht überschreiten.
So konfigurieren Sie die ESM-Gruppierung (Konsole)
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. Wählen Sie Ihre Funktion.
Wählen Sie Konfiguration und anschließend Auslöser aus.
Wenn Sie eine neue Kafka-Ereignisquellenzuordnung erstellen oder eine vorhandene bearbeiten, wählen Sie im Bereitstellungsmodus die Option Konfigurieren aus.
Geben Sie für Minimum Event Pollers einen Wert zwischen 1 und 200 ein.
Geben Sie für Maximum Event Pollers einen Wert zwischen 1 und 2000 ein.
Geben Sie für den Poller-Gruppennamen einen Bezeichner für die Gruppe ein. Verwenden Sie denselben Namen für andere ESMs, die Sie gruppieren möchten.
Wählen Sie Speichern.
Um die ESM-Gruppierung zu konfigurieren (AWS CLI)
Im folgenden Beispiel wird ein ESM mit einer Poller-Gruppe namens erstellt: production-app-group
aws lambda create-event-source-mapping \ --function-name myFunction1 \ --event-source-arn arn:aws:kafka:us-east-1:123456789012:cluster/MyCluster/abcd1234 \ --topics topic1 \ --starting-position LATEST \ --provisioned-poller-config '{ "MinimumPollers": 1, "MaximumPollers": 10, "PollerGroupName": "production-app-group" }'
Verwenden Sie dasselbe, um derselben Gruppe einen weiteren ESM hinzuzufügen (der sich die EPU-Kapazität teilt): PollerGroupName
aws lambda create-event-source-mapping \ --function-name myFunction2 \ --event-source-arn arn:aws:kafka:us-east-1:123456789012:cluster/MyCluster/abcd1234 \ --topics topic2 \ --starting-position LATEST \ --provisioned-poller-config '{ "MinimumPollers": 1, "MaximumPollers": 10, "PollerGroupName": "production-app-group" }'
Anmerkung
Sie können das aktualisierenPollerGroupName, um einen ESM in eine andere Gruppe zu verschieben, oder einen ESM aus einer Gruppe entfernen, indem Sie eine leere Zeichenfolge („“) übergeben für: PollerGroupName
# Move ESM to a different group aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{ "MinimumPollers": 1, "MaximumPollers": 10, "PollerGroupName": "new-group-name" }' # Remove ESM from group (use dedicated resources) aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{ "MinimumPollers": 1, "MaximumPollers": 10, "PollerGroupName": "" }'
Überlegungen zur Gruppierungsstrategie
Anwendungsgrenze — Gruppieren Sie ESMs, die zu denselben Anwendungen oder Diensten gehören, um die Kosten besser zuordnen und verwalten zu können. Erwägen Sie die Verwendung von Namenskonventionen wie
app-name-environment(zum Beispielorder-processor-prod).Verkehrsmuster — Vermeiden Sie es, ESMs mit hohem Durchsatz und starken Verkehrsmustern zu gruppieren, da dies zu Ressourcenkonflikten führen kann.
Explosionsradius — Berücksichtigen Sie die Auswirkungen von Problemen mit der gemeinsam genutzten Infrastruktur. Alle ESMs in derselben Gruppe sind von Beschränkungen gemeinsam genutzter Ressourcen betroffen. Für unternehmenskritische Workloads möchten Sie möglicherweise separate Gruppen oder dedizierte ESMs verwenden.
Beispiel für eine Kostenoptimierung
Stellen Sie sich ein Szenario vor, in dem Sie 10 ESMs haben, die jeweils mit einem Event-Poller konfiguriert sind und der Durchsatz unter 2 liegt: MB/s
Ohne Gruppierung:
Jeder ESM benötigt eine eigene EPU
Insgesamt benötigte EPUs: 10
Kosten pro EPU: 0$. 185/hour im Osten der USA (Nord-Virginia)
Monatliche EPU-Kosten (720 Stunden): 10 × 720 × 0,185$ = 1.332$
Mit Gruppierung:
Alle 10 ESMs teilen sich die EPU-Kapazität
10 Event-Poller passen in 1 EPU (mit der neuen Unterstützung von 10 Pollern pro EPU)
Insgesamt benötigte EPUs: 1
Monatliche EPU-Kosten (720 Stunden): 1 × 720 × 0,185$ = 133,20$
Kosteneinsparungen: 90% (Einsparungen in Höhe von 1.198,80 USD pro Monat)