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.
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ı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
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