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 Durchsatzmöglichkeiten, 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 einziger Kafka-Event-Poller 5 MB/sec Durchsatz- und 5 gleichzeitige Lambda-Aufrufe unterstützen (vorausgesetzt, es gibt keine Payload-Transformation). Für Amazon SQS kann jeder Event Poller bis zu 1 MB/sec Durchsatz oder bis zu 10 gleichzeitige Aufrufe verarbeiten. Bei der Verwendung des Bereitstellungsmodus fallen zusätzliche Kosten an, die von Ihrer Nutzung des Event-Pollers abhängen. Details zu den Preisen finden Sie unter AWS Lambda -Preise
Anmerkung
Wenn Sie den Bereitstellungsmodus verwenden, müssen Sie im Rahmen Ihrer Netzwerkkonfiguration keine AWS PrivateLink VPC-Endpoints 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 Best Practices.
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 Bereitstellungsmodus programmgesteuert mithilfe des Objekts in Ihrem konfigurieren. ProvisionedPollerConfig EventSourceMappingConfiguration Der folgende UpdateEventSourceMappingCLI-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 (auf Abruf) zurückzukehren, können Sie den folgenden UpdateEventSourceMappingCLI-Befehl verwenden:
aws lambda update-event-source-mapping \ --uuid a1b2c3d4-5678-90ab-cdef-EXAMPLE11111 \ --provisioned-poller-config '{}'
Erweiterte Funktionen zur Fehlerbehandlung und Leistung
Für Kafka-Ereignisquellenzuordnungen mit aktiviertem Bereitstellungsmodus können Sie zusätzliche Funktionen konfigurieren, um die Fehlerbehandlung und Leistung zu verbessern:
-
Wiederholungskonfigurationen — Steuern Sie, wie Lambda mit fehlgeschlagenen Datensätzen umgeht, indem Sie maximale Wiederholungsversuche, Altersbeschränkungen für Datensätze, Batch-Splitting und partielle Batch-Antworten festlegen.
-
Kafka-Ziele bei einem Ausfall — 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 zu ermitteln, wie viele Event-Poller mindestens erforderlich sind, sollten Sie die Nachrichten pro Sekunde Ihres Workloads und die durchschnittliche Payload-Größe berücksichtigen und die Durchsatzkapazität eines einzelnen Event-Pollers (bis zu 5) als Referenz verwenden. MBps
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.
Kostenoptimierung für den Bereitstellungsmodus
Preisgestaltung im Bereitstellungsmodus
Der Bereitstellungsmodus wird auf der Grundlage der bereitgestellten Mindestanzahl an Event-Pollern und der Anzahl der während der automatischen Skalierung verbrauchten Event-Poller berechnet. Die Gebühren werden anhand einer Abrechnungseinheit berechnet, die als Event Poller Unit (EPU) bezeichnet wird. Sie zahlen für die Anzahl und Dauer der EPUs Nutzung, 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 EPU-Kapazität und Kosten gemeinsam zu nutzen. Wir werden uns eingehend mit zwei Funktionen befassen, 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 Ereignisabfragen und unterstützt standardmäßig 10 Ereignisabfragen. Wenn Sie einen Bereitstellungsmodus für Kafka ESM erstellen, indem Sie Mindest- und Höchstwerte für Poller festlegen, wird für die Bereitstellung eine Mindestanzahl von Pollern verwendet, EPUs 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, was möglicherweise eine geringere Dichte von Event-Pollern auf einer bestimmten EPU erfordert und eine Skalierung von auslösen kann. EPUs Die Anzahl der Event Poller, die einer EPU zugewiesen sind, 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 zu senken. ESMs
ESM-Gruppierung
Um Ihre Kosten für den Bereitstellungsmodus weiter zu optimieren, können Sie mehrere Kafka gruppieren, um die EPU-Kapazität gemeinsam ESMs zu nutzen. Mit ESM-Gruppierung und verbesserter EPU-Nutzung können Sie die Kosten für Workloads mit geringem Durchsatz im Bereitstellungsmodus um bis zu 90% senken, verglichen mit der Ausführung im ESM-Modus. Alle ESMs , die weniger als 1 EPU-Kapazität benötigen, profitieren von der ESM-Gruppierung. Für solche Anwendungen sind ESMs in der Regel nur wenige Mindestanzahl an Event-Pollern erforderlich, um ihren Durchsatzbedarf zu decken. Mit dieser Funktion können Sie den Bereitstellungsmodus für all Ihre Kafka-Workloads verwenden und von Funktionen wie Schemavalidierung, Filterung von Avro/Protobuf Ereignissen, Aufrufen mit geringer 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, ESMs teilen sich diese EPU-Ressourcen, anstatt jeweils eine eigene EPU-Kapazität zu benötigen. Sie können bis zu 100 ESMs pro Abfragergruppe gruppieren, wobei die maximale Gesamtzahl der Abfragenden ESMs in einer Gruppe 2000 nicht überschreiten darf.
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 bestehende 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 unter Poller-Gruppenname einen Bezeichner für die Gruppe ein. Verwenden Sie denselben Namen für andere Personen, die ESMs Sie gruppieren möchten.
Wählen Sie Speichern.
So konfigurieren Sie die ESM-Gruppierung (CLI)AWS
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" }'
Um derselben Gruppe einen weiteren ESM hinzuzufügen (mit gemeinsamer EPU-Kapazität), verwenden Sie dasselbe: 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 den 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 — Gruppen ESMs , die zu denselben Anwendungen oder Diensten gehören, um die Kosten besser verteilen und verwalten zu können. Erwägen Sie die Verwendung von Namenskonventionen wie
app-name-environment(z. B.order-processor-prod).Verkehrsmuster — Vermeiden Sie Gruppierungen ESMs mit hohem Durchsatz und starken Datenverkehrsmustern, da dies zu Ressourcenkonflikten führen kann.
Explosionsradius — Berücksichtigen Sie die Auswirkungen, wenn Probleme mit der gemeinsam genutzten Infrastruktur auftreten. Alle ESMs Mitglieder derselben Gruppe sind von Beschränkungen gemeinsam genutzter Ressourcen betroffen. Für geschäftskritische Workloads möchten Sie möglicherweise separate oder dedizierte Gruppen verwenden. ESMs
Beispiel für Kostenoptimierung
Stellen Sie sich ein Szenario vor, in dem Sie 10 haben ESMs, die jeweils mit einem Event Poller und einem Durchsatz von unter 2 MB/s konfiguriert sind:
Ohne Gruppierung:
Jeder ESM benötigt eine eigene EPU
Insgesamt EPUs benötigt: 10
Kosten pro EPU: 0,185 USD/Stunde in USA Ost (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 neuer Unterstützung für 10 Poller pro EPU)
Insgesamt benötigt: 1 EPUs
Monatliche EPU-Kosten (720 Stunden): 1 × 720 × 0,185$ = 133,20$
Kosteneinsparungen: 90% (Einsparungen von 1.198,80 USD pro Monat)