Milyen üzenetkézbesítési garanciamechanizmust használtak Kafka-ban a korábbi munkahelyén?
sobes.tech MI
Válasz az MI-től
A Kafka-ban az üzenetkézbesítési garanciák a producer és a consumer beállításain, valamint az acknowledgments (acks) mechanizmusán és az offsetek kezelésén keresztül biztosítottak.
Fő mechanizmusok:
-
acks — a producer paramétere, amely meghatározza, hány replikának kell megerősítenie az üzenet írását. Értékek:
0— nem vár megerősítést (alacsony megbízhatóság)1— a vezető megerősítését várjaall(vagy-1) — minden ISR (szinkron replikák) megerősítését várja, ez biztosítja a maximális megbízhatóságot
-
Újrapróbálkozások és az idempotencia — a producer újrapróbálhatja az üzenetek küldését hibák esetén, az idempotencia pedig megakadályozza a duplikátumokat.
-
Offsetek commitje — a fogyasztó az üzenetek feldolgozása után commitálja az offseteket, hogy biztosítsa, az üzenetek nem kerülnek újra feldolgozásra.
Gyakorlatban az "legalább egyszer" garantálásához acks=all és idempotens producer használatos, míg az "egyszer pontosan" garantálásához további beállítások és alkalmazás szintű kezelés szükséges.
Példa a producer konfigurációjára Go nyelven (sarama használatával):
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)
Így a kézbesítési garancia mechanizmusa a megerősítések, replikáció és az offsetek kezelése kombinációja.