Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Sincronización compensada por grupos de consumidores
MSK Replicator puede sincronizar las compensaciones de grupos de consumidores de un clúster de origen a un clúster de destino, lo que permite a los consumidores cambiar de clúster y reanudar el procesamiento sin omitir registros. En este tema se explica cómo funciona la sincronización de compensaciones en configuraciones unidireccionales (antiguas) y bidireccionales (mejoradas), y se destacan los errores más comunes.
Cómo funciona la sincronización de offset
Como parte de la replicación de datos, el Replicador MSK consume los mensajes del clúster de origen y los produce al clúster de destino. Esto puede provocar que los mensajes tengan diferentes desplazamientos en los clústeres de origen y destino. Si activó la sincronización de compensaciones de grupos de consumidores durante la creación de Replicator, MSK Replicator traduce automáticamente las compensaciones mientras copia los metadatos para que, tras la conmutación por error al clúster de destino, sus consumidores puedan reanudar el procesamiento prácticamente desde donde lo dejaron.
MSK Replicator se optimiza para los consumidores del clúster de origen que leen desde una posición más cercana a la punta de la secuencia (al final de la partición del tema). Si tus grupos de consumidores están rezagados en el clúster de origen, es posible que veas un retraso mayor en los grupos de consumidores del grupo de destino que en el de origen, lo que significa que los consumidores volverán a procesar más mensajes duplicados tras la conmutación por error. Para reducir este retraso, los consumidores del clúster de origen deben ponerse al día y empezar a consumir desde el principio. A medida que sus consumidores se pongan al día, el Replicador MSK reducirá automáticamente el retraso.
La sincronización Offset se realiza en tres etapas:
Mapeo de desplazamiento: a medida que los registros se replican del origen al destino, el replicador registra mapeos periódicos entre los desplazamientos de origen y los desplazamientos de destino correspondientes. Como las compensaciones de origen y destino son divergentes (diferentes puntos de partida, compactación, etc.), estas asignaciones son esenciales.
Traducción de compensaciones: periódicamente, el replicador lee las compensaciones confirmadas para cada grupo de consumidores replicado en el clúster de origen. A continuación, utiliza las asignaciones de desplazamiento almacenadas para convertir esas compensaciones de origen en las compensaciones de destino equivalentes.
Compensación de compensación: las compensaciones traducidas se asignan al
__consumer_offsetstema del clúster de destino, de modo que cuando un consumidor se conecta al objetivo y se une al mismo grupo, se retoma aproximadamente desde la posición correcta.
Comportamientos clave:
La traducción offset es aproximada, no exacta. El replicador toma muestras de los mapeos de desplazamiento a intervalos, por lo que el desplazamiento traducido puede estar ligeramente por detrás de la posición equivalente real. Esto se debe a su diseño: se equivoca en el lado de la at-least-once entrega, lo que significa que los consumidores pueden volver a leer una pequeña cantidad de mensajes tras la conmutación por error.
Las compensaciones solo se asignan a un grupo de consumidores del objetivo si ningún consumidor consume activamente en ese grupo del objetivo. Esto evita que el replicador interfiera con los consumidores que ya utilizan el clúster de destino.
Los grupos de consumidores deben coincidir con el filtro de grupos de consumidores configurado (patrones de inclusión/exclusión) para poder sincronizarse.
Replicación unidireccional con sincronización de offset tradicional
Este es el modo predeterminado para un replicador unidireccional estándar (Clúster A → Clúster B).
Denominación de temas: la sincronización de offset tradicional admite la replicación de nombres de temas con prefijo e idénticos.
Dirección: las compensaciones de grupos de consumidores solo se sincronizan con el clúster de destino cuando los productores están activos en el grupo de origen y los consumidores están inactivos en el grupo de destino.
Conmutación por error: se puede dirigir a los consumidores al clúster de destino y se reanudarán desde la posición de compensación traducida.
No admite la conmutación por recuperación: la sincronización de compensaciones antigua no traduce las compensaciones del destino a la fuente. Si trasladas a los consumidores al destino y luego quieres devolverlos al lugar de origen, no habrá traducción automática en offset para el viaje de ida y vuelta. Si se requiere la conmutación por recuperación, utilice una configuración bidireccional con una sincronización de offset mejorada.
Configuración bidireccional con sincronización de offset mejorada
Una configuración bidireccional requiere dos replicadores que funcionen en direcciones opuestas (Replicador A→B y Replicador B→A). Cada replicador sigue realizando la replicación de datos unidireccional y la sincronización de compensaciones: replica los datos desde su origen hasta su destino y sincroniza las compensaciones de los grupos de consumidores en la misma dirección. Gracias a la sincronización de compensaciones mejorada, cada replicador puede seguir sincronizando los grupos de consumidores incluso cuando los productores y los consumidores estén activos en clústeres diferentes.
Características clave:
Denominación de temas: la sincronización mejorada requiere la replicación de nombres de temas idénticos en ambos replicadores.
Dos replicadores, cada uno unidireccional: cada replicador replica los datos y sincroniza las compensaciones en una dirección. El comportamiento bidireccional proviene del trabajo conjunto de ambos.
Lee los mapeos de ambos replicadores: al traducir las compensaciones, los replicadores trabajan juntos para determinar la traducción más precisa disponible.
Conmutación por error y recuperación: los consumidores se pueden mover de un clúster a otro y volver a utilizarlos aproximadamente desde la posición correcta.
Cuándo habilitar la sincronización de compensación bidireccional:
Migración con capacidad de reversión: cuando se migra de un clúster a otro y se desea tener la posibilidad de volver al clúster original en caso de que surjan problemas.
Arquitecturas activas-activas: cuando ambos clústeres prestan servicios de lectura y escritura de forma activa y se necesita que los consumidores puedan cambiar de un clúster a otro.
Recuperación ante desastres: cuando se necesita garantizar que los consumidores puedan reanudar el procesamiento desde la posición correcta en cualquiera de los clústeres tras una conmutación por error o una conmutación por recuperación.
Supervisión de la sincronización de la compensación
Supervisa las siguientes CloudWatch métricas de Amazon para comprobar que la sincronización de compensaciones funciona correctamente:
ConsumerGroupCount— Compruebe que el número esperado de grupos de consumidores se esté sincronizando en ambos replicadores.ConsumerGroupOffsetSyncFailure— Debe ser 0 en ambos replicadores. Si este valor es superior a 0, compruebe que los grupos de consumidores estén activos, compruebe los permisos de lectura y descripción y asegúrese de que los temas existan en el clúster de destino.OffsetLag (MSK Cluster)yOffsetLag (Non-MSK Cluster): compare el desfase de consumo a nivel de partición en ambos clústeres para comprobar que las compensaciones estén sincronizadas.
Dificultades comunes
-
Los consumidores pueden volver a leer una pequeña cantidad de mensajes tras la conmutación por error
La traducción offset es aproximada. El desfase traducido es intencionadamente conservador; es posible que esté ligeramente por detrás de la posición equivalente real. Esto significa que los consumidores suelen volver a procesar una pequeña cantidad de registros después de cambiar de clúster. Las aplicaciones deben diseñarse para gestionar el procesamiento duplicado (idempotencia).
-
Las compensaciones no se sincronizan con los grupos que consumen energía de forma activa en el objetivo
Si un grupo de consumidores ya está activo en el clúster de destino, el replicador no sobrescribirá sus compensaciones. Se trata de un mecanismo de seguridad. Sin embargo, esto significa que si los consumidores comienzan con el objetivo antes de que el replicador haya tenido la oportunidad de sincronizar las compensaciones, esos consumidores comenzarán con la política de restablecimiento de compensaciones predeterminada del objetivo (normalmente
latestoearliest), no desde la posición traducida. -
La sincronización de compensaciones tiene un retraso inherente
La traducción de offset depende de dos procesos asíncronos: la replicación de datos y la sincronización de offset. Siempre hay algún retraso entre el momento en que un consumidor comete una compensación en la fuente y el momento en que la compensación traducida aparece en la de destino. Durante la conmutación por error, este retraso puede provocar que los consumidores relean más mensajes de los esperados si el consumidor de origen ha estado activo recientemente.
-
Los grupos de consumidores deben incluirse en el filtro de replicación
Solo los grupos de consumidores que coincidan con el patrón de inclusión configurado (y que no coincidan con el patrón de exclusión) tendrán sus compensaciones sincronizadas. Si las compensaciones de un grupo de consumidores no aparecen en el destino, compruebe que estén incluidas en la configuración de replicación del grupo de consumidores.
-
Los replicadores unidireccionales no admiten la conmutación por recuperación
Con la sincronización de compensaciones tradicional (unidireccional), las compensaciones solo se traducen del origen al destino. Si traslada a los consumidores al destino y, posteriormente, necesita volver a colocarlos en el lugar de origen, tendrá que determinar manualmente las compensaciones correctas o aceptar el reprocesamiento. Si se requiere la conmutación por recuperación, utilice una configuración bidireccional con una sincronización de offset mejorada.
-
La eliminación y recreación de temas pueden invalidar los mapeos de offset
Si se elimina un tema y se vuelve a crear en cualquiera de los clústeres, las asignaciones de desplazamiento se vuelven obsoletas porque el nuevo tema comienza desde el desplazamiento 0. Con la sincronización de offset tradicional, esto puede provocar traducciones de offset incorrectas. La sincronización de offset mejorada detecta la recreación de temas y restablece los mapeos automáticamente.