Esegui la migrazione da KCL 2.x a 3.x KCL - Flusso di dati Amazon Kinesis

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Esegui la migrazione da KCL 2.x a 3.x KCL

Questo argomento fornisce step-by-step istruzioni per migrare il consumatore da KCL 2.x a 3.x. KCL KCL3.x supporta la migrazione in loco dei consumatori 2.x. KCL Puoi continuare a utilizzare i dati del tuo flusso di dati Kinesis mentre migri i tuoi lavoratori in modo continuativo.

Importante

KCL3.x mantiene le stesse interfacce e gli stessi metodi di 2.x. KCL Pertanto non è necessario aggiornare il codice di elaborazione dei record durante la migrazione. Tuttavia, è necessario impostare la configurazione corretta e verificare i passaggi richiesti per la migrazione. Ti consigliamo vivamente di seguire i seguenti passaggi di migrazione per un'esperienza di migrazione senza intoppi.

Fase 1: prerequisiti

Prima di iniziare a utilizzare KCL 3.x, assicurati di disporre di quanto segue:

  • Java Development Kit (JDK) 8 o versione successiva

  • AWS SDK for Java 2.x

  • Maven o Gradle per la gestione delle dipendenze

Passaggio 2: aggiungere dipendenze

Se utilizzi Maven, aggiungi la seguente dipendenza al tuo file. pom.xml Assicurati di aver sostituito 3.x.x con la versione più recente. KCL

<dependency> <groupId>software.amazon.kinesis</groupId> <artifactId>amazon-kinesis-client</artifactId> <version>3.x.x</version> <!-- Use the latest version --> </dependency>

Se stai usando Gradle, aggiungi quanto segue al tuo file. build.gradle Assicurati di aver sostituito 3.x.x alla versione più recente. KCL

implementation 'software.amazon.kinesis:amazon-kinesis-client:3.x.x'

Puoi verificare la presenza dell'ultima versione di KCL sul Maven Central Repository.

Passaggio 3: configurare la configurazione relativa alla migrazione

Per migrare da KCL 2.x a KCL 3.x, è necessario impostare il seguente parametro di configurazione:

  • CoordinatorConfig. clientVersionConfig: Questa configurazione determina in quale modalità di compatibilità della KCL versione verrà eseguita l'applicazione. Quando si esegue la migrazione da KCL 2.x a 3.x, è necessario impostare questa configurazione su. CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X Per impostare questa configurazione, aggiungi la riga seguente durante la creazione dell'oggetto scheduler:

configsBuilder.coordiantorConfig().clientVersionConfig(ClientVersionConfig.CLIENT_VERSION_CONFIG_COMPLATIBLE_WITH_2X)

Di seguito è riportato un esempio di come impostare la CoordinatorConfig.clientVersionConfig migrazione da KCL 2.x a 3.x. È possibile modificare altre configurazioni in base alle esigenze specifiche:

Scheduler scheduler = new Scheduler( configsBuilder.checkpointConfig(), configsBuilder.coordiantorConfig().clientVersionConfig(ClientVersionConfig.CLIENT_VERSION_CONFIG_COMPLATIBLE_WITH_2X), configsBuilder.leaseManagementConfig(), configsBuilder.lifecycleConfig(), configsBuilder.metricsConfig(), configsBuilder.processorConfig(), configsBuilder.retrievalConfig() );

È importante che tutti i lavoratori dell'applicazione consumer utilizzino lo stesso algoritmo di bilanciamento del carico in un determinato momento, poiché KCL 2.x e 3.x utilizzano algoritmi di bilanciamento del carico diversi. L'utilizzo di lavoratori con algoritmi di bilanciamento del carico diversi può causare una distribuzione del carico non ottimale poiché i due algoritmi funzionano in modo indipendente.

