Apache Kafka Nedir? Kim Tarafından Geliştirilmiştir ve Amacı Nedir?

Veri işleme ve aktarımı, dijital dünyanın hızla büyüyen karmaşıklığıyla birlikte daha da önemli hale geliyor. Büyük veri, gerçek zamanlı analiz ve olay bazlı mimariler (event-driven architectures) bu süreçlerde öne çıkıyor. İşte bu noktada, büyük miktarda veriyi yüksek hızda işleyip aktarma kapasitesiyle Apache Kafka, veri akış platformlarının başında geliyor. Peki, Apache Kafka nedir, kim tarafından geliştirildi ve hangi amaca hizmet eder? Bu yazıda, bu sorulara ayrıntılı cevaplar vereceğim.

Apache Kafka Nedir?

Apache Kafka, dağıtık bir olay akışı (streaming) platformu olarak bilinir ve büyük veri ile gerçek zamanlı veri işleme ihtiyaçları için tasarlanmıştır. Yüksek hacimli veriyi birçok kaynağa güvenilir ve hızlı bir şekilde ulaştırmayı hedefleyen Kafka, geleneksel mesaj kuyruklarının ötesinde ölçeklenebilirlik ve yüksek performans sunar.

Kafka’nın başlıca kullanım alanları şunlardır:

  • Gerçek Zamanlı Veri Akışı: Web siteleri, IoT cihazları veya uygulamalardan gelen olayların anlık olarak işlenmesi.
  • Log Toplama ve Analizi: Farklı sistemlerden gelen logları merkezi olarak toplayıp analiz etme.
  • Mesajlaşma: Dağıtık sistemler arasındaki mesajlaşmayı yönetme.
  • Veri Entegrasyonu: Veri kaynakları arasında hızlı ve güvenilir veri aktarımı sağlama.

Apache Kafka'yı Kim Geliştirdi?

Apache Kafka, 2010 yılında LinkedIn tarafından geliştirilmiş ve 2011'de açık kaynak kodlu bir proje olarak Apache Software Foundation çatısı altına taşınmıştır. Kafka'nın yaratıcıları arasında Jay Kreps, Neha Narkhede ve Jun Rao bulunur. LinkedIn’in veri akışı işleme ihtiyaçlarını karşılamak için geliştirilen Kafka, kısa sürede büyük veri ekosisteminde geniş bir kullanım alanı bulmuş ve birçok sektörde popüler hale gelmiştir.

Apache Kafka'nın Amacı Nedir?

Kafka'nın temel amacı, büyük veri miktarlarını yüksek performans ve güvenilirlikle işleyip aktarmaktır. Dağıtık sistemler arasında güvenilir veri iletimi sağlayan Kafka, olay bazlı mimariler için güçlü bir altyapı sunar. Bu sayede, sistemler arasında veri aktarımı sırasında veri kaybı riski minimuma indirilir. Kafka’nın ölçeklenebilir mimarisi ve yüksek performansı, birçok sektörde tercih edilmesinin başlıca sebeplerindendir.

Başlıca avantajları şunlardır:

  • Yüksek Performans: Kafka, yüksek veri aktarım hızlarına sahiptir ve büyük veri yığınlarını işleyebilir.
  • Ölçeklenebilirlik: Yatayda kolayca ölçeklenebilir ve büyük sistemlerde pratik bir şekilde kullanılabilir.
  • Dayanıklılık: Veriler disk üzerine yazılarak gerektiğinde tekrar işlenebilir.
  • Esneklik: Farklı veri kaynaklarından gelen veriler aynı anda işlenip farklı sistemlere yönlendirilebilir.

Apache Kafka'nın Temel Bileşenleri

Kafka'nın başlıca bileşenleri şunlardır:

  • Producer (Üretici): Veriyi Kafka'ya gönderen bileşen.
  • Consumer (Tüketici): Kafka'dan veriyi alan ve işleyen bileşen.
  • Broker: Veriyi saklayan ve dağıtımını sağlayan Kafka sunucuları.
  • Topic: Verilerin kategorize edilip saklandığı yapı.
  • Partition: Her bir topic’in daha küçük parçalara ayrılarak paralel işleme imkânı sağlayan bileşeni.

Topic'teki Verilerin Saklanma Süresi

Kafka'da verilerin topic’ler içinde ne kadar süre saklanacağı konfigürasyonlarla belirlenir. Bu süre, “retention” (tutma süresi) olarak adlandırılır ve Kafka’nın en önemli özelliklerinden biridir. Kafka, verileri disk tabanlı bir yapı üzerine kaydeder ve belirlenen retention politikasına göre bu verileri saklar veya siler.

Retention süresi:

  • Varsayılan olarak Kafka, verileri 7 gün boyunca saklar.
  • Bu süre, veri boyutuna (örneğin 1 GB veri) veya zaman dilimine (örneğin 24 saat) göre ayarlanabilir.

Saha Deneyimleri ve Kafka’nın Projelerde Kullanımı

Apache Kafka, dünyanın önde gelen teknoloji devleri tarafından yoğun olarak kullanılmaktadır. Örneğin, Kafka'nın geliştirildiği yer olan LinkedIn, kullanıcı etkileşimlerini, haber akışlarını ve mesajlaşma sistemlerini desteklemek için Kafka’yı kullanır. Her gün milyarlarca mesajı işleyip yüzlerce sisteme ileten LinkedIn, Kafka ile anlık olarak 1 trilyon mesajın üzerinde veri işleyebilmektedir.

Diğer proje örnekleri:

  • LinkedIn: Kullanıcı etkileşimleri, gerçek zamanlı analiz edilip kişiye özel içerik sunuluyor.
  • Netflix: İzleyici verileri ve içerik önerileri Kafka ile işlenerek kişiselleştirilmiş öneriler sunuluyor.
  • Uber: Yolculuk verileri, sürücü ve yolcu lokasyonları gibi bilgiler Kafka aracılığıyla işlenip tahmini süre ve fiyat hesaplamaları yapılıyor.

Kafka'nın Teknik Özellikleri ve Terimleri

  • Throughput: Kafka, saniyede milyonlarca mesajı işleyebilir ve yatayda ölçeklenebilir.
  • Low Latency (Düşük Gecikme): Kafka, verileri düşük gecikme süreleriyle üreticiden tüketiciye aktarır.
  • Durability (Dayanıklılık): Kafka, verileri disk üzerinde saklayarak veri kaybını önler.
  • Partitioning: Topic’ler partition’lara bölünerek paralel işleme olanak sağlar.
  • Replication Factor: Verilerin yedeklenmesi amacıyla her bir partition, birden fazla broker’da kopyalanır.

Sonuç

Apache Kafka, büyük miktarda veriyi gerçek zamanlı olarak işleme ve aktarma konusunda lider bir platformdur. Dağıtık yapısı ve sunduğu yüksek performans sayesinde birçok sektörde vazgeçilmez bir araç haline gelmiştir. Bu yazıda Kafka'nın ne olduğunu, kim tarafından geliştirildiğini, hangi amaçlarla kullanıldığını ve teknik detaylarını inceledik. Kafka’yı projelerinizde kullanarak veri akışlarını kolayca yönetebilir ve sistemleriniz arasında veri aktarımını optimize edebilirsiniz.

Docker Compose ile Apache Kafka, Zookeeper, Redis ve AKHQ Kurulumu