Traitement à faible latence - Amazon Kinesis Data Streams

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Traitement à faible latence

Retard de propagationest définie comme laend-to-endla latence à partir du moment où un enregistrement est écrit dans le flux jusqu'à ce qu'il soit lu par une application consommateur. Ce délai varie en fonction d'un certain nombre de facteurs, mais il est surtout modifié par l'intervalle d'interrogation des applications consommateur.

Pour la plupart des applications, nous recommandons d'interroger chaque partition une fois par seconde par application. Ainsi, plusieurs applications consommateur peuvent traiter un flux simultanément sans atteindre les limites d'Amazon Kinesis Data Streams de 5.GetRecordspar seconde En outre, traiter de gros lots de données a tendance à être plus efficace pour réduire les latences réseau et les autres latences en aval dans votre application.

Les valeurs par défaut de KCL sont définies pour suivre les meilleures pratiques d'interrogation toutes les secondes. Elles génère des délais de propagation normalement inférieurs à 1 seconde.

Les enregistrements Kinesis Data Streams sont disponibles pour la lecture immédiatement après avoir été écrits. Il existe quelques cas d'utilisation qui ont besoin de tirer parti de cet avantage et d'utiliser les données du flux dès qu'elles sont disponibles. Vous pouvez réduire sensiblement le délai de propagation en remplaçant les paramètres par défaut de KCL pour interroger plus fréquemment, comme le montrent les exemples ci-après.

Code de configuration Java KCL :

kinesisClientLibConfiguration = new KinesisClientLibConfiguration(applicationName, streamName, credentialsProvider, workerId).withInitialPositionInStream(initialPositionInStream).withIdleTimeBetweenReadsInMillis(250);

Paramètres du fichier de propriétés pour Python et Ruby KCL :

idleTimeBetweenReadsInMillis = 250
Note

Parce que Kinesis Data Streams a une limite de 5GetRecordspar seconde et par partition, définissant la valeuridleTimeBetweenReadsInMillisinférieure à 200 ms peut entraîner l'observation de votre applicationProvisionedThroughputExceededExceptionexception. Une trop grande partie de ces exceptions peuvent engendrer des interruptions exponentielles et provoquer ainsi des latences de traitement inattendues significatives. Si vous définissez cette propriété sur une valeur égale ou juste supérieure à 200 ms et que vous avez plusieurs applications de traitement, vous constaterez une limitation similaire.