Data Engineer Serüveni 3

Yunus Yarba
İstanbul Data Science Academy
2 min readSep 19, 2020

Selam, bu yazımda Kafka’dan ve daha iyi anlamak için yaptığım ilk ufak projemden bahsedeceğim.

Kafka Nedir?

  • Linkedin tarafından geliştirilmiş open source bir projedir.
  • Scala ve Java ile yazılmıştır.
  • Mesagge Broker Sistemidir. Yani mesajları tutma,dağıtma,kuyruklama ve daha fazlasına sahiptir.
  • Distrubuted bir streaming platformudur.
  • Mesajlar index yapısına göre yazılır ve okunur.
  • Kafka’nın artıları hızlı, yatay ölçeklenebilir,hata tolere edilebilir olduğu için güvenilir, veri kaybı olmadığı için sağlam ve açık kaynaktır.
  • Kafka’yı kullanan büyük firmalar Uber, Netflix, Linkedin, Spotify, Slack…

Kafka Mimarisi

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. Mesajlar Partition içerisinde append edilerek yazılır ve baştan sonra doğru okunur.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 Zookeeper: Distributed uygulamalar geliştirmeye izin veren, distributed bir koordinasyon servisidir diyebiliriz. Bu yüzden Kafka’nın Zookeeper ile beraber çalışmasının zorunluluğu var.

Kısaca Kafka’dan bahsettiğim yazımı Node.js ve Docker kullanarak yaptığım uygulamadan bahsederek sonlandırmak istiyorum.

  • İlk olarak Docker üzerinde Kafka ve Zookeeper’ı ayağı kaldırdım.
  • Node.js ile mimariye uygun olacak şekilde sayfalarımı yazdım.
  • Elimdeki json dosyasında bulunun dataları 2 farklı type (system, application) göre consumer da ayrı ayrı okuma sağladım.
Bir tane Consumer.js detaylı incelediğimizde de type:”application” göre
Partition 1 için dosyanın sonuna kadar okuma gerçekleştirildi.

Yazımı okuduğunuz için teşekkür ederim. Sonraki yazılarda da görüşmek üzere…

--

--