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ůdceall(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ů.