Traitement à faible latence pour les sources d’événements Kafka
AWS Lambda prend en charge de manière native le traitement des événements à faible latence pour les applications qui nécessitent des latences constantes de bout en bout inférieures à 100 millisecondes. Cette page fournit des informations de configuration et des recommandations pour permettre des flux de travail à faible latence.
Activer le traitement à faible latence
Pour activer le traitement à faible latence sur un mappage des sources d’événements Kafka, la configuration de base suivante est requise :
-
Activez le mode provisionné. Pour de plus amples informations, consultez Mode alloué.
-
Définissez le paramètre du mappage des sources d’événements
MaximumBatchingWindowInSecondssur 0. Pour de plus amples informations, consultez Comportement de traitement par lots.
Peaufinage de votre ESM Kafka à faible latence
Tenez compte des recommandations suivantes pour optimiser votre mappage des sources d’événements Kafka pour une faible latence :
Configuration du mode provisionné
En mode provisionné pour le mappage des sources d’événements Kafka, Lambda vous permet d’optimiser le débit de votre mappage des sources d’événements en configurant des nombres minimal et maximal de ressources appelées sondeurs d’événements. Un sondeur d’événements (ou sondeur) représente une ressource de calcul qui sous-tend le mappage des sources d’événements en mode provisionné et alloue un débit allant jusqu’à 5 Mo/s. Chaque sondeur d’événements prend en charge jusqu’à 5 invocations Lambda simultanées.
Pour déterminer la configuration optimale de sondeurs pour votre application, tenez compte de votre taux d’ingestion maximal et de vos exigences de traitement. Étudions un exemple simplifié :
Avec une taille de lot de 20 enregistrements et une durée de fonction cible moyenne de 50 ms, chaque sondeur peut traiter 2 000 enregistrements par seconde dans la limite de 5 Mo/s. Le calcul est le suivant : (20 enregistrements × 1 000 ms/50 ms) × 5 appels Lambda simultanés. Par conséquent, si le taux d’ingestion maximal souhaité est de 20 000 enregistrements par seconde, vous aurez besoin d’au moins 10 sondeurs d’événements.
Note
Nous vous recommandons de prévoir des sondeurs d’événements supplémentaires en tant que tampon de sûreté afin d’éviter de fonctionner constamment à pleine capacité.
Le mode provisionné met à l’échelle vos sondeurs d’événements automatiquement en fonction des modèles de trafic dans les limites minimales et maximales de sondeurs d’événements configurées, ce qui peut déclencher un rééquilibrage, et par conséquent introduire une latence supplémentaire. Vous pouvez désactiver l’autoscaling en configurant la même valeur pour le nombre minimal et maximal de sondeurs d’événements.
Considérations supplémentaires
Voici quelques considérations supplémentaires :
Les démarrages à froid à partir de l’invocation de votre fonction cible Lambda peuvent augmenter la latence de bout en bout. Pour réduire ce risque, pensez à activer la simultanéité provisionnée ou SnapStart sur la fonction cible de votre mappage des sources d’événements. En outre, optimisez l’allocation de mémoire de votre fonction pour garantir des exécutions cohérentes et optimales.
-
Lorsque vous définissez
MaximumBatchingWindowInSecondssur 0, Lambda traite immédiatement tous les enregistrements disponibles sans attendre de remplir la taille complète du lot. Par exemple, si la taille de votre lot est définie sur 1 000 enregistrements, mais que seuls 100 enregistrements sont disponibles, Lambda traitera ces 100 enregistrements immédiatement plutôt que d’attendre que les 1 000 enregistrements complets soient accumulés.
Important
La configuration optimale pour un traitement à faible latence varie considérablement selon votre charge de travail spécifique. Nous vous recommandons vivement de tester différentes configurations avec votre charge de travail réelle afin de déterminer les meilleurs paramètres pour votre cas d’utilisation.