Sobes.tech
Junior — Middle

Ce mecanism de garantare a livrării mesajelor a fost utilizat în Kafka la locul dvs. de muncă anterior?

sobes.tech AI

Răspuns de la AI

În Kafka, garanțiile de livrare a mesajelor sunt asigurate prin configurarea parametrilor producătorului și consumatorului, precum și prin mecanismul de confirmare (acks) și gestionarea offseturilor.

Principalele mecanisme:

  • acks — parametru al producătorului care determină câte replici trebuie să confirme scrierea mesajului. Valori:

    • 0 — nu aștepta confirmare (fiabilitate scăzută)
    • 1 — așteaptă confirmarea de la lider
    • all (sau -1) — așteaptă confirmarea de la toate ISR (replișii în sincronizare), asigurând cea mai mare fiabilitate
  • Reîncercări și idempotentă — producătorul poate reîncerca trimiterea mesajelor în caz de erori, iar idempotenta previne duplicatele.

  • Confirmarea offseturilor (offset commit) — consumatorul, după procesarea mesajelor, face commit offseturilor pentru a garanta că mesajele nu vor fi procesate din nou.

În practică, pentru garantarea livrării "cel puțin o dată" se folosește acks=all și un producător idempotent, iar pentru "exact o dată" se configurează opțiuni suplimentare și se gestionează la nivel de aplicație.

Exemplu de configurare a producătorului în Go (cu sarama):

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

Astfel, mecanismul de garanție a livrării este o combinație de confirmări, replicare și gestionare a offseturilor.