Sobes.tech
Junior — Middle

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