View a markdown version of this page

Format de tableau unique pour KCL - 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.

Format de tableau unique pour KCL

À partir de KCL 3.5, vous pouvez consolider toutes les métadonnées de DynamoDB dans une seule table de bail à l'aide du format de tableau unique. Par défaut, KCL 3.x crée trois tables DynamoDB pour chaque application : la table des baux, la table des métriques des travailleurs et la table des états des coordinateurs. Le format de tableau unique réduit ces trois tableaux à un seul, ce qui vous permet d'éviter les limites de tables au niveau du compte DynamoDB.

Comment fonctionne le format de tableau unique

Dans un format de tableau unique, KCL stocke les indicateurs des travailleurs et les entrées d'état du coordinateur dans le tableau des baux, à côté des entrées de bail. Chaque élément comprend un entityType attribut qui permet de distinguer les différents types d'enregistrement.

Les métriques relatives aux travailleurs et les éléments d'état du coordinateur utilisent la même structure de clé primaire que la table des baux, mais incluent une entityType valeur distincte. Cet attribut permet à KCL d'identifier l'objectif de chaque élément lors de l'analyse des tableaux.

Chaque composant de KCL filtre les entrées dont il a besoin pour sa logique métier en fonction de l'entityTypeattribut. Par exemple, le Lease Assignment Manager (LAM) filtre les entrées des mesures relatives aux contrats de location et aux travailleurs afin d'effectuer l'attribution des baux.

Configurer le format de tableau unique

La façon dont vous activez le format de tableau unique dépend de votre version KCL actuelle :

  • Si vous utilisez KCL 2.x : suivez le guide de migration mis à jour pour passer à KCL 3.5. Le format de tableau unique est utilisé par défaut pour les nouvelles migrations de 2.x vers 3.5.

  • Si vous utilisez KCL 3.0—3.4 : vous devez effectuer un déploiement en deux phases pour migrer vers le format de table unique. Consultez les étapes de configuration et de migration suivantes.

Pour les clients KCL 3.x existants, définissez l'option de migrateAllEntitiesToLeaseTable configuration dans. CoordinatorConfig Cette option contrôle si KCL stocke tous les types d'entités de métadonnées dans la table des baux.

Valeurs de configuration pour la migration AllEntitiesToLeaseTable
Value Par défaut Effet
false Oui

KCL utilise des tableaux distincts pour les indicateurs des travailleurs et l'état du coordinateur. Le code de l'application prend en charge le format de tableau unique mais ne l'active pas.

true Non

KCL commence à écrire les métriques des travailleurs et les données sur l'état des coordinateurs dans le tableau des baux. Définissez cette valeur lors du déploiement de la phase 2 une fois les TableMigrationStatus atteintes atteintes DEPLOYED et vous n'aurez plus de régressions.

La migration de KCL 3.x vers le format de table unique nécessite un déploiement en deux phases :

  1. Phase 1 : Déployez le code KCL 3.5 mis à jour avec migrateAllEntitiesToLeaseTable défini sur false (valeur par défaut). Cela installe le nouveau code qui prend en charge le format de table unique mais n'active pas la migration.

  2. Phase 2 : une fois que tous les travailleurs ont exécuté le nouveau code et le TableMigrationStatus reachDEPLOYED, et que vous avez vérifié qu'il n'y a pas de régressions, déployez à nouveau avec migrateAllEntitiesToLeaseTable set true to pour commencer la migration.

États migratoires

TableMigrationStateMachineGère la transition du format multi-tableaux au format tableau unique. KCL suit l'état actuel de la migration dans une entrée d'état du coordinateur distincte appelée TableMigration3.5 dans la table des états du coordinateur. Pour obtenir la liste complète des états, des transitions et des descriptions, consultez la section États de migration à table unique KCL.

États de migration au format de tableau unique
State Description État de transition
INIT

État initial. Tous les travailleurs émettent le code de soutien minimum dans les statistiques métriques des travailleurs. Les employés continuent d'émettre des métriques sur les travailleurs dans la table héritée et de lire les métriques des travailleurs et l'état du coordinateur à la fois dans les anciennes tables et sur les baux. Sur le plan fonctionnel, il n'y a aucune différence entre INIT et DEPLOYED.