Questa impostazione di compatibilità KCL 2.x consente all'applicazione KCL 3.x di funzionare in una modalità compatibile con KCL 2.x e di utilizzare l'algoritmo di bilanciamento del carico per KCL 2.x fino a quando tutti i worker dell'applicazione consumer non saranno aggiornati alla versione 3.x. KCL Una volta completata la migrazione, KCL passerà automaticamente alla modalità con funzionalità KCL 3.x completa e inizierà a utilizzare un nuovo algoritmo di bilanciamento del carico KCL 3.x per tutti i lavoratori in esecuzione.

Importante

Se non si utilizza ConfigsBuilder ma si sta creando un LeaseManagementConfig oggetto per impostare le configurazioni, è necessario aggiungere un altro parametro chiamato applicationName nella KCL versione 3.x o successiva. Per i dettagli, vedete Errore di compilazione con il costruttore. LeaseManagementConfig Si consiglia di ConfigsBuilder utilizzarlo per impostare le KCL configurazioni. ConfigsBuilderoffre un modo più flessibile e gestibile per configurare l'applicazione. KCL

Fase 4: Segui le migliori pratiche per l'implementazione del shutdownRequested metodo ()

KCL3.x introduce una funzionalità chiamata graceful lease handoff per ridurre al minimo la rielaborazione dei dati quando un contratto di locazione viene ceduto a un altro lavoratore come parte del processo di riassegnazione del contratto di locazione. Ciò si ottiene selezionando l'ultimo numero di sequenza elaborato nella tabella del leasing prima della cessione del leasing. Per assicurarvi che il grazioso comando di lease funzioni correttamente, dovete assicurarvi di richiamare l'oggetto all'interno del metodo della classe. checkpointer shutdownRequested RecordProcessor Se non state invocando l'checkpointeroggetto all'interno del shutdownRequested metodo, potete implementarlo come illustrato nell'esempio seguente.

Importante
  • Il seguente esempio di implementazione è un requisito minimo per la consegna del leasing grazioso. È possibile estenderlo per includere una logica aggiuntiva relativa al checkpoint, se necessario. Se stai eseguendo un'elaborazione asincrona, assicurati che tutti i record consegnati al sistema a valle siano stati elaborati prima di richiamare il checkpoint.

  • Sebbene la consegna gradita del leasing riduca in modo significativo la probabilità di ritrattamento dei dati durante i trasferimenti di leasing, non elimina completamente questa possibilità. Per preservare l'integrità e la coerenza dei dati, progetta le tue applicazioni consumer downstream in modo che siano idempotenti. Ciò significa che dovrebbero essere in grado di gestire potenziali elaborazioni di record duplicati senza effetti negativi sull'intero sistema.

