Apache Kafka Nedir? – Genel Bakış – Bölüm 1
2

Apache Kafka Nedir? – Genel Bakış – Bölüm 1. Kafka’yı kısaca Pub-sub (Publish-subscribe) tabanlı bir dağıtık mesajlaşma sistemi (Distributed Messaging System) olarak tanımlayabiliriz. LinkedIn mühendislerinden Jay Kreps liderliğinde geliştirilen ve 2010 yılında Open Source olarak GitHub’a konulan Kafka, 2011 yılında bir Apache Software Foundation Incubator Project olarak önerildi ve 2012 yılında da Apache Kafka adını aldı.

Neden Kafka diye isimlendirilmiş merak edenler için ilk ağızdan açıklamayı da aşağıda görebilirsiniz.

“I thought that since Kafka was a system optimized for writing using a writer’s name would make sense. I had taken a lot of lit classes in college and liked Franz Kafka. Plus the name sounded cool for an open source project.

So basically there is not much of a relationship.”

    Jay Kreps

Apache Kafka hızlı, genişletilebilir ve güvenilir olması gibi özelliklerle ön plana çıkıyor.

1. Hızlı: Saniyede 2 milyonluk bir yazma performansına sahiptir.

2. Güvenilir: Mesajları disk üzerinde saklar ve Cluster’da Replike ederek veri kaybının önüne geçer.

3. Genişletilebilir: Sistemi durdurmadan genişletilebilme özelliğine sahiptir.

Kullanım senaryoları olarak kullanıcı aktivite takibi, mesajlaşma, Loglama ve Stream Processing örnekleri verebiliriz.

Pub-sub tabanlı bir mesajlaşma sistemi dedik, peki mesajlaşma sistemi ve Pub-sub ne demek kısaca bahsedelim.

Mesajlaşma Sistemi

Mesajlaşma sistemi, verinin bir uygulamadan diğerine aktarılmasını sağlar. Distributed Messaging denilen kavram aslında güvenilir bir kuyruk yapısı (Message Queue) olarak da adlandırılır. Mesajlaşma sistemleri 2 yapıda olabilir:

1. Point-to-Point

Bu yapıda, birden fazla alıcı olabilir ancak bir mesaj sadece bir alıcıya iletilir. Bir benzetme yapmak gerekirse, mesaj bir alıcıya iletilir iletmez silinir.

2. Publisher-Subscriber

Bu yapıda ise mesajlar bir kategori altında toplanırlar. Alıcılar birden fazla kategoriden veri çekebilir. Bu sistemde mesaj gönderen uygulamalara Publisher, alıcı uygulamalara da Subscriber adı verilir.

apache kafka nedir
Resim-1: Publisher-Subscriber kuyruk yapısı

Kafka Mimarisi

Resim-3‘te göreceğiniz Kafka mimarisini, terimlerini özetleyerek kısaca inceleyelim.

Producer

Publisher-Subscriber kelimelerinden Publisher’a karşıklık gelir ve bir ya da birden fazla Topic’e mesaj gönderen birimdir.

Topic

Mesajların saklandığı kategorilere Topic adı verilir. Veritabanındaki tablo olarak da düşünebilirsiniz.

Partition

Topic’ler Partition denilen bölümlere ayırılır. Resim-2‘de göreceğiniz şekilde mesajlar Partition içerisinde Append edilerek yazılır ve baştan sonra doğru okunur.

apache kafka nedir
Resim-2: Topic ve Partition yapısı

Her Partition farklı bir sunucuda olabilir. Böylece bir Topic birden fazla sunucuya yatay olarak ölçeklendirilebilir.

Broker

Tek bir kafka sunucusuna Broker adı verilir. Bir diğer deyişle de Kafka Cluster’daki her bir Node’a Broker adı verilir. Cluster içerisinde yer alan Node’lardan biri “lider” olarak tanımlanır ve ilgili Partition için bütün okuma ve yazma işlerinden sorumludur. Diğer Node’lar ise “takipçi” olarak tanımlanır ve Consumer ile benzer şekilde çalışırlar. Eğer lider Node çalışmazsa takipçi Node’lardan birisi lider Node olarak görev alır.

Consumer

Consumer da Publisher-Subscriber kelimelerinden Subscriber’a karşılık gelir Broker’dan veri okur. Bir yada birden fazla Topic üzerinden veri okuyabilir.

apache kafka nedir
Resim-3: Kafka Mimarisi

ZooKeeper

Herhangi bir Broker eklendiğinde ya da çalışmadığı durumlarda, Broker hakkında Producer ve Consumer’ı bilgilendiren bir servis olarak tanımlayabiliriz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

https://kafka.apache.org/

 

TAGs : Apache Kafka, Apache Kafka nedir, Apache Kafka uygulama yazma, Apache Kafka uygulama gelistirme, Apache Kafka nedir, Apache Kafka tutorial, Apache Kafka spark streaming, Apache Kafka flume, Apache Kafka storm, Apache Kafka ayarlar, Apache Kafka application development, Apache Kafka java

Bu İçeriğe Tepkin Ne Oldu?
  • 8
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 5
    sevdim_
    Sevdim!
  • 3
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 2
    k_zd_m_
    Kızdım!

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi'nde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi'nde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir.

Yazarın Profili
İlginizi Çekebilir
031520_1854_BlazorNedir1.jpg

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Yorumlar (2)

  1. 24/08/2021

    merhaba,
    kafka server mesaj gönderip alıyorum ancak, programı kaptıp açtığımda mesaj gönderdiğimde eski mesajlarda tekrar geliyor, eski mesajları almamak için hangi ayar yapısı ile düzeltebilirim.

    iyi çalışmalar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir