Sobes.tech
Junior — Middle

Jaký mechanismus zajištění doručení zpráv byl v Kafka na vašem předchozím místě práce použit?

sobes.tech AI

Odpověď od AI

V Kafka jsou záruky doručení zpráv zajištěny konfigurací parametrů producenta a konzumenta, stejně jako mechanismem potvrzení (acks) a správou posunů (offsets).

Hlavní mechanismy:

  • acks — parametr producenta, který určuje, kolik replik musí potvrdit zápis zprávy. Hodnoty:

    • 0 — nečekat na potvrzení (nízká spolehlivost)
    • 1 — čekat na potvrzení od vůdce
    • all (nebo -1) — čekat na potvrzení od všech ISR (in-sync replik), což zajišťuje maximální spolehlivost
  • Opakování a idempotence — producent může opakovat odeslání zpráv při chybách, a idempotence zabraňuje duplicitám.

  • Potvrzení posunů (offset commit) — konzument po zpracování zpráv provádí commit posunů, aby bylo zajištěno, že zprávy nebudou znovu zpracovány.

V praxi se pro "nejméně jednou" doručení používá acks=all a idempotentní producent, zatímco pro "přesně jednou" jsou potřeba další nastavení a správa na úrovni aplikace.

Příklad konfigurace 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)

Tímto způsobem je mechanismus záruky doručení kombinací potvrzení, replikace a správy posunů.