Sobes.tech
Junior — Middle

Aký mechanizmus záruky doručenia správ bol v Kafka na vašom predchádzajúcom pracovisku použitý?

sobes.tech AI

Odpoveď od AI

V Kafka sú záruky doručenia správ zabezpečené konfiguráciou parametrov producenta a konzumenta, ako aj mechanizmom potvrdení (acks) a správou posunov (offsets).

Hlavné mechanizmy:

  • acks — parameter producenta, ktorý určuje, koľko replík musí potvrdiť zápis správy. Hodnoty:

    • 0 — nečakať na potvrdenie (nízka spoľahlivosť)
    • 1 — čakať na potvrdenie od lídra
    • all (alebo -1) — čakať na potvrdenie od všetkých ISR (synchronizované repliky), čo zabezpečuje maximálnu spoľahlivosť
  • Opakovania a idempotentnosť — producent môže opakovať odoslanie správ pri chybách, a idempotentnosť zabraňuje duplikátom.

  • Potvrdenie posunov (offset commit) — konzument po spracovaní správ vykoná commit posunov, aby sa zabezpečilo, že správy nebudú spracované opakovane.

V praxi sa pre "minimálne raz" doručenie používa acks=all a idempotentný producent, zatiaľ čo pre "presne raz" sú potrebné ďalšie nastavenia a správa na úrovni aplikácie.

Príklad konfigurácie producenta v Go (s použitím sarama):

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

Takto je mechanizmus záruky doručenia kombináciou potvrdení, replikácie a správy posunov.