Ana içeriğe geç
Version: 1.0.1

What is Kafka?

kafkanig

Apache Kafka, yüksek performanslı data pipeline'ları, streaming analitiği, veri entegrasyonu ve kritik uygulamalar için binlerce şirket tarafından kullanılan açık kaynaklı bir dağıtık event streaming platformudur.

  • Message broker
  • Indeks tabanlı mesaj okuma/yazma, bu nedenle Kafka hızlıdır
  • Scala ve Java ile yazılmıştır
  • Adını Franz Kafka'dan almıştır
  • LinkedIn tarafından finanse edilmiştir
  • Jay Kreps liderliğinde geliştirilmiştir

Özellikler

  • Hızlı ( high throughput and low latency )
  • Ölçeklenebilir ( Horizontally scalable with node and partitions )
  • Güvenilir ( Fault tolerant and distrubuted )
  • Dayanıklı ( Zero data loss, messages persisted to disk with immutable log )

Kullanım Alanları

  • Application analytics
  • Monitoring/Metrics
  • Log collecting
  • Stream processing
  • Recommendation engine
  • Fraud and anomaly detection
  • Integrate systems

Kafka Kullanan Şirketler

  • Uber
  • Netflix
  • Spotify
  • Activision
  • Slack
  • Pinterest
  • Linkedin
  • Shopify

Kavramlar

  • Producer
    • Producer acknowledgment
      • acks = 0, En hızlı ancak en riskli, veri kaybı olasılığı yüksek. Kafka'ya mesaj gönder, ancak yanıt beklemeyi bırak ve devam et.
      • acks = 1, Orta düzeyde hızlı ve güvenli, veri kaybı olasılığı az. Kafka'ya mesaj gönder ve lider mesajı alana kadar bekle, takipçiler mesajı alana kadar bekleme.
      • acks = all or -1, Daha yavaş ancak en güvenli, veri kaybı olasılığı yok. Mesaj gönder ve lider ile takipçiler mesajları alana kadar bekle
  • Consumer ( Assign 1 consumer to 1 partition ⇒ best practice )
    • Read Stratejileri
      • At Most Once
      • At Least Once ( en çok kullanılan )
      • Exactly Once ( transactional, performance impact )
  • Partition ( event/message/record holder )
  • Record/Event/Message ( each item in partition )
  • Offset ( message position/index in partition )
  • Topic ( partition holder )
  • Kafka Broker ( topics holder )
  • Consumer Group ( partition'lar için paralel işleme izin verir, pub-sub pattern gibi)
  • Distrubuted Systems
    • Leader ( Master )
    • Follower ( Slave )
    • Topic Based Scaling
    • Partition Based Scaling
  • Kafka Connect
  • Kafka Streams

İlgili Teknolojiler

  • Apache ZooKeeper ( Distribution management, Gossip Protocol ⇒ Who is leader? Who is slave? Ok you are leader, take this message )
  • Confluent Cloud
  • Apache Flink ( Stateful Computations over Data Streams **)**
  • Apache Hadoop

Diğer Mesajlaşma Sistemlerinden Temel Farklar

  • Kafka, bir mesaj tüketildikten sonra bir mesajı saklar. Tam tersine, rakip RabbitMQ mesajları hemen tüketildikten sonra siler.
  • RabbitMQ, mesajları consumer'lara push'lar fakat Kafka, mesajları consumer'lardan pull eder.
  • Kafka kolayca yatay olarak ölçeklenebilirken geleneksel mesaj kuyrukları dikey olarak ölçeklenebilir.