Senior
Kafka'da qanday yetkazib berish kafolatini ishlatamiz?
sobes.tech AI
AIdan javob
Kafka'da odatda "kamida bir marta" yetkazib berish kafolati ishlatiladi. Bu, xabar kamida bir marta iste'molchiga yetkaziladi, lekin nosozliklar paytida takrorlar bo'lishi mumkin. Ishonchlilikni oshirish va ma'lumotlarni yo'qotishni oldini olish uchun Kafka tasdiqlashlar (acks) ni ishlatadi va tasdiqlash darajasini sozlash mumkin:
- acks=0 — ishlab chiqaruvchi tasdiqlashni kutmaydi (eng kam ishonchli)
- acks=1 — bo'linma lideridan tasdiqlash
- acks=all (yoki -1) — barcha replikalardan tasdiqlash (maksimal ishonchlilik)
"An exact once" yetkazib berishni ta'minlash uchun, iste'molchining tomonida qo'shimcha logika va Kafka'da tranzaktsiyalarni ishlatish kerak, bu murakkabroq va har doim ham ma'qul emas.
Go tilida "kamida bir marta" yetkazib berish kafolati bilan ishlab chiqaruvchini sozlash misoli:
producer, err := sarama.NewSyncProducer(brokers, &sarama.Config{
Producer: sarama.ProducerConfig{
RequiredAcks: sarama.WaitForAll, // acks=all
Retry: sarama.NewRetry(5),
},
})