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 liderall(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.