Tous les travailleurs émettent régulièrement le code de support minimum pendant le temps de cuisson. L'application est prête à passer à la phase 2 du déploiement.

DEPLOYED

Tous les travailleurs ont été déployés avec le nouveau code (phase 1 terminée). L'application prend en charge le format de tableau unique mais ne l'a pas activé.

La phase 2 du déploiement commence par migrateAllEntitiesToLeaseTable set totrue.

PENDING

Tous les travailleurs exécutent le nouveau code. KCL migre les données des tableaux de métriques des travailleurs et des états des coordinateurs vers la table des baux.

Un délai de cuisson par défaut de 24 heures s'écoule une fois la migration terminée.

COMPLETE

La migration est terminée. KCL utilise le tableau des baux exclusivement pour toutes les lectures et écritures. Les anciennes métriques des travailleurs et les tables d'état des coordinateurs ne sont plus utilisées.

État du terminal. Aucune autre transition ne se produit.

Pour des informations détaillées sur chaque état, les conditions de transition et le comportement complet de la machine à états, voir Machine d'état de migration à table unique KCL.

Note

Le temps de cuisson par défaut entre les états PENDING et COMPLETE est de 24 heures, mais vous pouvez le configurer jusqu'à une semaine. Pendant cette période, KCL utilise la table de bail pour toutes les lectures et écritures, mais ne supprime pas les anciennes tables. Vous devez supprimer manuellement les anciennes tables de métriques de travail et d'état des coordinateurs après avoir confirmé la réussite de la migration. KCL ne supprime pas ces tables automatiquement.

Métriques de migration

Avec KCL, vous pouvez suivre la progression et l'état de la migration de la table unique à l'aide de CloudWatch métriques. Utilisez ces indicateurs pour confirmer que les travailleurs ont adopté le nouveau code et pour suivre la migration au fur et à mesure de son évolution. Vous pouvez également détecter les erreurs de lecture, d'écriture ou de suppression de DynamoDB lors de la migration. Les tableaux suivants regroupent les métriques selon l'opération KCL (dimension métrique) qui les émet et selon le moment où chaque métrique est émise.

Le leader élu émet en permanence les indicateurs suivants, qu'une migration soit en cours ou non :

Métriques émises par le leader à tout moment

Opération

Métrique

Unité

Description

TableMigration

StatusOrdinal

Aucune

Ordinal de l'état de migration DynamoDB actuel : 0 = UNKNOWN, = INIT, 1 = DEPLOYED, 2 = PENDING, 3 = COMPLETE. 4

WorkerMetrics

FleetMinSupportCode

Aucune

Code d'assistance minimum pour tous les travailleurs de la flotte qui sont propriétaires d'un contrat de location.

Le collaborateur leader élu émet les mesures suivantes uniquement lorsqu'une migration est en cours :

Métriques émises par le leader lors de la migration

Opération

Métrique

Unité

Description

TableMigration

Phase1Worker

Nombre

Nombre de travailleurs qui prennent en charge le fonctionnement avec une seule table DynamoDB mais qui n'ont pas encore migré vers l'utilisation de cette table unique.

TableMigration

Phase2Worker

Nombre

Nombre de travailleurs ayant migré vers l'écriture dans la table unique. Ces travailleurs peuvent continuer à lire à partir de plusieurs tables jusqu'à la fin de la migration des tables.

TableMigration

PrePhase1Worker

Nombre

Nombre de travailleurs sur une version antérieure à 3.5 qui ne peuvent pas prendre en charge le fonctionnement sur une seule table DynamoDB.

TableMigration

WriteFault

Nombre

1en cas d'échec d'écriture dans DynamoDB, 0 en cas de succès.

TableMigration

DeleteFault

Nombre

1en cas d'échec de suppression de DynamoDB, 0 en cas de succès.

TableMigration

CompletionFault

Nombre

1en cas d'échec de l'écriture transactionnelle du COMPLETE statut, en cas 0 de succès.

TableMigrationAsyncMove

Success

Nombre

1en cas de transfert transactionnel réussi d' CoordinatorState entrées, en cas 0 d'échec.

