Koji mehanizam garancije isporuke poruka je korišćen u Kafka na vašem prethodnom radnom mestu?
sobes.tech АИ
Одговор од АИ
U Kafka-u, garancije isporuke poruka obezbeđuju se putem podešavanja parametara proizvođača i potrošača, kao i mehanizma potvrda (acks) i upravljanja pomerajima (offsets).
Glavni mehanizmi:
-
acks — parametar proizvođača koji određuje koliko replika mora da potvrdi zapis poruke. Vrednosti:
0— ne čekati potvrdu (niska pouzdanost)1— čekati potvrdu od lideraall(ili-1) — čekati potvrdu od svih ISR (sinhronizovanih replika), što obezbeđuje maksimalnu pouzdanost
-
Ponovni pokušaji i idempotentnost — proizvođač može ponovo slati poruke u slučaju grešaka, a idempotentnost sprečava duplikate.
-
Potvrda pomeraja (offset commit) — potrošač nakon obrade poruka vrši commit pomeraja, kako bi se osiguralo da poruke neće biti obrađene ponovo.
U praksi, za garantovanu isporuku "najmanje jednom" koristi se acks=all i idempotentni proizvođač, dok za "tačno jednom" treba dodatno podešavanje i upravljanje na nivou aplikacije.
Primer konfiguracije proizvođača u Go (sa sarama):
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)
Tako, mehanizam garancije isporuke je kombinacija potvrda, replikacije i upravljanja pomerajima.