Sobes.tech
Junior — Middle

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árja
    • all (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.