Koks buvo naudojamas pranešimų pristatymo garantijos mechanizmas Kafka jūsų ankstesnėje darbovietėje?
sobes.tech AI
Atsakymas iš AI
Kafka garantijos pranešimų pristatymui užtikrinamos per nustatymus, susijusius su gamintojo ir vartotojo parametrais, taip pat per patvirtinimo (acks) mechanizmą ir poslinkių (offsets) valdymą.
Pagrindiniai mechanizmai:
-
acks — gamintojo parametras, kuris nustato, kiek replikų turi patvirtinti pranešimo įrašymą. Reikšmės:
0— nereikia laukti patvirtinimo (maža patikimumas)1— laukti patvirtinimo iš lyderioall(arba-1) — laukti patvirtinimo iš visų ISR (sinchronizuotų replikų), kas užtikrina didžiausią patikimumą
-
Pakartotiniai bandymai ir idempotentiškumas — gamintojas gali pakartotinai siųsti pranešimus klaidų atveju, o idempotentiškumas užkerta kelią dubliavimui.
-
Poslinkių patvirtinimas (offset commit) — vartotojas po pranešimų apdorojimo atlieka poslinkių patvirtinimą, kad užtikrintų, jog pranešimai nebus pakartotinai apdoroti.
Praktikoje, norint garantuoti "mažiausiai vieną kartą" pristatymą, naudojamas acks=all ir idempotentiškas gamintojas, o "tik vieną kartą" — papildomi nustatymai ir valdymas programos lygyje.
Pavyzdys gamintojo konfigūracijos Go kalba (naudojant sarama):
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)
Taip, garantijos mechanizmas yra derinys iš patvirtinimų, replikacijos ir poslinkių valdymo.