Önceki işinizde Kafka'da hangi mesaj teslim garantisi mekanizması kullanıldı?
sobes.tech yapay zeka
AI'dan gelen yanıt
Kafka'da mesaj teslim garantileri, üretici ve tüketici ayarlarının yanı sıra onay mekanizması (acks) ve kaydırma (offsets) yönetimi ile sağlanır.
Ana mekanizmalar:
-
acks — üretici parametresi, kaç replikanın mesaj kaydını onaylaması gerektiğini belirler. Değerler:
0— onay beklenmez (düşük güvenilirlik)1— liderden onay beklenirall(veya-1) — tüm ISR (eşzamanlı replikalar) onayı beklenir, bu da maksimum güvenilirliği sağlar
-
Yeniden deneme ve idempotans — üretici, hatalarda mesajları tekrar gönderebilir ve idempotans, yinelenenleri önler.
-
Kaydırma (offset) onayı — tüketici, mesajları işledikten sonra kaydırmaları onaylar, böylece mesajların tekrar işlenmesini önler.
Pratikte, "en az bir kez" teslimat garantisi için acks=all ve idempotent üretici kullanılır, "tam olarak bir kez" için ek ayarlar ve uygulama seviyesinde yönetim yapılır.
Go dilinde sarama kullanarak üretici ayarına örnek:
config := sarama.NewConfig()
config.Producer.RequiredAcks = sarama.WaitForAll
config.Producer.Idempotent = true
config.Producer.Retry.Max = 5
producer, err := sarama.NewSyncProducer(brokers, config)
Bu şekilde, teslimat garantisi mekanizması onaylar, çoğaltma ve kaydırma yönetiminin bir kombinasyonudur.