Sobes.tech
Middle+

Čo vieš o zárukách doručenia v Kafka?

sobes.tech AI

Odpoveď od AI

V Kafka existuje niekoľko úrovní záruk doručenia správ:

  1. Maximálne raz (at most once) — správa môže byť stratená, ale nebude duplikovaná. Zvyčajne pri odpojení producenta pred potvrdením.
  2. Aspoň raz (at least once) — správa je garantovane doručená, ale pri opätovnom odoslaní môže dôjsť k duplikátom.
  3. Presne raz (exactly once) — správa je doručená a spracovaná presne raz, bez duplikátov.

Na zabezpečenie týchto záruk Kafka používa:

  • acks — parameter producenta, ktorý určuje, koľko replík musí potvrdiť zápis (0, 1, all).
  • Identifikátory správ a offsety — na sledovanie pozície čítania.
  • Transakcie — na implementáciu semantics exactly-once pri zápise a spracovaní správ.

Príklad konfigurácie producenta pre záruku "aspoň raz":

producer, _ := sarama.NewSyncProducer(brokers, &sarama.Config{
    Producer: sarama.ProducerConfig{
        RequiredAcks: sarama.WaitForAll, // čakáme na potvrdenie od všetkých replík
        Retry: sarama.ProducerRetry{
            Max: 5, // opakovania
        },
    },
})

Takto Kafka umožňuje flexibilne nastavovať rovnováhu medzi výkonom a spoľahlivosťou doručenia.