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
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. ConfigsBuilder
offre 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'checkpointer
oggetto 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
-
Il sistema operativo deve essere Linux OS.
-
È necessario abilitare la versione 4 dell'endpoint dei metadati delle ECS attività.
-
La versione di Amazon ECS Container Agent deve essere 1.39.0 o successiva.
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:
CreateTable
DescribeTable
,,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.
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
|
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.
|
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
|
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.
|
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.
|
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.clientVersionConfig
impostazione «CLIENT_VERSION_CONFIG_COMPATIBLE_WITH_2X
se 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