/** * Invoked when either Scheduler has been requested to gracefully shutdown * or lease ownership is being transferred gracefully so the current owner * gets one last chance to checkpoint. * * Checkpoints and logs the data a final time. * * @param shutdownRequestedInput Provides access to a checkpointer, allowing a record processor to checkpoint * before the shutdown is completed. */ public void shutdownRequested(ShutdownRequestedInput shutdownRequestedInput) { try { // Ensure that all delivered records are processed // and has been successfully flushed to the downstream before calling // checkpoint // If you are performing any asynchronous processing or flushing to // downstream, you must wait for its completion before invoking // the below checkpoint method. log.info("Scheduler is shutting down, checkpointing."); shutdownRequestedInput.checkpointer().checkpoint(); } catch (ShutdownException | InvalidStateException e) { log.error("Exception while checkpointing at requested shutdown. Giving up.", e); } }

Fase 5: Verificare i prerequisiti KCL 3.x per la raccolta delle metriche dei lavoratori

KCL3.x raccoglie metriche di utilizzo, ad esempio CPU l'CPUutilizzo da parte dei lavoratori, per bilanciare il carico tra i lavoratori in modo uniforme. I consumer application worker possono funzionare su Amazon EC2ECS, AmazonEKS, Amazon o AWS Fargate. KCL3.x può raccogliere i parametri di CPU utilizzo dai lavoratori solo quando vengono soddisfatti i seguenti prerequisiti:

Amazon Elastic Compute Cloud(AmazonEC2)

  • Il sistema operativo deve essere Linux OS.

  • È necessario IMDSv2abilitarlo nella propria EC2 istanza.

Amazon Elastic Container Service (AmazonECS) su Amazon EC2

Amazon ECS su AWS Fargate

  • È necessario abilitare l'endpoint dei metadati delle attività Fargate versione 4. Se si utilizza la versione 1.4.0 o successiva della piattaforma Fargate, questa opzione è abilitata per impostazione predefinita.

  • Piattaforma Fargate versione 1.4.0 o successiva.

Amazon Elastic Kubernetes Service (Amazon) su Amazon EKS EC2

  • Il sistema operativo deve essere Linux OS.

Amazon EKS su AWS Fargate

  • Piattaforma Fargate 1.3.0 o versione successiva.

Importante

Se KCL 3.x non è in grado di raccogliere i parametri di CPU utilizzo dai lavoratori perché i prerequisiti non sono soddisfatti, riequilibrerà il carico in base al livello di throughput per leasing. Questo meccanismo di ribilanciamento alternativo garantirà che tutti i lavoratori ottengano livelli di produttività totali simili derivanti dai contratti di locazione assegnati a ciascun lavoratore. Per ulteriori informazioni, consulta Come assegna i contratti di locazione ai lavoratori e bilancia il carico KCL.

Passaggio 6: Aggiornare le autorizzazioni per 3.x IAM KCL

È necessario aggiungere le seguenti autorizzazioni al IAM ruolo o alla politica associati all'applicazione consumer KCL 3.x. Ciò comporta l'aggiornamento della IAM politica esistente utilizzata dall'KCLapplicazione. Per ulteriori informazioni, consulta IAMautorizzazioni necessarie per le applicazioni destinate ai consumatori KCL.

Importante

È possibile che KCL alle applicazioni esistenti non siano state aggiunte IAM le azioni e le risorse seguenti nella IAM politica perché non erano necessarie nella versione KCL 2.x. Assicurati di averle aggiunte prima di eseguire l'applicazione KCL 3.x:

  • Azioni: UpdateTable

    • Risorse (ARNs): arn:aws:dynamodb:region:account:table/KCLApplicationName

  • Azioni: Query

    • Risorse (ARNs): arn:aws:dynamodb:region:account:table/KCLApplicationName/Index/*

  • Azioni: CreateTableDescribeTable,,Scan,GetItem,PutItem,UpdateItem, DeleteItem

    • Risorse (ARNs):arn:aws:dynamodb:region:account:table/KCLApplicationName-WorkerMetricStats, arn:aws:dynamodb:region:account:table/KCLApplicationName-CoordinatorState

    Sostituisci «regione», «account» e KCLApplicationName "" ARNs con rispettivamente il tuo Regione AWS Account AWS numero e il nome KCL dell'applicazione. Se utilizzi configurazioni per personalizzare i nomi delle tabelle di metadati create daKCL, utilizza i nomi di tabella specificati anziché il nome dell'KCLapplicazione.

Fase 7: Distribuisci il codice KCL 3.x ai tuoi lavoratori

Dopo aver impostato la configurazione richiesta per la migrazione e completato tutte le liste di controllo sulla migrazione precedenti, puoi creare e distribuire il codice ai tuoi worker.

Nota

Se vedi un errore di compilazione con il LeaseManagementConfig costruttore, vedi Errore di compilazione con il costruttore per informazioni sulla risoluzione dei LeaseManagementConfig problemi.

Fase 8: Completare la migrazione

Durante la distribuzione del codice KCL 3.x, KCL continua a utilizzare l'algoritmo di assegnazione del lease di 2.x. KCL Dopo aver distribuito con successo il codice KCL 3.x a tutti i lavoratori, KCL lo rileva automaticamente e passa al nuovo algoritmo di assegnazione del leasing basato sull'utilizzo delle risorse dei lavoratori. Per ulteriori dettagli sul nuovo algoritmo di assegnazione del leasing, vedere. Come assegna i contratti di locazione ai lavoratori e bilancia il carico KCL

Durante la distribuzione, è possibile monitorare il processo di migrazione emettendo le seguenti metriche a. CloudWatch È possibile monitorare le metriche durante l'operazione. Migration Tutte le metriche sono per-KCL-application metriche e impostate sul livello metrico. SUMMARY Se la Sum statistica della CurrentState:3xWorker metrica corrisponde al numero totale di lavoratori nell'KCLapplicazione, indica che la migrazione alla KCL versione 3.x è stata completata correttamente.

Importante

Sono necessari almeno 10 minuti per passare KCL al nuovo algoritmo di assegnazione dei locatari dopo che tutti i lavoratori sono pronti a eseguirlo.

CloudWatch metriche per il processo di migrazione KCL
Metriche Descrizione
CurrentState:3xWorker

Il numero di KCL lavoratori è stato migrato con successo alla versione KCL 3.x e ha eseguito il nuovo algoritmo di assegnazione del leasing. Se il Sum conteggio di questa metrica corrisponde al numero totale dei lavoratori, indica che la migrazione alla KCL versione 3.x è stata completata correttamente.

  • Livello parametro: Summary

  • Unità: numero

  • Statistiche: la statistica più utile è Sum

CurrentState:2xCompatibleWorker

Il numero di KCL lavoratori in esecuzione in modalità compatibile con KCL 2.x durante il processo di migrazione. Un valore diverso da zero per questa metrica indica che la migrazione è ancora in corso.

  • Livello parametro: Summary

  • Unità: numero

  • Statistiche: la statistica più utile è Sum

Fault

Il numero di eccezioni riscontrate durante il processo di migrazione. La maggior parte di queste eccezioni sono errori temporanei e KCL 3.x riproverà automaticamente a completare la migrazione. Se osservi un valore di Fault metrica persistente, esamina i log del periodo di migrazione per un'ulteriore risoluzione dei problemi. Se il problema persiste, contatta. AWS Support

  • Livello parametro: Summary

  • Unità: numero

  • Statistiche: la statistica più utile è Sum

GsiStatusReady

Lo stato della creazione dell'indice secondario globale (GSI) nella tabella di leasing. Questa metrica indica se la tabella GSI on the lease è stata creata, un prerequisito per eseguire 3.x. KCL Il valore è 0 o 1, dove 1 indica che la creazione è riuscita. Durante uno stato di rollback, questa metrica non verrà emessa. Dopo aver effettuato nuovamente il rollforward, puoi riprendere a monitorare questa metrica.

  • Livello parametro: Summary

  • Unità: numero

  • Statistiche: la statistica più utile è Sum

workerMetricsReady

Stato delle emissioni delle metriche dei lavoratori da parte di tutti i lavoratori. Le metriche indicano se tutti i lavoratori emettono parametri come l'utilizzo. CPU Il valore è 0 o 1, dove 1 indica che tutti i lavoratori stanno emettendo correttamente le metriche e sono pronti per il nuovo algoritmo di assegnazione del leasing. Durante uno stato di rollback, questa metrica non verrà emessa. Dopo aver effettuato nuovamente il rollforward, puoi riprendere a monitorare questa metrica.

  • Livello parametro: Summary

  • Unità: numero

  • Statistiche: la statistica più utile è Sum

KCLfornisce funzionalità di rollback alla modalità compatibile con 2.x durante la migrazione. Una volta completata la migrazione alla KCL versione 3.x, si consiglia di rimuovere l'CoordinatorConfig.clientVersionConfigimpostazione «CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2Xse il rollback non è più necessario». La rimozione di questa configurazione interrompe l'emissione di metriche relative alla migrazione dall'applicazione. KCL

Nota

Ti consigliamo di monitorare le prestazioni e la stabilità dell'applicazione per un periodo durante la migrazione e dopo il completamento della migrazione. Se si riscontrano problemi, è possibile eseguire il rollback worker per utilizzare la funzionalità compatibile con la KCL versione 2.x utilizzando lo strumento di KCLmigrazione.