TableMigrationAsyncMove

Time

Millisecondes

Durée de l'opération de déplacement asynchrone.

TableMigrationAsyncMove

BatchCount

Nombre

Nombre de lots déplacés avec succès.

Tous les travailleurs émettent les mesures suivantes lorsqu'une migration est en cours :

Métriques émises par tous les travailleurs pendant la migration

Opération

Métrique

Unité

Description

TableMigration

ReadFault

Nombre

1en cas d'échec de la lecture TableMigrationState de DynamoDB, 0 en cas de succès.

TableMigration

Time

Millisecondes

Durée de fonctionnement de la machine d'état.

TableMigrationInitialize

Success

Nombre

1en cas d'initialisation réussie, en cas 0 d'échec.

TableMigrationInitialize

Time

Millisecondes

Durée de l'opération d'initialisation.

Utilisez ces indicateurs pour décider quand faire avancer la migration. Lorsque StatusOrdinal c'est constant 2 (DÉPLOYÉ) et PrePhase1Worker qu'il l'est0, tous les travailleurs prennent en charge le format de tableau unique, et vous pouvez passer à la phase 2 du déploiement de la migration des tables. Une fois StatusOrdinal que vous avez atteint 4 (TERMINÉ), vous pouvez supprimer les anciennes tables en toute sécurité.

Considérations relatives à la restauration

La prise en charge de la restauration dépend de la situation actuelle TableMigrationStatus :

  • Pendant la phase 1 (TableMigrationStatusdéfinie DEPLOYED ou pas encore) : vous pouvez revenir à la version précédente en toute sécurité. Le nouveau code s'exécute en mode rétrocompatible et aucune donnée n'a été écrite dans les entrées non liées au bail dans la table des baux.

  • Pendant la phase 2 (TableMigrationStatusc'est DEPLOYED ouPENDING) : vous pouvez revenir à la phase 1. Les travailleurs recommencent à utiliser les anciennes tables (format multi-tableaux) pour les métriques des travailleurs et l'état du coordinateur. La migration est annulée.

  • Après l'état COMPLET  : la restauration n'est pas prise en charge. KCL utilise uniquement le tableau des baux pour toutes les entités. Même si le code revient à la phase 1, le travailleur continue à utiliser la table des baux pour toutes les entités et la configuration est ignorée.

Avertissement

Une fois la migration terminée, l'application fonctionne exclusivement en mode table unique. La migrateAllEntitiesToLeaseTable configuration est ignorée et KCL ne revient pas à l'utilisation de tables séparées. Assurez-vous que le temps de cuisson avant de passer à COMPLETE est suffisant, car après cela, même une restauration du code ne permet pas de revenir à plusieurs tables.

Bonnes pratiques

Suivez ces bonnes pratiques lorsque vous adoptez le format de tableau unique :

  • Après le déploiement de la phase 1, vérifiez que l'entrée d'état du coordinateur TableMigration3.5 atteint DEPLOYED le statut. Assurez-vous qu'il n'y a pas de régressions avant de passer à la phase 2.

  • Surveillez l'entrée TableMigrationStatus dans l'état du TableMigration3.5 coordinateur pour suivre la progression dans les états DÉPLOYÉ, EN ATTENTE et COMPLET. Le statut est enregistré dans la table des états du coordinateur en tant qu'entrée distincte (et non dans la table des baux) jusqu'à ce que la migration soit terminée.

  • Assurez-vous que le temps de cuisson avant de passer à COMPLETE est suffisant, car après cela, même une restauration du code ne permet pas de revenir à plusieurs tables. L'application fonctionne uniquement en mode tableau unique.

  • Une fois la migration terminée, supprimez manuellement les anciennes métriques des travailleurs et les tables d'état des coordinateurs. KCL ne supprime pas ces tables automatiquement ; il arrête simplement de les utiliser.

  • Si vous avez configuré CoordinatorConfig.coordinatorStateTableConfig ouLeaseManagementConfig.workerUtilizationAwareAssignmentConfig.workerMetricsTableConfig, vous pouvez supprimer ces configurations une fois la migration terminée. Ces configurations sont obsolètes dans KCL 3.5 et versions ultérieures.