Sobes.tech
Junior — Middle

Milline mehanism Kafka-s sõnumite kohaletoimetamise garantii kasutati teie eelmisel töökohal?

sobes.tech AI

Vastus AI-lt

Kafka-s sõnumite kohaletoimetamise garantiid tagatakse seadistuste kaudu, mis on seotud tootja ja tarbija parameetritega, ning kinnitamise (acks) mehhanismi ja nihkude (offsets) haldamisega.

Peamised mehhanismid:

  • acks — tootja parameeter, mis määrab, mitu replika peab kinnitama sõnumi kirje. Väärtused:

    • 0 — ei oota kinnitust (madal usaldusväärsus)
    • 1 — oodata juhtpositsiooni kinnitust
    • all (või -1) — oodata kõigi ISR (sünkroniseeritud replika) kinnitust, mis tagab maksimaalse usaldusväärsuse
  • Korduskatsetused ja idempotentsus — tootja võib sõnumeid uuesti saata vigade korral, ning idempotentsus väldib duplikaate.

  • Nihkude kinnitamine (offset commit) — tarbija pärast sõnumite töötlemist teeb nihkude kinnituse, et tagada, et sõnumeid ei töödelda uuesti.

Praktikas kasutatakse "vähemalt üks kord" garantii jaoks acks=all ja idempotentset tootjat, ning "täpselt üks kord" jaoks täiendavaid seadistusi ja rakendustasandi haldust.

Näide tootja konfiguratsioonist Go keeles (sarama kasutades):

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

Seega on kohaletoimetamise garantii mehhanism kombinatsioon kinnitustest, replikatsioonist ja nihkude haldamisest.