← Back to list

Apache Kafka Nedir?

Apache Kafka, yüksek verimliliğe sahip, dağıtık mimaride çalışan ve gerçek zamanlı veri akışlarını (near/real-time event streaming) işlemek…

Murat Gülcü · 2026-02-06 11:52 · 1 claps · 3.5 min read
#apache-kafka #apache-kafka-tutorial #apache-kafka-streams #apache-kafka-installation #apache-kafka-example
Open on Medium ↗
Wiki topics: 🔧 · Data Engineering 🎬 · Film & Television

Apache Kafka Nedir?

Apache Kafka, yüksek verimliliğe sahip, dağıtık mimaride çalışan ve gerçek zamanlı veri akışlarını (near/real-time event streaming) işlemek üzere tasarlanmış bir platformdur.

Kafka, producer (üretici) ve consumer (tüketici) sistemler mikroservisler arasında kalıcı (persistent) ve sıralı (ordered) veri akışı sağlayan bir aracı katman olarak konumlandırılır.

Bu sayede yüksek hacimli veri akışlarını düşük gecikme süresiyle, hata toleranslı (fault-tolerant) ve ölçeklenebilir (horizontally scalable) bir şekilde işlenmesini sağlar.

Kafka Cluster: Bir veya birden fazla Kafka Broker’ın bir araya gelmesiyle oluşan yapıdır.

Producer: Apache Kafka’ya veri (event/mesaj) gönderen bileşendir. Kafka’daki bir topic’e mesajları publish (yayınlar).

Consumer: Apache Kafka’daki topic’lerden verileri okuyan (tüketen) bileşendir. Veriyi işler, saklar veya başka sistemlere iletir.

Kafka mimarisinde Producer ve Consumer hiçbir zaman birbirleriyle doğrudan iletişim kurmazlar; aralarındaki tüm veri alışverişi Kafka üzerinden gerçekleşir.

📨 Kafka Message ve Event Nedir?

Apache Kafka’da event, sistemde gerçekleşen bir durumun veya eylemin kaydıdır.

Bir başka deyişle, sistemde “bir şeyin olduğunu” anlatan veri parçasıdır.

Kafka event’leri, byte array formatına serileştirilebilen herhangi bir veri türünü temsil edebilir; Java wrapper sınıfları (Integer, Double, Long vb.), String ve JSON, XML, Protobuf, Avro gibi yapılandırılmış veri formatları örnek olarak verilebilir.

📌 İsimlendirme standardı:

Eventlere baktığımızda ne olduğunu tek başına anlatabilmesi gerekir. Doğru isimlendirme, sistemin okunabilirliği ve sürdürülebilirliği açısından kritik bir rol oynar.

Kafka’daki event’ler genellikle şu şekilde adlandırılır: <Noun><PerformedAction>Event

Örneğin:

  • Bir kullanıcı oturum açtığında → UserLoggedInEvent
  • Yeni bir ürün oluşturulduğunda → ProductCreatedEvent
  • Ürün sevk edildiğinde → ProductShippedEvent
  • Ürün silindiğinde → ProductDeletedEvent

💬 Kafka Message Yapısı

Kafka Message’ı bir zarf olarak düşünürsek event bu zarfın içeriğidir. (Byte array’e çevirilebilen herhangi bir veri tipi olabilir.)

Kafka Message, sadece event içermez aynı zamanda bu veriyi tanımlayan birkaç ek bileşenden oluşur:

Key: Mesajın hangi partition’a gideceğini belirlemede kullanılır; örneğin aynı kullanıcıya ait mesajlar aynı key ile gönderilerek aynı partition’a düşmeleri sağlanabilir. (Buna partition konusunda değineceğiz)

Timestamp: Mesajın oluşturulma veya Kafka’ya yazılma zamanını gösterir. Kafka bunu otomatik ayarlayabilir, ancak istenirse manuel olarak da belirlenebilir.

Headers: Mesajla birlikte taşınan ek meta verilerdir. (İleride consumer’ı idempotent yapmak için headers içerisinde uniq bir id taşıyacağız.)

