Repartitionnement, mise à l'échelle et traitement parallèle - 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.

Repartitionnement, mise à l'échelle et traitement parallèle

Le repartitionnement vous permet d'augmenter ou de diminuer le nombre de partitions dans un flux afin de faire face aux modifications de la vitesse de circulation des données dans le flux. En général, le repartitionnement est effectué par une application administrative qui surveille les métriques de traitement des données de partition. Bien que la KCL elle-même ne soit pas à l'origine des opérations de repartitionnement, elle est conçue pour faire face aux modifications du nombre de partitions que provoque le repartitionnement.

Comme indiqué dansUtilisation d'une table de location pour suivre les partitions traitées par l'application Consumer KCL, la KCL suit les partitions du flux à l'aide d'une table Amazon DynamoDB. Lorsque de nouvelles partitions sont créées à la suite du repartitionnement, la KCL détecte les nouvelles partitions et remplit de nouvelles lignes dans la table. Les applications de travail détectent automatiquement les nouvelles partitions et créent des processeurs pour traiter les données qu'elles contiennent. La KCL répartit également les partitions du flux entre toutes les applications de travail et processeurs d'enregistrements disponibles.

La KCL garantit que les données qui existaient dans les partitions avant le repartitionnement son traitées en premier. Une fois que les données ont été traitées, les données issues des nouvelle partitions sont envoyées aux processeurs d'enregistrements. Ainsi, la KCL conserve l'ordre dans lequel les enregistrements de données ont été ajoutés au flux pour une clé de partition spécifique.

Exemple : Repartitionnement, mise à l'échelle et traitement parallèle

L'exemple suivant illustre comment la KCL vous permet de gérer la mise à l'échelle et le repartitionnement :

  • Par exemple, si votre application s'exécute sur une instance EC2 et traite un flux de données Kinesis contenant quatre partitions. Cette instance a un application de travail KCL et quatre processeurs d'enregistrements (un processeur d'enregistrements pour chaque partition). Ces quatre processeurs d'enregistrements s'exécutent en parallèle dans le même processus.

  • Ensuite, si vous mettez à l'échelle l'application pour utiliser une autre instance, vous avez deux instances qui traitent un flux qui contient quatre partitions. Lorsque le travailleur KCL démarre sur la deuxième instance, il équilibre la charge avec la première instance afin que chaque instance traite désormais deux partitions.

  • Si vous décidez ensuite de fractionner les quatre partitions en cinq partitions. La KCL coordonne à nouveau le traitement entre les instances : une instance traite trois partitions et l'autre traite deux partitions. Une coordination similaire se produit lorsque vous fusionnez des partitions.

En règle générale, lorsque vous utilisez la KCL, vous devez vous assurer que le nombre d'instances ne dépasse pas le nombre de partitions (sauf en cas de reprise sur incident). Chaque partition est traitée par une seule application de travail KCL et a exactement un processeur d'enregistrements correspondant ; vous n'avez donc jamais besoin de plusieurs instances pour traiter une seule partition. Cependant, une seul application de travail peut traiter tout nombre de partitions, et il est donc approprié que le nombre de partitions dépasse le nombre d'instances.

Pour faire monter le traitement en puissance dans votre application, vous devez tester une combinaison des méthodes suivantes :

  • Augmentation de la taille de l'instance (car tous les processeurs d'enregistrements s'exécutent en parallèle dans un processus)

  • Augmentation du nombre d'instances jusqu'au nombre maximal de partitions ouvertes (car les partitions peuvent être traitées de façon indépendante)

  • Augmentation du nombre de partitions (ce qui augmente le niveau de parallélisme)

Notez que vous pouvez utiliser Auto Scaling pour mettre à l'échelle automatiquement vos instances sur la base des métriques appropriées. Pour plus d'informations, consultez le Guide de l'utilisateur Amazon EC2 Auto Scaling.

Lorsque le repartitionnement augmente le nombre de partitions du flux, l'augmentation correspondante du nombre de processeurs d'enregistrements augmente la charge sur les instances EC2 qui les hébergent. Si les instances font partie d'un groupe Auto Scaling et que la charge augmente suffisamment, le groupe Auto Scaling ajoute des instances pour gérer l'augmentation de la charge. Vous devez configurer vos instances pour lancer votre application Amazon Kinesis Data Streams au démarrage, afin que les applications de travail et processeurs d'enregistrements supplémentaires deviennent actifs immédiatement sur la nouvelle instance.

Pour en savoir plus sur le repartitionnement, référez-vous à la section Repartitionnement d'un flux.