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à.
Sincronizzazione dell'offset del gruppo di consumatori
MSK Replicator è in grado di sincronizzare gli offset dei gruppi di consumatori da un cluster di origine a un cluster di destinazione, consentendo ai consumatori di cambiare cluster e riprendere l'elaborazione senza saltare i record. Questo argomento illustra come funziona la sincronizzazione offset nelle configurazioni unidirezionali (legacy) e bidirezionali (avanzate) ed evidenzia le insidie più comuni.
Come funziona la sincronizzazione offset
Nell'ambito della replica dei dati, MSK Replicator utilizza i messaggi dal cluster di origine e li produce nel cluster di destinazione. Ciò può portare a messaggi con offset diversi sui cluster di origine e di destinazione. Se è stata attivata la sincronizzazione degli offset dei gruppi di consumatori durante la creazione di Replicator, MSK Replicator traduce automaticamente gli offset durante la copia dei metadati in modo che, dopo il failover sul cluster di destinazione, i consumatori possano riprendere l'elaborazione da dove l'avevano interrotta.
MSK Replicator è ottimizzato per i consumatori del cluster di origine che leggono da una posizione più vicina alla fine del flusso (fine della partizione dell'argomento). Se i gruppi di consumatori sono in ritardo rispetto al cluster di origine, è possibile che si verifichi un ritardo maggiore per tali gruppi di consumatori sulla destinazione rispetto a quello di origine, il che significa che i consumatori rielaboreranno più messaggi duplicati dopo il failover. Per ridurre questo ritardo, i consumatori del cluster di origine devono recuperare il ritardo accumulato e iniziare a consumare dall'inizio del flusso. Man mano che i consumatori recuperano il ritardo, MSK Replicator ridurrà automaticamente il ritardo.
La sincronizzazione offset è una pipeline in tre fasi:
Mappatura dell'offset: man mano che i record vengono replicati dall'origine alla destinazione, il replicatore registra le mappature periodiche tra gli offset di origine e gli offset di destinazione corrispondenti. Poiché gli offset di origine e di destinazione divergono (punti di partenza, compattazione e così via diversi), queste mappature sono essenziali.
Traduzione in offset: periodicamente, il replicatore legge gli offset confermati per ogni gruppo di consumatori replicato nel cluster di origine. Utilizza quindi le mappature di offset memorizzate per tradurre gli offset di origine negli offset di destinazione equivalenti.
Offset commit: gli offset tradotti vengono assegnati all'
__consumer_offsetsargomento del cluster di destinazione, in modo che quando un consumatore si connette al target e si unisce allo stesso gruppo, riprende approssimativamente dalla posizione corretta.
Comportamenti chiave:
La traduzione in offset è approssimativa, non esatta. Il replicatore campiona le mappature di offset a intervalli, quindi l'offset tradotto potrebbe essere leggermente inferiore alla posizione equivalente reale. Questo è dovuto alla progettazione: presenta errori sul lato della at-least-once consegna, il che significa che i consumatori possono rileggere un numero limitato di messaggi dopo il failover.
Le compensazioni vengono assegnate a un gruppo di consumatori aderente all'obiettivo solo se nessun consumatore consuma attivamente all'interno di quel gruppo destinatario. Ciò impedisce al replicatore di interferire con i consumatori già in esecuzione sul cluster di destinazione.
I gruppi di consumatori devono corrispondere al filtro del gruppo di consumatori configurato (modelli di inclusione/esclusione) per essere sincronizzati.
Replica unidirezionale con sincronizzazione offset preesistente
Questa è la modalità predefinita per un replicatore unidirezionale standard (Cluster A → Cluster B).
Denominazione degli argomenti: la sincronizzazione offset legacy supporta la replica di nomi di argomento con prefisso e identico.
Direzione: gli offset del gruppo di consumatori vengono sincronizzati con il cluster di destinazione solo quando i produttori sono attivi sul gruppo di origine e i consumatori sono inattivi sul cluster di destinazione.
Failover: i consumatori possono essere indirizzati verso il cluster di destinazione e riprenderanno dalla posizione di offset tradotta.
Nessun supporto per il failback: la sincronizzazione offset legacy non converte gli offset dalla destinazione all'origine. Se sposti i consumatori verso la destinazione e successivamente desideri riportarli alla fonte, non è disponibile una traduzione offset automatica per il viaggio di ritorno. Se il failback è un requisito, utilizzate una configurazione bidirezionale con sincronizzazione offset avanzata.
Configurazione bidirezionale con sincronizzazione offset migliorata
Una configurazione bidirezionale richiede due replicatori che funzionano in direzioni opposte (Replicator A→B e Replicator B→A). Ogni replicatore esegue comunque la replica unidirezionale dei dati e la sincronizzazione degli offset: replica i dati dall'origine alla destinazione e sincronizza gli offset del gruppo di consumatori nella stessa direzione. Grazie alla sincronizzazione avanzata degli offset, ogni replicatore è in grado di continuare a sincronizzare i gruppi di consumatori anche quando produttori e consumatori sono attivi su cluster diversi.
Caratteristiche principali:
Denominazione degli argomenti: la sincronizzazione avanzata richiede la replica identica dei nomi degli argomenti su entrambi i replicatori.
Due replicatori, ciascuno unidirezionale: ogni replicatore replica i dati e sincronizza gli offset in una direzione. Il comportamento bidirezionale deriva dalla collaborazione della coppia.
Legge le mappature da entrambi i replicatori: durante la traduzione degli offset, i replicatori collaborano per determinare la traduzione più accurata disponibile.
Failover e failback: i consumatori possono essere spostati da un cluster all'altro e riprenderli approssimativamente dalla posizione corretta.
Quando abilitare la sincronizzazione bidirezionale degli offset:
Migrazione con funzionalità di rollback: quando si esegue la migrazione da un cluster a un altro e si desidera avere la possibilità di ripristinare il cluster originale in caso di problemi.
Architetture active-active: quando entrambi i cluster servono attivamente operazioni di lettura e scrittura ed è necessario che i consumatori siano in grado di passare da un cluster all'altro.
Disaster recovery: quando è necessario garantire che i consumatori possano riprendere l'elaborazione dall'offset corretto su entrambi i cluster dopo un evento di failover o failback.
Monitoraggio della sincronizzazione degli offset
Monitora i seguenti CloudWatch parametri Amazon per verificare che la sincronizzazione degli offset funzioni correttamente:
ConsumerGroupCount— Verifica che il numero previsto di gruppi di consumatori sia sincronizzato su entrambi i replicatori.ConsumerGroupOffsetSyncFailure— Dovrebbe essere 0 su entrambi i replicatori. Se questo valore è maggiore di 0, verifica che i gruppi di consumatori siano attivi, verifica le autorizzazioni di lettura e descrizione e assicurati che gli argomenti esistano nel cluster di destinazione.OffsetLag (MSK Cluster)eOffsetLag (Non-MSK Cluster)— Confronta il ritardo dei consumatori a livello di partizione in entrambi i cluster per verificare che gli offset siano sincronizzati.
Insidie comuni
-
I consumatori possono rileggere un numero limitato di messaggi dopo il failover
La traduzione in offset è approssimativa. L'offset tradotto è intenzionalmente conservativo: potrebbe essere leggermente inferiore alla posizione equivalente reale. Ciò significa che i consumatori in genere rielaborano un numero limitato di record dopo aver cambiato cluster. Le applicazioni devono essere progettate per gestire l'elaborazione duplicata (idempotenza).
-
Gli offset non vengono sincronizzati con i gruppi che consumano attivamente la destinazione
Se un gruppo di consumatori è già attivo sul cluster di destinazione, il replicatore non sovrascriverà i relativi offset. Si tratta di un meccanismo di sicurezza. Tuttavia, ciò significa che se i consumatori vengono avviati sulla destinazione prima che il replicatore abbia avuto la possibilità di sincronizzare gli offset, tali consumatori inizieranno dalla politica di ripristino dell'offset predefinita del target (in genere
latestorearliest), non dalla posizione tradotta. -
La sincronizzazione con offset presenta un ritardo intrinseco
La traduzione dell'offset dipende da due processi asincroni: la replica dei dati e la sincronizzazione dell'offset. C'è sempre un certo ritardo tra il momento in cui un consumatore esegue un offset sull'origine e il momento in cui l'offset tradotto appare sulla destinazione. Durante il failover, questo ritardo può far sì che i consumatori rileggano più messaggi del previsto se il consumatore di origine è stato attivo di recente.
-
I gruppi di consumatori devono essere inclusi nel filtro di replica
Solo i gruppi di consumatori che corrispondono al modello di inclusione configurato (e non corrispondono al modello di esclusione) avranno i loro offset sincronizzati. Se gli offset di un gruppo di consumatori non compaiono sulla destinazione, verifica che siano inclusi nella configurazione di replica del gruppo di consumatori.
-
I replicatori unidirezionali non supportano il failback
Con la sincronizzazione offset legacy (unidirezionale), gli offset vengono tradotti solo dall'origine alla destinazione. Se spostate i consumatori verso la destinazione e successivamente dovete riportarli all'origine, dovrete determinare manualmente gli offset corretti o accettare la rielaborazione. Se il failback è un requisito, utilizzate una configurazione bidirezionale con sincronizzazione offset avanzata.
-
L'eliminazione e la ricreazione degli argomenti possono invalidare le mappature di offset
Se un argomento viene eliminato e ricreato su uno dei cluster, le mappature di offset diventano obsolete perché il nuovo argomento parte dall'offset 0. Con la sincronizzazione offset tradizionale, ciò può comportare traduzioni offset errate. La sincronizzazione offset avanzata rileva la ricreazione degli argomenti e ripristina automaticamente le mappature.