Sobes.tech
Junior — Middle

Kāds bija Kafka izmantotais ziņojumu piegādes garantijas mehānisms jūsu iepriekšējā darba vietā?

sobes.tech AI

Atbilde no AI

Kafka ziņojumu piegādes garantijas tiek nodrošinātas, izmantojot iestatījumus, kas saistīti ar ražotāja un patērētāja parametriem, kā arī ar apstiprinājumu (acks) mehānismu un nobīžu (offsets) pārvaldību.

Galvenie mehānismi:

  • acks — ražotāja parametrs, kas nosaka, cik replikām ir jāapstiprina ziņojuma ieraksts. Vērtības:

    • 0 — gaidīt apstiprinājumu nav nepieciešams (zema uzticamība)
    • 1 — gaidīt apstiprinājumu no līdera
    • all (vai -1) — gaidīt apstiprinājumu no visām ISR (sinhronizētajām replikām), kas nodrošina maksimālo uzticamību
  • Atkārtojumi un idempotentība — ražotājs var atkārtoti sūtīt ziņojumus kļūdu gadījumā, un idempotentība novērš dublējumus.

  • Nobīžu apstiprināšana (offset commit) — patērētājs pēc ziņojumu apstrādes veic nobīžu apstiprinājumu, lai nodrošinātu, ka ziņojumi netiks atkārtoti apstrādāti.

Praktiski, lai garantētu "vismaz vienu reizi" piegādi, izmanto acks=all un idempotentu ražotāju, bet "precīzi vienu reizi" — nepieciešami papildu iestatījumi un pārvaldība lietojumprogrammas līmenī.

Piemērs ražotāja konfigurācijai Go valodā (ar 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ādējādi, piegādes garantijas mehānisms ir apstiprinājumu, replikācijas un nobīžu pārvaldības kombinācija.