Ana içeriğe geç

Kafka'ya Veri Gönderme (Producer Acknowledgement)#

Veri gönderdiğimizde Kafka'ya iletilmesi, leader'a yazılması, diğer partition'lara yazılması safhalarından hangilerinin bitmesini istediğimizi belirtiyoruz. Buna acknowledgement deniyor.

  • acks=0 -> Kafka'ya mesajı gönder ve cevabı beklemeden devam et. En hızlı ve en riskli yöntemdir. Mesajın kaybolma riski yüksektir.
  • acks=1 -> Kafka'ya gönder sadece leader yazana kadar bekle. Orta derece hızlı ve güvenli yöntemdir. Mesaj kaybolma riski çok az.
  • acks=all,-1 -> Kafka'ya gönder, leader'a yazmasını ve leader'ın diğer partition'lara yazmasını bekle. En yavaş ve en güvenli yöntemdir. Mesaj kaybolma riski yok.


Kafka'dan Veri Okumak (Message Delivery Semantics)#

At most once:#

Offset bilgisi mesaj alınır alınmaz yazılır. Mesaj, işlenmesi sırasında bir hata oluşursa kaybedilir. En performanslı ama mesaj kaybı söz konusu olabileceği için pek tercih edilen bir yöntem değildir.

At least once:#

Offset bilgisi mesaj işlendikten sonra yazılır. Mesaj, işlenmesi sırasında bir hata oluşursa tekrar okunur. Mesaj kaybı oluşmaz ama birden fazla mesajları okuma olasılığı vardır. Bu nedenle mesaj işleme sürecimiz "idempotent" olmalıdır yani duplike durumlarında sistemimiz etkilenmemelidir. En çok tercih edilen yöntemdir.

Exactly once:#

Bu model sadece Kafka - Kafka arasındaki iş akışlarında Kafka Streams API ile sağlanıyor. Mesaj, Kafka topic’ler arasında transfer olurken ve işlenirken transactional producer ve consumer kullanılıyor.

Kafka'dan Veri Silmek#

Time-Based Retention#

  • Zaman bazlı (Standart 7 gün / değiştirilebilir)
  • Veri büyüklüğü bazlı (100GB vs.)

Topic Compaction: Key-Based Retention#

cleanup.policy: compact * Kafka topic'leri compact celanup politikası ile konfigure edilebilir. Bu Kafka'ya aynı key ile olan eski mesajların silinmesini söyler. * Aynı partition olması zorunludur. Aynı topic farklı partition bile olsa kayıt silinmeyecektir. * Log sıkıştırma hemen yapılmaz topic ayarlarına, büyüklüğüne ve işlem gücüne göre değişir.