Sobes.tech
Middle

¿Cómo escribe Kafka los mensajes y cómo los transmite?

sobes.tech AI

Respuesta de la IA

Los mensajes se registran secuencialmente en archivos de segmentos (segments) en el registro. Al escribir cada mensaje, Kafka lo añade al final del segmento activo actual. Cada segmento tiene un tamaño fijo o configurable, y cuando se alcanza, Kafka crea un nuevo segmento. El desplazamiento (offset) de un mensaje es un identificador único dentro de la partición y representa su posición en el registro.

La transmisión de mensajes se basa en el mecanismo pull: los consumidores (consumers) solicitan datos a los brokers (brokers) de forma autónoma. Cada consumidor de grupo mantiene su propio desplazamiento para cada partición, rastreando hasta qué mensaje ha leído. Kafka no almacena el estado de cada consumidor de forma individual, lo que permite escalar la cantidad de consumidores independientemente del número de particiones o brokers. Los brokers transmiten los mensajes desde el desplazamiento solicitado hasta el último disponible.

Kafka utiliza el principio de copia cero (zero-copy) para una transmisión eficiente de datos desde el sistema de archivos al socket de red, evitando buffers en el espacio de usuario, lo que reduce significativamente los costos de copia de datos.

// Ejemplo de solicitud del consumidor
// consumer.poll(Duration.ofMilliseconds(100))
// El consumidor solicita nuevos mensajes, comenzando desde su desplazamiento actual