Tüm yazılar
Matematik18 Aralık 2024

Apache Kafka: Modern Uygulamaların "Olay Akışı" Omurgası

LinkedIn'de doğdu, dünyaya yayıldı. Bugün finans, e-ticaret, IoT — her büyük şirketin gerçek-zamanlı veri akışı Kafka üzerinden.

Matematik Karavanı 6 dk okuma 5 soru
Su akışı — Kafka stream metaforu

"Veriyi anlık akıt"

Klasik veritabanı: durağan durum. "Şu an müşterinin bakiyesi ne?"

Modern uygulama: akış. "Müşteri her saniye ne yapıyor? Hangi olaylar geliyor?"

Bu fark için: streaming. Apache Kafka modern standartı.

Sorun

LinkedIn 2010'larda milyarlarca olay:

  • Kullanıcı tıklamaları.
  • Profil güncellemeleri.
  • Mesajlar.
  • Reklam görüntülemeleri.

Tüm bu olaylar farklı sistemlere ulaşmalı:

  • Veri ambarı.
  • Öneri sistemi.
  • Spam tespiti.
  • Görüntüleme analitiği.

Her sistem kendi entegrasyonu yazıyordu → N×M karmaşıklığı.

Çözüm: Olay log'u

Tek bir merkezi log. Tüm üreticiler buraya yaz. Tüm tüketiciler buradan oku.

[Servisler] --> [Kafka log] --> [Tüketici sistemler]

N+M karmaşıklığı → çok daha temiz.

Mimari

Producer

Veri üretir, Kafka topic'ine yazar.

Topic

Mantıksal kategori. Örnek: "tıklamalar", "ödemeler".

Partition

Topic paralel bölümlere ayrılır. Her partition sıralı.

Broker

Kafka sunucusu. Bir cluster'da 3-100+ broker.

Consumer

Topic'ten okur, işler.

Consumer Group

Birden fazla consumer paralel çalışır. Her partition bir consumer'a.

Özellikleri

  • Kalıcı: log diske yazılır, replikasyon var.
  • Sıralı: partition içinde tam sıralı.
  • Yüksek throughput: milyon+ mesaj/saniye.
  • Düşük gecikme: ms seviyesi.
  • Replay: geçmişe gidip tekrar oku.

RDBMS, mesaj kuyruğu farkı

RDBMSMesaj kuyruğu (RabbitMQ)Kafka
Veri tipiMevcut durumGeçici mesajSıralı log
SaklamaSınırsızTüketim sonrası silKonfigüre edilebilir (gün/ay)
ReplaySQLYokDoğal
ThroughputOrtaOrtaÇok yüksek
GarantiACIDAt-least-onceAt-least-once / exactly-once

Kafka Streams

Kafka işleme: SQL benzeri stream transformation.

builder.stream("tiklamalar")
       .filter((k, v) -> v.user.isVip)
       .groupByKey()
       .count()
       .to("vip-tiklama-sayisi");

Anlık analitik.

Kafka Connect

Hazır entegrasyonlar:

  • MySQL → Kafka (CDC).
  • Kafka → S3.
  • Kafka → Elasticsearch.

Connector ekosistemi: 100+ bağlantı.

Confluent

Kafka mucitleri (Jay Kreps, Neha Narkhede, Jun Rao) 2014'te Confluent şirketini kurdu.

  • Confluent Cloud: managed Kafka.
  • Confluent Platform: enterprise özellikler.
  • NASDAQ'da işlem görüyor (2021).

Modern alternatifler

  • Apache Pulsar: Yahoo, multi-tenant.
  • AWS Kinesis: yönetilen.
  • Google Pub/Sub: yönetilen.
  • NATS: hafif, modern.
  • Redpanda: Kafka uyumlu, C++ ile yazılmış, daha hızlı.

Event-driven mimari

Kafka olay tabanlı mikroservislerin omurgası:

  1. Her servis kendi durum'unu yönetir.
  2. Önemli olayları Kafka'ya yayar (publish).
  3. Diğer servisler ilgilendiği olayları dinler (subscribe).
  4. Loose coupling, scalability.

CQRS ve Event Sourcing

İleri seviye desenler:

  • CQRS: Command Query Responsibility Segregation — yazma ve okuma ayrı.
  • Event Sourcing: durum saklamak yerine olayları sakla, durum türetilir.

Her ikisi de Kafka'ya doğal uyar.

Modern AI'da Kafka

  • ML training: Kafka'dan akış halinde veri tüketimi.
  • Online learning: model gerçek zamanlı güncellenir.
  • Feature pipeline: Feast + Kafka.
  • LLM monitoring: çıktıların akış halinde log'lanması.

Türk endüstri örnekleri

  • Trendyol: sipariş olayları Kafka üzerinden.
  • Garanti BBVA: işlem akışı Kafka.
  • Türkcell: çağrı kayıtları, baz istasyonu logları.
  • TÜBİTAK: araştırma veri pipeline'ı.

Zorluklar

  • Karmaşıklık: ZooKeeper, broker yönetimi.
  • Performans tuning: partition sayısı, retention.
  • Schema yönetimi: Avro + Schema Registry.
  • Exactly-once: ileri seviye konfigürasyon.

Felsefe

Kafka temel mesajı: "Veri bir akış, değişen durum sadece akışın özeti".

Bu Heraclitus felsefesi: "Aynı nehre iki kez girilmez".

Kapanış

Apache Kafka, modern dağıtık sistemlerin sinir sistemi. Olay tabanlı düşünce + paralel ölçeklenme + kalıcı log = modern bulut yapısının taşı.

Bir mühendisin olgunluk işareti: veritabanı değil olay düşünmek.

Etiketler

Apache Kafkastreamingevent-drivenLinkedInpub-sub

Kendinizi Test Edin

Cevaplarınız profilinizde istatistik olarak saklanır.

1. Kafka kim çıkardı?

2. Temel veri modeli?

3. Klasik mesaj kuyruğu farkı?

4. Confluent ne?

5. Modern alternatif?