1. Ana Sayfa
  2. ASP.Net
  3. Apache Kafka Nedir? – Genel Bakış – Bölüm 1

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

? – 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 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ı olabilmesine rağmen, bir mesaj sadece bir alıcıya iletilir. Mesaj bir alıcıya iletildikten sonra siliniyor şeklinde bir benzetme yapabiliriz.

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.


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.


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.


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ı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

https://kafka.apache.org/

 

TAGs : Apache Kafka, Apache Kafka nedir, , , Apache Kafka nedir, , , , , , ,

Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümü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. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap

Yorumlar (1)