DEV Community

Cover image for Kafka da Neden Partition Oluştururuz? 💫 🌌 ✨
Gülsen Keskin
Gülsen Keskin

Posted on

Kafka da Neden Partition Oluştururuz? 💫 🌌 ✨

Aggrigation yapabiliriz: Producer'lerin verilerinin belirlenen özelliklerine göre toplanmasıdır.

Daha hızlı okumak (parallelism)
Verileri daha verimli saklamak (efficiency)
Verilerin sıralı bir şekilde toplanması (sorting - event sourcing)

Round robin: Gelen mesajları sırasıyla partitionlara bölüştürmek

Aggregation: Örneğin key değerini category olarak verirsek mesajlar kategoriye göre gruplandırılıp öyle gönderilir.

Sorting- event sourcing: Örneğin customerId'yi key olarak verirsek login, add to cart, purchase (giriş yap, sepete ekle, satın alma) gibi kullanıcıların yaptığı işlemleri arka arkaya sıralar.

Bir partition olsaydı okuma ve yazma performansı çok kötü olurdu yani paralelizm yapamazdık.

Bir partition'dan aynı anda aynı kimliğe sahip sadece bir consumer okuyabilir.
Partition kullanarak büyük boyutlu mesajları istediğimiz şekilde yönlendirebiliriz.
Mesela büyük mesajları belli bir partition'a küçük mesajları belli bir partition'a yönlendirebiliriz.

Leader partition : her partitionun replication kopyalarından biri lider olarak atanır bizde bu lider partitiona yazarız. Bu yazdığımız partition da diğer replication kopyalarına bu bilgiyi gönderip senkronize eder.
Eğer bir nedenden dolayı lider olan partition çökerse kafka hemen yeni bir partition'u lider olarak seçer.

Kafkaya veri yazımı üç safhadan oluşur:

  1. Kafkaya veri göndermek
  2. Verinin lider olan partition'a gönderilip saklanması
  3. Lider olan partition'un bu veriyi diğer kopya olan partition'lara aktarması

Producer Acknowledgement:

Kafkaya veri gönderdiğimizde bu üç safhanın hangilerinin bitmesini veya tastik etmesi gerektiğini belirleyebiliyoruz buna acknowledgement deniliyor.

Acks=0 (en hızlı ve riskli olan mesaj kaybolma şansı yüksek)
Kafkaya gönder ve cevabı beklemeden devam et

Acks=1 (orta derece hızlı ve güvenli, Mesaj kaybolma şansı çok az)
Kafkaya gönder ve sadece leader yazana kadar bekle

Acks= all, -1 (en yavaşı ve en güvenlisi , mesaj kaybolma şansı yok)
Kafkaya gönder, leader yazmasını ve leader'in diğer partition'lara yazmasını bekle

Top comments (0)