Verarbeitung mit niedriger Latenz für Kafka-Ereignisquellen - AWS Lambda

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.

Verarbeitung mit niedriger Latenz für Kafka-Ereignisquellen

AWS Lambda unterstützt nativ die Ereignisverarbeitung mit niedriger Latenz für Anwendungen, die konsistente end-to-end Latenzen von weniger als 100 Millisekunden benötigen. Diese Seite enthält Konfigurationsdetails und Empfehlungen zur Aktivierung von Workflows mit niedriger Latenz.

Aktivieren Sie die Verarbeitung mit niedriger Latenz

Um die Verarbeitung mit niedriger Latenz für eine Kafka-Ereignisquellenzuordnung zu aktivieren, ist die folgende Grundkonfiguration erforderlich:

Feinabstimmung Ihres Kafka ESM mit niedriger Latenz

Beachten Sie die folgenden Empfehlungen, um Ihr Kafka-Event-Quellen-Mapping für niedrige Latenz zu optimieren:

Konfiguration im Bereitstellungsmodus

Im Bereitstellungsmodus für die Zuordnung von Kafka-Ereignisquellen ermöglicht Ihnen Lambda die Feinabstimmung des Durchsatzes Ihrer Ereignisquellenzuordnung, indem Sie eine Mindest- und Höchstzahl von Ressourcen konfigurieren, die als Event-Poller bezeichnet werden. Ein Event Poller (oder ein Poller) stellt eine Rechenressource dar, die einer Zuordnung von Ereignisquellen im bereitgestellten Modus zugrunde liegt und bis zu 5 Durchsätze zuweist. MB/s Jeder Event-Poller unterstützt bis zu 5 gleichzeitige Lambda-Aufrufe.

Um die optimale Poller-Konfiguration für Ihre Anwendung zu ermitteln, sollten Sie Ihre maximale Aufnahmerate und Ihre Verarbeitungsanforderungen berücksichtigen. Schauen wir uns ein vereinfachtes Beispiel an:

Bei einer Batchgröße von 20 Datensätzen und einer durchschnittlichen Zielfunktionsdauer von 50 ms kann jeder Poller 2.000 Datensätze pro Sekunde verarbeiten, wobei eine Grenze von 5 MB/s eingehalten wird. Dies wird wie folgt berechnet: (20 Datensätze × 1000 ms/50 ms) × 5 gleichzeitige Lambda-Aufrufe. Wenn Ihre gewünschte maximale Aufnahmerate 20.000 Datensätze pro Sekunde beträgt, benötigen Sie daher mindestens 10 Event-Poller.

Anmerkung

Wir empfehlen, zusätzliche Event-Poller als Puffer bereitzustellen, um zu verhindern, dass ständig mit maximaler Kapazität gearbeitet wird.

Im Bereitstellungsmodus werden Ihre Event-Poller automatisch auf der Grundlage von Datenverkehrsmustern innerhalb der konfigurierten Mindest- und Maximalwerte skaliert. Dies kann zu einer Neuverteilung und somit zu zusätzlicher Latenz führen. Sie können die auto-scaling deaktivieren, indem Sie denselben Wert für den minimalen und maximalen Event-Poller konfigurieren.

Weitere Überlegungen

Zu den zusätzlichen Überlegungen gehören:

  • Kaltstarts beim Aufruf Ihrer Lambda-Zielfunktion können die Latenz potenziell erhöhen end-to-end. Um dieses Risiko zu verringern, sollten Sie in Erwägung ziehen, die bereitgestellte Parallelität oder SnapStartdie Zielfunktion Ihres Event-Quellen-Mappings zu aktivieren. Optimieren Sie außerdem die Speicherzuweisung Ihrer Funktion, um eine konsistente und optimale Ausführung zu gewährleisten.

  • Wenn auf 0 gesetzt MaximumBatchingWindowInSeconds ist, verarbeitet Lambda sofort alle verfügbaren Datensätze, ohne darauf zu warten, dass die gesamte Batchgröße gefüllt wird. Wenn Ihre Batchgröße beispielsweise auf 1.000 Datensätze festgelegt ist, aber nur 100 Datensätze verfügbar sind, verarbeitet Lambda diese 100 Datensätze sofort, anstatt darauf zu warten, dass sich die gesamten 1.000 Datensätze ansammeln.

Wichtig

Die optimale Konfiguration für die Verarbeitung mit niedriger Latenz hängt stark von Ihrer spezifischen Arbeitslast ab. Wir empfehlen dringend, verschiedene Konfigurationen mit Ihrer tatsächlichen Arbeitslast zu testen, um die besten Einstellungen für Ihren Anwendungsfall zu ermitteln.