🗂️ Topic Nedir?

Topic, Kafka’da verilerin mantıksal olarak gruplandığı ve depolandığı temel birimdir.

  • Producer’lar veriyi topic’lere yazar.
  • Consumer’lar veriyi topic’lerden okur.

Yani Kafka istemcileri (producer ve consumer), mesaj üretmek veya tüketmek için topic isimlerini bilmek zorundadır.

Bir veya birden fazla partition’dan oluşur.

⚙️ Partition Nedir?

Partition, topiclerin fiziksel olarak bölünmüş halidir.

Her partition, topic içindeki mesajların saklandığı ve sıralandığı yerdir.

  • Partition’lar birbirinden bağımsızdır, indexli yapılar şeklinde tutulur.
  • Her mesajın, partition içinde kendine ait bir sıra numarası vardır. Bu numaraya offset denir.
  • Mesajlar aynı partition’a sıralı olarak eklenir ve eklendikten sonra değiştirilemez (immutable).
  • Yani Kafka’daki mesajlar silinemez veya güncellenemez; yalnızca okunur. (append-only)

Ancak farklı partition’lar arasında sıralama garantisi yoktur.

Mesaj sırası yalnızca aynı partition içinde korunur.

⚡ Partition’ların Avantajları

Paralellik sağlar:

Partition yapısı, mesajların farklı consumer’lar arasında paylaştırılmasına olanak tanır.

Consumer Group içindeki her consumer farklı bir partition’ı tüketerek mesajları paralel şekilde işler.

Böylece sistem yatay olarak ölçeklenebilir hale gelir.

Veri yönlendirme (key-based partitioning):

Partitioning sayesinde, benzer özellikteki veriler belirli bir partition’a yönlendirilebilir.

Aynı key’e sahip mesajlar aynı partition’a düşer; örneğin, aynı kullanıcıya ait tüm mesajlar aynı partition’a gönderilebilir ve böylece sıralı işleme garanti edilir.

Veri adresleme (offset):

Her mesaj, bulunduğu partition içinde benzersiz bir offset değeri alır. Consumer’lar bu offset’i takip ederek veriyi kaldıkları yerden okumaya devam edebilir.

🧾 Mesaj Saklama (Retention)

Kafka’da bir mesaj consumer tarafından okunsa bile silinmez.

Mesaj, tanımlanan saklama süresi (retention) boyunca Kafka’da kalmaya devam eder.

Tüm kayıtlar, Kafka’nın kurulu olduğu sistemdeki disk tabanlı log dosyalarında tutulur.

Saklama süresi iki şekilde yapılandırılabilir:

  • Zamana göre: Örneğin, verileri 7 gün boyunca sakla.
  • Boyuta göre: Örneğin, topic boyutu 100 GB’a ulaşana kadar sakla.

Eğer bu sınır aşılırsa, Kafka eskiden başlayarak verileri otomatik olarak siler.

Bu yapı, sistemin depolama kapasitesini verimli kullanmasını sağlar.

Eventlerin Sıralanması

Birden fazla partition bulunduğunda ve mesaj gönderilirken key belirtilmediğinde, Kafka varsayılan partitioner mekanizması ile mesajları farklı partition’lara dağıtır. Bu durumda mesajların yazılma sırasına göre okunma garantisi yoktur. Sıralama garantisi yalnızca aynı partition bazındadır.

Kafka’da bir mesaja key tanımlandığında, aynı key’e sahip mesajlar aynı partition’a yönlendirilir ve bu sayede partition bazında sıralama garantisi sağlanır.


메타데이터
post_id
fbe94c61d65b
slug
learning-apache-kafka-step-by-step-fbe94c61d65b
url
https://medium.com/@mmuratgulcu/learning-apache-kafka-step-by-step-fbe94c61d65b
canonical_url
https://medium.com/@mmuratgulcu/learning-apache-kafka-step-by-step-fbe94c61d65b
author_url
https://medium.com/@mmuratgulcu
status
ok
fetched_at
2026-06-09 15:37:30