Sobes.tech
Junior — Middle

¿Qué mecanismo de garantía de entrega de mensajes se utilizó en Kafka en su trabajo anterior?

sobes.tech AI

Respuesta de la IA

En Kafka, las garantías de entrega de mensajes se aseguran mediante la configuración de los parámetros del productor y del consumidor, así como mediante el mecanismo de confirmaciones (acks) y la gestión de desplazamientos (offsets).

Mecanismos principales:

  • acks — parámetro del productor que determina cuántas réplicas deben confirmar la escritura del mensaje. Valores:

    • 0 — no esperar confirmación (baja fiabilidad)
    • 1 — esperar confirmación del líder
    • all (o -1) — esperar confirmación de todas las ISR (réplicas en sincronía), lo que garantiza la máxima fiabilidad
  • Reintentos e idempotencia — el productor puede reintentar enviar mensajes en caso de errores, y la idempotencia evita duplicados.

  • Confirmación de desplazamientos (offset commit) — el consumidor, tras procesar los mensajes, realiza un commit de los desplazamientos para garantizar que los mensajes no se vuelvan a procesar.

En la práctica, para garantizar una entrega "al menos una vez" se usa acks=all y un productor idempotente, y para "exactamente una vez" se configuran opciones adicionales y se maneja a nivel de la aplicación.

Ejemplo de configuración del productor en Go (usando sarama):

config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)

De esta forma, el mecanismo de garantía de entrega es una combinación de confirmaciones, replicación y gestión de desplazamientos.