Kafka Architecture: Compactación de troncos

Este artículo es una muestra de nuestra serie sobre arquitectura kafka, que incluye temas de arquitectura kafka, arquitectura de productores kafka, arquitectura de consumo kafka y arquitectura de ecosistema kafka .

este artículo está muy inspirado en la sección de kafka sobre diseño en torno a la compactación de troncos . puedes considerarlo como las notas del acantilado sobre el diseño de kafka en torno a la compactación de troncos .

kafka puede eliminar registros antiguos en función del tiempo o el tamaño de un registro. kafka también admite compactación de troncos para compactación de claves de registro. compactación de registros significa que kafka mantendrá la última versión de un registro y eliminará las versiones anteriores durante la compactación de registros.

jean-paul azar trabaja en cloudurable . cloudurable proporciona capacitación en kafka, consultoría en kafka, soporte de kafka y ayuda a configurar clústeres de kafka en aws .

compactación de registros kafka

la compactación de registros conserva al menos el último valor conocido para cada clave de registro para una partición de tema individual. los registros compactados son útiles para restaurar el estado después de un bloqueo o fallo del sistema.

son útiles para servicios en memoria, almacenes de datos persistentes,recarga de caché, etc. un caso de uso importante de los flujos de datos es registrar los cambios en los cambios de datos mutables con clave en una tabla de base de datos o los cambios en el objeto en un microservicio en memoria.

la compactación de registros es un mecanismo de retención granular que retiene la última actualización para cada clave. un registro de temas compactado contiene una instantánea completa de los valores finales de registro para cada clave de registro, no solo las claves modificadas recientemente.

la compactación de troncos de kafka permite a los consumidores intermedios restaurar su estado desde un tema compactado de troncos.

estructura de compactación de troncos de kafka

con un tronco compactado, el tronco tiene cabeza y cola. la cabeza del tronco compactado es idéntica a un tronco kafka tradicional. se añaden nuevos registros al final de la cabeza.

toda la compactación de troncos funciona en la cola del tronco. sólo la cola se compactó. los registros en la cola del registro conservan su desplazamiento original cuando se escriben después de reescribirse con limpieza de compactación .

estructura de compactación de troncos de kafka

estructura de compactación de troncos de kafka

conceptos básicos de compactación de troncos de kafka

todos los desplazamientos de troncos compactados siguen siendo válidos, incluso si el registro en offset se ha compactado, ya que un consumidor obtendrá el siguiente desplazamiento más alto.

la compactación de registros kafka también permite eliminaciones. un mensaje con una clave y una carga útil nula actúa como una lápida, un marcador de eliminación para esa clave. las lápidas se limpian después de un período. la compactación de registros se ejecuta periódicamente en segundo plano al volver a copiar segmentos de registros. la compactación no bloquea las lecturas y se puede limitar para evitar el impacto de las e/s de los productores y consumidores.

proceso de compactación de troncos de kafka

proceso de compactación de troncos de kafka

limpieza de compactación de troncos de kafka

si un consumidor de kafka se mantiene al día con la cabeza del registro, ve todos los registros que se escriben.

topic config min.compaction.lag.ms se utiliza para garantizar un período mínimo que debe pasar antes de que un mensaje pueda compactarse. el consumidor ve todas las lápidas siempre que llegue a la cabecera de un registro en un período inferior a la configuración del tema delete.retention.ms (el valor predeterminado es 24 horas). la compactación de registros nunca volverá a ordenar los mensajes, solo elimine algunos. el desplazamiento de partición de un mensaje nunca cambia.

cualquier lectura de consumidor desde el inicio del registro ve al menos el estado final de todos los registros en el orden en que se escribieron.

limpiador de registros de kafka

recuerde que un tema de kafka tiene un registro. un registro se divide en particiones y las particiones se dividen en segmentos que contienen registros que tienen claves y valores.

el limpiador de troncos kafka compacta troncos. el limpiador de troncos tiene un conjunto de roscas de compactación de fondo. estos subprocesos vuelven a copiar archivos de segmento de registro, eliminando registros antiguos cuya clave reaparece recientemente en el registro. cada hilo de compactación elige el registro de tema que tiene la proporción más alta de cabeza de tronco a cola de tronco. luego, la rosca de compactación vuelve a copiar el registro de principio a fin, eliminando los registros cuyas claves aparecen más adelante en el registro.

a medida que el limpiador de registros limpia los segmentos de partición de registros, los segmentos se intercambian en la partición de registros reemplazando inmediatamente los segmentos anteriores. de esta manera, la compactación no requiere el doble de espacio de toda la partición, ya que el espacio de disco adicional requerido es solo un segmento de partición de registro adicional: dividir y conquistar.

configuración de temas para compactación de registros

para activar la compactación de un tema, utilice configuración de temas log.cleanup.policy=compact .

para establecer un retardo para iniciar la compactación de registros después de que se escriban, use configuración de temas log.cleaner.min.compaction.lag.ms . los discos no se compactarán hasta después de este período. la configuración da a los consumidores tiempo para obtener cada registro.

revisión de compactación de registros

¿cuáles son las tres formas en que kafka puede eliminar registros?

kafka puede eliminar registros antiguos en función del tiempo o el tamaño de un registro. kafka también admite compactación de troncos para compactación de claves de registro.

¿para qué sirve la compactación de troncos?

dado que la compactación de registros conserva el último valor conocido, es una instantánea completa de los registros más recientes, es útil para restaurar el estado después de un bloqueo o fallo del sistema para un servicio en memoria, un almacén de datos persistente o la recarga de una caché. permite a los consumidores de aguas abajo restaurar su estado.

¿cuál es la estructura de un tronco compactado? describa la estructura.

con un tronco compacto, el tronco tiene cabeza y cola. la cabeza del tronco compactado es idéntica a un tronco kafka tradicional. se añaden nuevos registros al final de la cabeza. toda la compactación de troncos funciona en la cola del tronco compactado.

después de la compactación, ¿cambian las compensaciones de registro? no.

¿qué es un segmento de partición?

recordar que un tema tiene un registro. un registro de temas se divide en particiones y las particiones se dividen en archivos de segmentos que contienen registros que tienen claves y valores. los archivos de segmento permiten dividir y conquistar cuando se trata de compactación de registros. un archivo de segmento es parte de la partición. a medida que el limpiador de registros limpia los segmentos de partición de registro, los segmentos se intercambian en la partición de registro reemplazando inmediatamente los archivos de segmento más antiguos. de esta manera, la compactación no requiere el doble de espacio de toda la partición, ya que el espacio de disco adicional requerido es solo un segmento de partición de registro adicional.

jean-paul azar trabaja en cloudurable . cloudurable proporciona capacitación en kafka, consultoría en kafka, soporte de kafka y ayuda a configurar clústeres de kafka en aws .

Deja una respuesta

Tu dirección de correo electrónico no será publicada.