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.
KCLInformations 1.x et 2.x
Note
Les versions 1.x et 2.x de Kinesis Client Library (KCL) sont obsolètes. Nous vous recommandons de migrer vers KCLla version 3.x, qui offre des performances améliorées et de nouvelles fonctionnalités. Pour accéder à la KCL documentation et au guide de migration les plus récents, consultezUtiliser la bibliothèque cliente Kinesis.
L'une des méthodes de développement d'applications grand public personnalisées capables de traiter des données issues de flux de KDS données consiste à utiliser la bibliothèque cliente Kinesis ()KCL.
Rubriques
- À propos KCL (versions précédentes)
- KCLversions précédentes
- KCLconcepts (versions précédentes)
- Utilisez un tableau des baux pour suivre les partitions traitées par l'application KCL client
- Traitez plusieurs flux de données avec le même KCL 2.x pour une application grand public Java
- Utiliser le KCL avec le registre des AWS Glue schémas
Note
Pour les versions KCL 1.x et KCL 2.x, il est recommandé de passer à la dernière version KCL 1.x ou KCL 2.x, selon votre scénario d'utilisation. Les versions KCL 1.x et KCL 2.x sont régulièrement mises à jour avec de nouvelles versions qui incluent les derniers correctifs de dépendance et de sécurité, des corrections de bogues et de nouvelles fonctionnalités rétrocompatibles. Pour plus d'informations, consultez https://github.com/awslabs/amazon-kinesis-client/releases
À propos KCL (versions précédentes)
KCLvous aide à consommer et à traiter les données issues d'un flux de données Kinesis en prenant en charge de nombreuses tâches complexes associées à l'informatique distribuée. Il s'agit notamment de l'équilibrage de charge entre plusieurs instances d'applications consommateur, de la réponse aux défaillances des instances d'applications consommateur, du contrôle des enregistrements traités et de la réaction au repartitionnement. KCLTh s'occupe de toutes ces sous-tâches afin que vous puissiez concentrer vos efforts sur l'écriture de votre logique de traitement des enregistrements personnalisée.
KCLIl est différent des Kinesis Data APIs Streams disponibles dans le AWS SDKs. Les Kinesis Data APIs Streams vous aident à gérer de nombreux aspects de Kinesis Data Streams, notamment la création de flux, le repartage, ainsi que le transfert et l'obtention d'enregistrements. KCLIl fournit une couche d'abstraction autour de toutes ces sous-tâches, notamment pour que vous puissiez vous concentrer sur la logique de traitement des données personnalisée de votre application client. Pour plus d'informations sur les Kinesis Data API Streams, consultez le API Amazon Kinesis Reference.
Important
KCLIl s'agit d'une bibliothèque Java. Support pour les langages autres que Java est fourni à l'aide d'une interface multilingue appelée. MultiLangDaemon Ce démon est basé sur Java et s'exécute en arrière-plan lorsque vous utilisez un KCL langage autre que Java. Par exemple, si vous installez le KCL pour Python et que vous écrivez votre application grand public entièrement en Python, vous devez toujours installer Java sur votre système en raison du MultiLangDaemon. En outre, MultiLangDaemon comporte certains paramètres par défaut que vous devrez peut-être personnaliser en fonction de votre cas d'utilisation, par exemple, la AWS région à laquelle il se connecte. Pour plus d'informations sur l' MultiLangDaemon on GitHub, voir le KCL MultiLangDaemon projet
Il KCL agit comme un intermédiaire entre votre logique de traitement des enregistrements et Kinesis Data Streams.
KCLversions précédentes
À l'heure actuelle, vous pouvez utiliser l'une des versions prises en charge suivantes KCL pour créer vos applications grand public personnalisées :
-
KCL1. x
Pour plus d’informations, consultez Développez des KCL consommateurs 1.x.
-
KCL2. x
Pour plus d’informations, consultez Développez des KCL consommateurs 2.x.
Vous pouvez utiliser KCL 1.x ou KCL 2.x pour créer des applications grand public utilisant un débit partagé. Pour de plus amples informations, veuillez consulter Développez des consommateurs personnalisés avec un débit partagé en utilisant KCL.
Pour créer des applications grand public utilisant un débit dédié (consommateurs ventilés améliorés), vous ne pouvez utiliser que la version 2.x. KCL Pour de plus amples informations, veuillez consulter Développez des clients fans améliorés grâce à un débit dédié.
Pour plus d'informations sur les différences entre la version KCL 1.x et la version KCL 2.x, et pour obtenir des instructions sur la façon de migrer de la version KCL 1.x vers la version KCL 2.x, consultez. Migrer les consommateurs de la version KCL 1.x vers la version KCL 2.x
KCLconcepts (versions précédentes)
-
KCLapplication grand public : application conçue sur mesure pour lire KCL et traiter des enregistrements à partir de flux de données.
-
Instance d'application KCL grand public : les applications grand public sont généralement distribuées, une ou plusieurs instances d'application s'exécutant simultanément afin de coordonner les défaillances et d'équilibrer dynamiquement la charge du traitement des enregistrements de données.
-
Travailleur : classe de haut niveau utilisée par une instance d'application KCL grand public pour commencer à traiter des données.
Important
Chaque instance d'application KCL grand public possède un travailleur.
L'application de travail initialise et supervise diverses tâches, y compris la synchronisation des informations de partition et de bail, le suivi des affectations de partitions et le traitement des données provenant des partitions. Un travailleur fournit KCL les informations de configuration de l'application client, telles que le nom du flux de données dont cette application KCL client va traiter les enregistrements de données et les AWS informations d'identification nécessaires pour accéder à ce flux de données. Le travailleur lance également cette instance d'application KCL client spécifique pour fournir des enregistrements de données du flux de données aux processeurs d'enregistrements.
Important
Dans la KCL version 1.x, cette classe s'appelle Worker. Pour plus d'informations (il s'agit des KCL référentiels Java), consultez https://github.com/awslabs/amazon-kinesis-client/blob/v1.x/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/Worker.java
. Dans la KCL version 2.x, cette classe s'appelle Scheduler. L'objectif du planificateur dans la version KCL 2.x est identique à celui du Worker dans la version 1.x. KCL Pour plus d'informations sur la classe Scheduler dans la version KCL 2.x, consultez https://github.com/awslabs/amazon-kinesis-client/.java. blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/coordinator/Scheduler -
Bail : données qui définissent le lien entre une application de travail et une partition. Les applications KCL grand public distribuées utilisent des contrats de location pour répartir le traitement des enregistrements de données entre un parc de travailleurs. À tout moment, chaque fragment d'enregistrements de données est lié à un travailleur en particulier par un bail identifié par la leaseKeyvariable.
Par défaut, un travailleur peut détenir un ou plusieurs baux (sous réserve de la valeur de la variable maxLeasesForWorker) en même temps.
Important
Chaque application de travail devra posséder tous les baux disponibles pour toutes les partitions disponibles dans un flux de données. Cependant, à tout moment, une seule application de travail peut posséder avec succès un bail spécifique.
Par exemple, si vous avez une instance d'application consommateur A avec l'application de travail A qui traite un flux de données contenant 4 partitions, l'application de travail A peut posséder simultanément des baux pour les partitions 1, 2, 3 et 4. Cependant, si vous avez deux instances d'applications consommateur, nommées A et B, chacune avec sa propre application de travail (application de travail A et application de travail B), traitant un flux de données composé de 4 partitions, alors l'application de travail A et l'application de travail B ne peuvent pas détenir simultanément le bail de la partition 1. Une application de travail possède le bail d'une partition spécifique jusqu'à ce qu'elle soit prête à arrêter de traiter les enregistrements de données de cette partition ou jusqu'à ce qu'elle rencontre une défaillance. Lorsqu'une application de travail cesse de possède le bail, une autre application de travail prend et possède ce bail.
Pour plus d'informations (il s'agit des KCL référentiels Java), consultez https://github.com/awslabs/amazon-kinesis-client/blob/v1.x/src/main/java/com/amazonaws/services/kinesis/leases/impl/Lease.java pour KCL 1.x et https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/Lease.java
pour 2.x. KCL -
Table des baux : table Amazon DynamoDB unique utilisée pour suivre les partitions d'KDSun flux de données louées et traitées par les employés de l'application client. KCL La table des baux doit rester synchronisée (au sein d'un travailleur et entre tous les travailleurs) avec les dernières informations relatives aux partitions provenant du flux de données pendant l'exécution de l'application KCL client. Pour de plus amples informations, veuillez consulter Utilisez un tableau des baux pour suivre les partitions traitées par l'application KCL client.
-
Processeur d'enregistrement : logique qui définit la manière dont votre application KCL client traite les données issues des flux de données. Au moment de l'exécution, une instance d'application KCL grand public instancie un travailleur, qui instancie un processeur d'enregistrement pour chaque partition qu'il loue.
Utilisez un tableau des baux pour suivre les partitions traitées par l'application KCL client
Rubriques
Qu'est-ce qu'une table de location
Pour chaque application Amazon Kinesis Data StreamsKCL, utilise une table de location unique (stockée dans une table Amazon DynamoDB) afin de suivre les fragments KDS d'un flux de données loués et traités par les employés de l'application client. KCL
Important
KCLutilise le nom de l'application client pour créer le nom de la table de location utilisée par cette application client. Par conséquent, chaque nom d'application client doit être unique.
Vous pouvez consulter cette table à l'aide de la console Amazon DynamoDB lors que l'application est en cours d'exécution.
Si la table des baux de votre application KCL client n'existe pas au démarrage de l'application, l'un des travailleurs crée la table des baux pour cette application.
Important
Votre compte est facturé pour les coûts associés à la table DynamoDB, en plus des coûts associés au service Kinesis Data Streams lui-même.
Chaque ligne de la table des baux représente une partition qui est en cours de traitement par les applications de travail de votre application consommateur. Si votre application KCL client ne traite qu'un seul flux de données, leaseKey
l'ID de partition est la clé de hachage de la table de location. Si c'est le casTraitez plusieurs flux de données avec le même KCL 2.x pour une application grand public Java, alors la structure du leaseKey ressemble à ceci :account-id:StreamName:streamCreationTimestamp:ShardId
. Par exemple, 111111111:multiStreamTest-1:12345:shardId-000000000336
.
En plus de l'ID de partition, chaque ligne inclut également les données suivantes :
-
checkpoint : le plus récent numéro de séquence de point de contrôle de la partition. Cette valeur est unique dans toutes les partitions du flux de données.
-
checkpointSubSequenceNuméro : lorsque vous utilisez la fonctionnalité d'agrégation de la bibliothèque Kinesis Producer, il s'agit d'une extension du point de contrôle qui permet de suivre les enregistrements utilisateur individuels au sein de l'enregistrement Kinesis.
-
leaseCounter: utilisé pour le contrôle des versions de bail afin que les travailleurs puissent détecter que leur bail a été pris par un autre travailleur.
-
leaseKey: identifiant unique pour un bail. Chaque bail est propre à une partition du flux de données et est détenu par une seule application de travail à la fois.
-
leaseOwner: Le travailleur titulaire de ce bail.
-
ownerSwitchesSincePoint de contrôle : combien de fois ce bail a changé de travailleur depuis la dernière fois qu'un point de contrôle a été écrit.
-
parentShardId: Utilisé pour garantir que la partition parent est entièrement traitée avant le début du traitement sur les partitions enfants. Cela garantit que les enregistrements sont traités dans l'ordre dans lequel ils ont été placés dans le flux.
-
hashrange : utilisé par le
PeriodicShardSyncManager
pour exécuter des synchronisations périodiques afin de trouver les partitions manquantes dans la table des baux et de créer des baux pour celles-ci si nécessaire.Note
Ces données sont présentes dans le tableau des baux pour chaque partition à partir des versions KCL 1.14 et KCL 2.3. Pour plus d'informations sur
PeriodicShardSyncManager
et la synchronisation périodique entre les baux et les partitions, consultez Comment une table de location est synchronisée avec les partitions d'un flux de données Kinesis. -
childshards : utilisé par le
LeaseCleanupManager
pour vérifier l'état de traitement de la partition enfant et décider si la partition parent peut être supprimée de la table des baux.Note
Ces données sont présentes dans le tableau des baux pour chaque partition à partir des versions KCL 1.14 et KCL 2.3.
-
shardID : ID de la partition.
Note
Ces données ne sont présentes dans le tableau des baux que si vous êtes Traitez plusieurs flux de données avec le même KCL 2.x pour une application grand public Java. Ceci n'est pris en charge que dans la version KCL 2.x pour Java, à partir de la version KCL 2.3 pour Java et versions ultérieures.
-
nom du flux : identifiant du flux de données au format suivant :
account-id:StreamName:streamCreationTimestamp
.Note
Ces données ne sont présentes dans le tableau des baux que si vous êtes Traitez plusieurs flux de données avec le même KCL 2.x pour une application grand public Java. Ceci n'est pris en charge que dans la version KCL 2.x pour Java, à partir de la version KCL 2.3 pour Java et versions ultérieures.
Débit
Si votre application Amazon Kinesis Data Streams reçoit des exceptions de débit provisionné, vous devez augmenter le débit provisionné pour la table DynamoDB. La table est KCL créée avec un débit provisionné de 10 lectures par seconde et 10 écritures par seconde, mais cela risque de ne pas être suffisant pour votre application. Par exemple, si votre application Amazon Kinesis Data Streams effectue des contrôles fréquents ou fonctionne sur un flux composé de nombreuses partitions, il se peut que vous ayez besoin d'un débit plus élevé.
Pour plus d'informations sur le débit provisionné dans DynamoDB consultez les rubriques Mode de capacité en lecture/écriture et Utilisation des tables et des données dans le Guide du développeur Amazon DynamoDB.
Comment une table de location est synchronisée avec les partitions d'un flux de données Kinesis
Les employés des applications KCL grand public utilisent des contrats de location pour traiter les fragments provenant d'un flux de données donné. Les informations relatives à l'application de travail qui loue une partition à un moment donné sont stockées dans une table des baux. La table des baux doit rester synchronisée avec les dernières informations relatives à la partition provenant du flux de données pendant l'exécution de l'application KCL client. KCLsynchronise la table des baux avec les informations relatives aux partitions obtenues auprès du service Kinesis Data Streams lors du démarrage de l'application client (soit lorsque l'application client est initialisée, soit redémarrée) et également chaque fois qu'une partition en cours de traitement arrive à son terme (repartage). En d'autres termes, les applications de travail ou de KCL consommation sont synchronisées avec le flux de données qu'elles traitent lors du démarrage initial de l'application client et chaque fois que l'application client rencontre un événement de reconfiguration du flux de données.
Rubriques
Synchronisation en KCL 1.0 - 1.13 et KCL 2.0 - 2.2
Dans les KCL versions 1.0 à 1.13 et KCL 2.0 à 2.2, lors du démarrage de l'application client et également lors de chaque événement de reconfiguration du flux de données, KCL synchronise la table des baux avec les informations relatives aux partitions obtenues auprès du service Kinesis Data Streams en invoquant le ou la découverte. ListShards
DescribeStream
APIs Dans toutes les KCL versions répertoriées ci-dessus, chaque utilisateur d'une application KCL client effectue les étapes suivantes pour effectuer le processus de synchronisation entre location et partition lors du démarrage de l'application client et à chaque événement de redéfinition du flux :
-
Récupère toutes les partitions contenant les données du flux en cours de traitement
-
Récupère tous les baux de partitions à partir de la table des baux
-
Filtre chaque partition ouverte qui n'a pas de bail dans la table des baux
-
Effectue une itération sur toutes les partitions ouvertes trouvées et pour chaque partition ouverte sans parent ouvert :
-
Parcourt l'arbre hiérarchique en suivant le chemin de ses ancêtres pour déterminer si la partition est une descendante. Une partition est définie comme descendante si une partition ancestrale est actuellement en cours de traitement (c'est-à-dire, l'entrée de bail pour cette partition ancestrale est présente dans la table des baux) ou si une partition ancestrale est prévue pour être traitée (par exemple, si la position initiale est
TRIM_HORIZON
ouAT_TIMESTAMP
) -
Si le fragment ouvert dans le contexte est un descendant, le KCL point de contrôle du fragment en fonction de sa position initiale et crée des baux pour ses parents, si nécessaire
-
Synchronisation dans la KCL version 2.x, à partir de la version KCL 2.3 et des versions ultérieures
À partir des dernières versions prises en charge de KCL 2.x (KCL2.3) et versions ultérieures, la bibliothèque prend désormais en charge les modifications suivantes apportées au processus de synchronisation. Ces modifications de synchronisation entre bail et partition réduisent considérablement le nombre d'APIappels passés par les applications KCL grand public vers le service Kinesis Data Streams et optimisent la gestion des baux dans votre application client. KCL
-
Pendant le démarrage de l'application, si la table des baux est vide, KCL utilise l'option
ListShard
API de filtrage's (le paramètre de demandeShardFilter
facultatif) pour récupérer et créer des baux uniquement pour un instantané des partitions ouvertes à l'heure spécifiée par le paramètre.ShardFilter
LeShardFilter
paramètre vous permet de filtrer la réponse duListShards
API. La seule propriété obligatoire du paramètreShardFilter
estType
. KCLutilise la propriétéType
filter et ses valeurs valides suivantes pour identifier et renvoyer un instantané des partitions ouvertes susceptibles de nécessiter de nouveaux baux :-
AT_TRIM_HORIZON
: la réponse inclut toutes les partitions ouvertes surTRIM_HORIZON
. -
AT_LATEST
: la réponse inclut uniquement les partitions actuellement ouvertes du flux de données. -
AT_TIMESTAMP
: la réponse inclut toutes les partitions dont l'horodatage de début est inférieur ou égal à l'horodatage donné et l'horodatage de fin est supérieur ou égal à l'horodatage donné ou encore ouvertes.
ShardFilter
est utilisé lors de la création de baux pour une table des baux vide afin d'initialiser les baux pour un instantané des partitions spécifiées àRetrievalConfig#initialPositionInStreamExtended
.Pour plus d'informations sur
ShardFilter
, consultez https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ShardFilter.html. -
-
Au lieu que tous les travailleurs effectuent la lease/shard synchronization to keep the lease table up to date with the latest shards in the data stream, a single elected worker leader performs the lease/shard synchronisation.
-
KCL2.3 utilise le paramètre de
ChildShards
retour deGetRecords
etSubscribeToShard
APIs pour effectuer la synchronisation entre bail et partition qui se produitSHARD_END
pour les partitions fermées, permettant à un KCL travailleur de créer des baux uniquement pour les fragments enfants de la partition qu'il a terminé de traiter. Pour les applications grand public partagées, cette optimisation de la synchronisation entre bail et partition utilise leChildShards
paramètre de.GetRecords
API Pour les applications grand public à débit dédié (fan-out amélioré), cette optimisation de la synchronisation entre location et partition utilise le paramètre de.ChildShards
SubscribeToShard
API Pour plus d'informations, reportez-vous aux SubscribeToShardssections GetRecords, et ChildShard. -
Avec les modifications ci-dessus, le comportement de KCL passe du modèle selon lequel tous les travailleurs découvrent toutes les partitions existantes à un modèle selon lequel les travailleurs n'apprennent que les fragments enfants des fragments que chaque travailleur possède. Par conséquent, outre la synchronisation qui se produit lors des événements de démarrage et de refonte des applications grand public, elle effectue KCL désormais des analyses périodiques supplémentaires des parties/locations afin d'identifier les éventuelles lacunes dans le tableau des baux (en d'autres termes, pour en savoir plus sur toutes les nouvelles partitions) afin de garantir le traitement de la plage de hachage complète du flux de données et de créer des baux pour celles-ci si nécessaire.
PeriodicShardSyncManager
est le composant chargé d'exécuter des analyses périodiques des baux et des partitions.Pour plus d'informations sur
PeriodicShardSyncManager
la version KCL 2.3, consultez https://github.com/awslabs/amazon-kinesis-client/blob/master/amazon-kinesis-client/src/main/java/software/amazon/kinesis/leases/LeaseManagementConfig.java #L201 -L213. Dans la KCL version 2.3, de nouvelles options de configuration sont disponibles pour la configuration
PeriodicShardSyncManager
dansLeaseManagementConfig
:Nom Valeur par défaut Description leasesRecoveryAuditorExecutionFrequencyMillis 120 000 (2 minutes)
Fréquence (en millisecondes) à laquelle la tâche d'audit vérifie la présence de baux partiels dans la table des baux. Si l'auditeur détecte une lacune dans les baux d'un flux, il déclenchera la synchronisation des partitions en fonction de
leasesRecoveryAuditorInconsistencyConfidenceThreshold
.leasesRecoveryAuditorInconsistencyConfidenceThreshold 3
Seuil de confiance pour la tâche périodique d'audit afin de déterminer si les baux d'un flux de données dans la table des baux sont incohérents. Si l'auditeur identifie le même ensemble d'incohérences consécutivement pour un flux de données ce nombre de fois, il déclenchera alors une synchronisation des partitions.
De nouvelles CloudWatch mesures sont également désormais émises pour surveiller l'état de santé du
PeriodicShardSyncManager
. Pour de plus amples informations, veuillez consulter PeriodicShardSyncManager. -
Incluant une optimisation de
HierarchicalShardSyncer
pour créer des baux uniquement pour une couche de partition.
Synchronisation dans la version KCL 1.x, à partir de la version KCL 1.14 et des versions ultérieures
À partir des dernières versions prises en charge de la version KCL 1.x (KCL1.14) et des versions ultérieures, la bibliothèque prend désormais en charge les modifications suivantes apportées au processus de synchronisation. Ces modifications de synchronisation entre bail et partition réduisent considérablement le nombre d'APIappels passés par les applications KCL grand public vers le service Kinesis Data Streams et optimisent la gestion des baux dans votre application client. KCL
-
Pendant le démarrage de l'application, si la table des baux est vide, KCL utilise l'option
ListShard
API de filtrage's (le paramètre de demandeShardFilter
facultatif) pour récupérer et créer des baux uniquement pour un instantané des partitions ouvertes à l'heure spécifiée par le paramètre.ShardFilter
LeShardFilter
paramètre vous permet de filtrer la réponse duListShards
API. La seule propriété obligatoire du paramètreShardFilter
estType
. KCLutilise la propriétéType
filter et ses valeurs valides suivantes pour identifier et renvoyer un instantané des partitions ouvertes susceptibles de nécessiter de nouveaux baux :-
AT_TRIM_HORIZON
: la réponse inclut toutes les partitions ouvertes surTRIM_HORIZON
. -
AT_LATEST
: la réponse inclut uniquement les partitions actuellement ouvertes du flux de données. -
AT_TIMESTAMP
: la réponse inclut toutes les partitions dont l'horodatage de début est inférieur ou égal à l'horodatage donné et l'horodatage de fin est supérieur ou égal à l'horodatage donné ou encore ouvertes.
ShardFilter
est utilisé lors de la création de baux pour une table des baux vide afin d'initialiser les baux pour un instantané des partitions spécifiées àKinesisClientLibConfiguration#initialPositionInStreamExtended
.Pour plus d'informations sur
ShardFilter
, consultez https://docs.aws.amazon.com/kinesis/latest/APIReference/API_ShardFilter.html. -
-
Au lieu que tous les travailleurs effectuent la lease/shard synchronization to keep the lease table up to date with the latest shards in the data stream, a single elected worker leader performs the lease/shard synchronisation.
-
KCL1.14 utilise le paramètre de
ChildShards
retour deGetRecords
etSubscribeToShard
APIs pour effectuer la synchronisation entre bail et partition qui se produitSHARD_END
pour les partitions fermées, permettant à un KCL travailleur de créer des baux uniquement pour les fragments enfants de la partition qu'il a terminé de traiter. Pour plus d'informations, reportez-vous GetRecordsaux sections et ChildShard. -
Avec les modifications ci-dessus, le comportement de KCL passe du modèle selon lequel tous les travailleurs découvrent toutes les partitions existantes à un modèle selon lequel les travailleurs n'apprennent que les fragments enfants des fragments que chaque travailleur possède. Par conséquent, outre la synchronisation qui se produit lors des événements de démarrage et de refonte des applications grand public, elle effectue KCL désormais des analyses périodiques supplémentaires des parties/locations afin d'identifier les éventuelles lacunes dans le tableau des baux (en d'autres termes, pour en savoir plus sur toutes les nouvelles partitions) afin de garantir le traitement de la plage de hachage complète du flux de données et de créer des baux pour celles-ci si nécessaire.
PeriodicShardSyncManager
est le composant chargé d'exécuter des analyses périodiques des baux et des partitions.Lorsque
KinesisClientLibConfiguration#shardSyncStrategyType
est défini surShardSyncStrategyType.SHARD_END
,PeriodicShardSync leasesRecoveryAuditorInconsistencyConfidenceThreshold
est utilisé pour déterminer le seuil du nombre d'analyses consécutives révélant des lacunes dans la table des baux, après lequel une synchronisation des partitions est imposée. LorsqueKinesisClientLibConfiguration#shardSyncStrategyType
est défini surShardSyncStrategyType.PERIODIC
,leasesRecoveryAuditorInconsistencyConfidenceThreshold
est ignoré.Pour plus d'informations sur
PeriodicShardSyncManager
la version KCL 1.14, consultez https://github.com/awslabs/amazon-kinesis-client/blob/v1.x/src/main/java/com/amazonaws/services/kinesis/clientlibrary/lib/worker/KinesisClientLibConfiguration.java #L987-L999. Dans la KCL version 1.14, une nouvelle option de configuration est disponible pour configurer
PeriodicShardSyncManager
dansLeaseManagementConfig
:Nom Valeur par défaut Description leasesRecoveryAuditorInconsistencyConfidenceThreshold 3
Seuil de confiance pour la tâche périodique d'audit afin de déterminer si les baux d'un flux de données dans la table des baux sont incohérents. Si l'auditeur identifie le même ensemble d'incohérences consécutivement pour un flux de données ce nombre de fois, il déclenchera alors une synchronisation des partitions.
De nouvelles CloudWatch mesures sont également désormais émises pour surveiller l'état de santé du
PeriodicShardSyncManager
. Pour de plus amples informations, veuillez consulter PeriodicShardSyncManager. -
KCLLa version 1.14 prend désormais également en charge le nettoyage différé des baux. Les baux sont supprimés de manière asynchrone par
LeaseCleanupManager
lorsqu'ils atteignentSHARD_END
, c'est-à-dire lorsqu'une partition a dépassé la période de conservation du flux de données ou a été fermée à la suite d'une opération de repartitionnement.De nouvelles options de configuration sont disponibles pour la configuration de
LeaseCleanupManager
.Nom Valeur par défaut Description leaseCleanupIntervalMillis 1 minute
Intervalle d'exécution du thread de nettoyage des baux.
completedLeaseCleanupIntervalMillis 5 minutes Intervalle au bout duquel il faut vérifier si un bail est terminé ou non.
garbageLeaseCleanupIntervalMillis 30 minutes Intervalle à partir duquel il faut vérifier si un bail est nul (c'est-à-dire s'il a dépassé la période de conservation du flux de données) ou non.
-
Incluant une optimisation de
KinesisShardSyncer
pour créer des baux uniquement pour une couche de partition.
Traitez plusieurs flux de données avec le même KCL 2.x pour une application grand public Java
Cette section décrit les modifications suivantes apportées à la KCL version 2.x pour Java, qui vous permettent de créer KCL des applications grand public capables de traiter plusieurs flux de données à la fois.
Important
Le traitement multiflux n'est pris en charge que dans la KCL version 2.x pour Java, à partir de la version KCL 2.3 pour Java et des versions ultérieures.
Le traitement multiflux est NOT pris en charge pour tous les autres langages dans lesquels la version KCL 2.x peut être implémentée.
Le traitement multiflux est NOT pris en charge dans toutes les versions de KCL 1.x.
-
MultistreamTracker interface
Pour créer une application grand public capable de traiter plusieurs flux en même temps, vous devez implémenter une nouvelle interface appelée MultistreamTracker
. Cette interface inclut la streamConfigList
méthode qui renvoie la liste des flux de données et leurs configurations à traiter par l'application KCL client. Notez que les flux de données en cours de traitement peuvent être modifiés pendant l'exécution de l'application grand public.streamConfigList
est appelé périodiquement par le KCL pour prendre connaissance de l'évolution des flux de données à traiter.La
streamConfigList
méthode remplit la StreamConfigliste. package software.amazon.kinesis.common; import lombok.Data; import lombok.experimental.Accessors; @Data @Accessors(fluent = true) public class StreamConfig { private final StreamIdentifier streamIdentifier; private final InitialPositionInStreamExtended initialPositionInStreamExtended; private String consumerArn; }
Notez que les champs
StreamIdentifier
etInitialPositionInStreamExtended
sont obligatoires, alors queconsumerArn
est facultatif. Vous ne devez fournir leconsumerArn
code que si vous utilisez la version KCL 2.x pour implémenter une application grand public améliorée.Pour plus d'informations sur
StreamIdentifier
, consultez https://github.com/awslabs/amazon-kinesis-client/blob/v2.5.8/amazon-kinesis-client/src/main/java/software/amazon/kinesis/common/StreamIdentifier.java #L129. Pour créer une StreamIdentifier
, nous vous recommandons de créer une instance multistream à partir destreamArn
etstreamCreationEpoch
qui est disponible dans les versions 2.5.0 et ultérieures. Dans les KCL versions 2.3 et 2.4, qui ne sont pas prises en chargestreamArm
, créez une instance multistream en utilisant le format.account-id:StreamName:streamCreationTimestamp
Ce format sera obsolète et ne sera plus pris en charge à compter de la prochaine version majeure.MultistreamTracker
inclut également une stratégie pour supprimer les baux des anciens flux dans la table des baux (formerStreamsLeasesDeletionStrategy
). Notez que la stratégie CANNOT sera modifiée pendant l'exécution de l'application grand public. Pour plus d'informations, consultez https://github.com/awslabs/amazon-kinesis-client/blob/0c5042dadf794fe988438436252a5a8fe70b6b0b//amazon-kinesis-client.java src/main/java/software/amazon/kinesis/processor/FormerStreamsLeasesDeletionStrategy -
ConfigsBuilder
est une classe à l'échelle de l'application que vous pouvez utiliser pour spécifier tous les paramètres de configuration KCL 2.x à utiliser lors de la création de votre KCL application grand public. ConfigsBuilder
la classe prend désormais en charge l'MultistreamTracker
interface. Vous pouvez initialiser l'un ConfigsBuilder ou l'autre avec le nom du flux de données à partir duquel les enregistrements seront consommés :/** * Constructor to initialize ConfigsBuilder with StreamName * @param streamName * @param applicationName * @param kinesisClient * @param dynamoDBClient * @param cloudWatchClient * @param workerIdentifier * @param shardRecordProcessorFactory */ public ConfigsBuilder(@NonNull String streamName, @NonNull String applicationName, @NonNull KinesisAsyncClient kinesisClient, @NonNull DynamoDbAsyncClient dynamoDBClient, @NonNull CloudWatchAsyncClient cloudWatchClient, @NonNull String workerIdentifier, @NonNull ShardRecordProcessorFactory shardRecordProcessorFactory) { this.appStreamTracker = Either.right(streamName); this.applicationName = applicationName; this.kinesisClient = kinesisClient; this.dynamoDBClient = dynamoDBClient; this.cloudWatchClient = cloudWatchClient; this.workerIdentifier = workerIdentifier; this.shardRecordProcessorFactory = shardRecordProcessorFactory; }
Vous pouvez également l'initialiser ConfigsBuilder avec
MultiStreamTracker
si vous souhaitez implémenter une application KCL grand public qui traite plusieurs flux en même temps.* Constructor to initialize ConfigsBuilder with MultiStreamTracker * @param multiStreamTracker * @param applicationName * @param kinesisClient * @param dynamoDBClient * @param cloudWatchClient * @param workerIdentifier * @param shardRecordProcessorFactory */ public ConfigsBuilder(@NonNull MultiStreamTracker multiStreamTracker, @NonNull String applicationName, @NonNull KinesisAsyncClient kinesisClient, @NonNull DynamoDbAsyncClient dynamoDBClient, @NonNull CloudWatchAsyncClient cloudWatchClient, @NonNull String workerIdentifier, @NonNull ShardRecordProcessorFactory shardRecordProcessorFactory) { this.appStreamTracker = Either.left(multiStreamTracker); this.applicationName = applicationName; this.kinesisClient = kinesisClient; this.dynamoDBClient = dynamoDBClient; this.cloudWatchClient = cloudWatchClient; this.workerIdentifier = workerIdentifier; this.shardRecordProcessorFactory = shardRecordProcessorFactory; }
-
Grâce à la prise en charge multiflux mise en œuvre pour votre application KCL client, chaque ligne de la table des baux de l'application contient désormais l'ID de partition et le nom de flux des multiples flux de données traités par cette application.
-
Lorsque le support multiflux pour votre application KCL grand public est implémenté, la leaseKey structure est la suivante :
account-id:StreamName:streamCreationTimestamp:ShardId
. Par exemple,111111111:multiStreamTest-1:12345:shardId-000000000336
.Important
Lorsque votre application KCL client existante est configurée pour traiter un seul flux de données, le leaseKey (qui est la clé de hachage de la table de location) est l'ID de partition. Si vous reconfigurez cette application KCL client existante pour traiter plusieurs flux de données, cela interrompt votre table de location, car avec le support multiflux, la leaseKey structure doit être la suivante :.
account-id:StreamName:StreamCreationTimestamp:ShardId
Utiliser le KCL avec le registre des AWS Glue schémas
Vous pouvez intégrer vos flux de données Kinesis au registre des AWS Glue schémas. Le registre des AWS Glue schémas vous permet de découvrir, de contrôler et de faire évoluer les schémas de manière centralisée, tout en garantissant que les données produites sont validées en permanence par un schéma enregistré. Un schéma définit la structure et le format d'un enregistrement de données. Un schéma est une spécification versionnée pour la publication, la consommation ou le stockage des données fiables. Le registre des AWS Glue schémas vous permet d'améliorer la qualité end-to-end des données et la gouvernance des données au sein de vos applications de streaming. Pour plus d'informations, consultez le registre AWS Glue Schema (français non garanti). L'un des moyens de configurer cette intégration consiste à utiliser le KCL en Java.
Important
Actuellement, l'intégration de Kinesis Data Streams AWS Glue et de Schema Registry n'est prise en charge que pour les flux de données Kinesis qui KCL utilisent des consommateurs 2.3 implémentés en Java. La prise en charge multilingue n'est pas fournie. KCLLes consommateurs 1.0 ne sont pas pris en charge. KCLLes utilisateurs 2.x antérieurs à la version KCL 2.3 ne sont pas pris en charge.
Pour obtenir des instructions détaillées sur la façon de configurer l'intégration de Kinesis Data Streams à Schema Registry à l'aide de, consultez KCL la section « Interaction avec les données en utilisant KPL lesKCL/Libraries » dans Use Case : Integrating Amazon Kinesis Data Streams with the AWS Glue Schema Registry.