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:
- Maximálne raz (at most once) — správa môže byť stratená, ale nebude duplikovaná. Zvyčajne pri odpojení producenta pred potvrdením.
- Aspoň raz (at least once) — správa je garantovane doručená, ale pri opätovnom odoslaní môže dôjsť k duplikátom.
- 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.