J'essaie d'utiliser différentes applications de la bibliothèque client Amazon Kinesis (KCL) avec la même table Amazon DynamoDB. Comment procéder ? Que faire si je souhaite utiliser autre chose que DynamoDB comme table de points de contrôle ?
Brève description
Deux conditions sont requises pour utiliser la KCL :
- Chaque application KCL doit utiliser sa propre table DynamoDB.
- Une table DynamoDB doit être utilisée pour les points de contrôle KCL.
Résolution
Puis-je utiliser différentes applications KCL utilisant la même table DynamoDB?
Les utilisateurs ne peuvent pas utiliser d'applications KCL différentes avec la même table DynamoDB pour les raisons suivantes :
-
Les opérations d'analyse servent à obtenir des contrats de location à partir d'une table DynamoDB. Par conséquent, si une table contient des contrats de location de différentes applications KCL, chaque application peut recevoir un contrat de location qui n'est pas lié à l'application elle-même. Pour plus d'informations sur les exceptions de contrat de location DynamoDB, consultez DynamoDBLeaseRefresher.java sur le site web GitHub Amazon Web Services - Labs.
-
Les ID de partition dans les flux sont utilisés comme clés primaires dans les tables DynamoDB pendant les points de contrôle. Lorsque différentes applications KCL utilisent la même table DynamoDB et que les mêmes ID de partition sont utilisés dans les flux, des incohérences au niveau des points de contrôle peuvent se produire.
Vous pouvez également utiliser un nom d'application comme nom par défaut pour une table DynamoDB, puis configurer manuellement un nom de table sur la KCL. Voici un exemple de configuration d'un nom de table sur KCL version 1.x :
KinesisClientLibConfiguration kinesisClientLibConfiguration = // KCL 1.x<br> new KinesisClientLibConfiguration(...)<br> .withTableName(<table_name>);
Remarque : pour plus d'informations sur cet exemple de code KinesisClientLibConfiguration, consultez KinesisClientLibConfiguration.java sur le site web GitHub Amazon Web Services - Labs.
Vous pouvez également configurer manuellement un nom de table sur KCL version 2.x :
ConfigsBuilder configsBuilder = new ConfigsBuilder(...).tableName(<table_name>); // KCL 2.x
Remarque : pour plus d'informations sur cet exemple de code ConfigsBuilder consultez ConfigsBuilder.java sur le site web GitHub Amazon Web Services - Labs.
Puis-je utiliser autre chose que DynamoDB comme table de points de contrôle ?
Les utilisateurs peuvent uniquement utiliser DynamoDB comme table de points de contrôle pour la KCL. DynamoDB est requis comme table de points de contrôle pour la KCL, car le comportement et l'implémentation de la KCL sont interconnectés avec DynamoDB des manières suivantes :
- La KCL inclut ShardSyncTask.java, ce qui garantit que les contrats de location de partition d'un flux sont inclus dans la table DynamoDB. Cette vérification est effectuée régulièrement dans la KCL.
- La KCL inclut DynamoDBLeaseTaker.java et DynamoDBLeaseRenewer.java, qui sont des composants qui gèrent et mettent à jour les contrats de location dans la KCL. DynamoDBLeaseTaker.java et DynamoDBLeaseRenewer.java fonctionnent avec DynamoDBLeaseRefresher.java pour envoyer des demandes d'API fréquentes à DynamoDB.
- Lorsque la KCL effectue des points de contrôle, les demandes provenant de DynamoDBCheckpointer.java et DynamoDBLeaseCoordinator.java sont adressées à DynamoDB. Ces demandes sont effectuées via DynamoDBLeaseCoordinator.java, DynamoDBLeaseRenewer.java, ou DynamoDBLeaseRefresher.java.
Informations connexes
Configuration des partitions et surveillance de la capture des données de modification avec Kinesis Data Streams dans DynamoDB