Çok geç tanıştığım platform: Apache Kafka

Paylaş
Bu yazıda çok geç tanıştığım bir platformdan bahsedeceğim. Tabi veri ile ilgili böyle bir konuya ihtiyaç duymadığınız zaman neden tanışasınız ki, değil mi? Durup dururken öğrenmek için biraz piskopat olmak lazım. Aslında bütün sistemlerle ihtiyaçlar doğrultusunda tanışıyoruz. Daha doğrusu bir platforma ihtiyaç duyuyoruz ve ve araştırmaya başlıyoruz. Daha sonra bu sistemi ya da platformu öğrenme sürecimiz başlıyor. Apache Kafka benim en fazla işime yarayan platformlardan biri olduğu için bu yazıyı hazırlamak istedim.
Örneğin 20 farklı kaynağımız ve 9 farklı hedefimiz olduğunu düşünürsek, her kaynak için bir “topic” oluşturabilir ve bu topic’leri hedeflerimize gönderebiliriz. Bu sayede her kaynaktan gelen veriler, ilgili hedefe gönderilebilir. Örneğin, kaynak 1 için “source1” topic’i oluşturabilir ve bu topic’i hedef 1 için “target1” topic’ine gönderebiliriz. Bu şekilde 40 farklı veri entegrasyonu gerçekleştirebiliriz. Mükemmel değil mi?
Peki, Apache Kafka nedir?
Apache Kafka, gerçek zamanlı veri akışı işleme ve toplama için tasarlanmış bir açık kaynak mesaj kuyruğudur. Kafka, veri kaynaklarından verileri okur ve bunları dağıtılmış bir şekilde saklar, böylece istemciler verileri okuyabilir ve işleyebilir. Kafka, yüksek verimlilik, büyük veri kapasitesi ve yüksek ölçeklenebilirlik gibi özelliklere sahiptir.
Apache Kafka genellikle gerçek zamanlı veri akışı işleme, veri depolama ve veri yolları için kullanılır.
Gerçek zamanlı veri işleme: Kafka, gerçek zamanlı veri işleme uygulamalarının içine kolayca entegre edilebilir ve veri akışının gerçek zamanlı olarak işlenmesini sağlar.
Veri depolama: Kafka, verileri dağıtılmış bir şekilde saklar ve bunları kullanıcılar için erişilebilir hale getirir.
Veri yolları: Kafka, veri akışının birçok kaynaktan birçok hedefe doğru yönlendirilmesini ve yönetilmesini sağlar.
Anlık veri analitik: Kafka ile veriler gerçek zamanlı olarak toplanır, depolanır ve işlenir, bu sayede anlık veri analitik uygulamaları gerçekleştirilir.
IoT: Kafka, IoT cihazları tarafından oluşan verileri toplamak ve gerçek zamanlı olarak işlemek için kullanılabilir.
Metrik ve log toplama: Sistemlerde oluşan metrik ve log verileri gerçek zamanlı olarak toplamak ve işlemek için Kafka kullanılabilir.

Çalışma Prensibi / İletişim Modeli
Apache Kafka, “publish-subscribe” (yayın-abone) iletişim modeliyle çalışır.
“Publish-subscribe” modelinde, veriler bir veya daha fazla kaynaktan (publisher) yayınlanır ve bu veriler bir veya daha fazla hedefe (subscriber) abone olarak iletilir. Bu sayede veriler birçok farklı hedefe aynı anda iletilebilir ve bu da veri yollarının yönetimini kolaylaştırır.
Kafka’da, veriler “producer” tarafından konulara yayınlanır ve “consumer” tarafından okunur. Producer ve consumer arasındaki iletişim, publish-subscribe modelinde olduğu gibi gerçekleşir. Producer verileri konulara yayınlar ve consumer konulardaki verileri okur.
Bu iletişim modeli, Kafka’nın gerçek zamanlı veri işleme ve dağıtılmış veri saklama işlemlerini gerçekleştirirken önemli avantajlar sağlar. Örneğin, veriler gerçek zamanlı olarak toplanır ve işlenir, bu sayede anlık veri analitik uygulamaları gerçekleştirilir ve veri yolları kolayca yönetilir.
Producer
Apache Kafka’da bir “producer” (üretici), bir konuya (topic) veri gönderir. Producer, verileri konuya gönderirken kullandığı API aracılığıyla belirli bir sıra ile gönderir veya göndermez.
Konuya veri göndermeden önce, producer bir “broker” adresi ve konu adı belirler. Broker, verilerin konuya gönderileceği konuma işaret eder ve konu adı ise verilerin hangi konuda toplanacağını belirler.
Veriler gönderildiğinde, producer bunları bir “partition”a yazdırır. Partition, konuda saklanan verilerin fiziksel olarak saklandığı yerdir. Veriler, partitionlar arasında dağıtılır ve bu da konunun yüksek ölçeklenebilirliğini sağlar.
Producer ayrıca verileri gönderirken “key” ve “value” olarak iki farklı veri türü kullanabilir. Key, verilerin partitiona nasıl dağıtılacağını belirlerken, value ise gerçek veridir. Bu sayede producer verilerin ne şekilde işlenmesi gerektiği konusunda bilgi sağlar.
Son olarak producer, konuda saklanan verilerin kopyalarının kaç adet olması gerektiğini belirleyebilir. Bu sayede verilerin güvenliği sağlanır ve veri kaybı riski azaltılır.
Consumer
Apache Kafka’da bir “consumer” (tüketici), bir konudan verileri okur. Consumer, bir konuya bağlı olarak verileri okur ve konudaki verileri işler.
Consumer, verileri okumak için bir “consumer group” oluşturur. Consumer group, verileri okuyan tüm consumerların bir arada toplandığı bir grupdur. Bu sayede veriler, consumerlar arasında dağıtılır ve bu da yüksek ölçeklenebilirliği sağlar.
Consumer, verileri okumak için bir “offset” belirler. Offset, konudaki verilerin okunmaya başlanacağı noktayı belirtir. Consumer, verileri okurken offset’i güncelleyerek konudaki verileri okuma işlemini sürdürür.
Consumer ayrıca, verileri okurken belirli bir sıraya göre okuyabilir veya okumayabilir. Bu sayede consumer verileri işleme işlemlerinde daha esnek olur. Consumer, verileri okuduğu konudaki verilerin kopyalarının kaç adet olması gerektiğini belirleyebilir. Bu sayede verilerin güvenliği sağlanır ve veri kaybı riski azaltılır.
Consumer, verileri okuduktan sonra bunları işler veya depolar. Bu işlemler gerçek zamanlı olarak yapılabilir veya verilerin daha sonra işlenmesi için bir veri havuzuna gönderilebilir.

Topic
Topic, Kafka’ta verilerin sınıflandırıldığı veya kategorize edildiği bir kavramdır. Topic’ler, verileri belli konulara veya kategorilere göre organize etmenizi sağlar. Örneğin, bir e-ticaret uygulamasında siparişler, ürünler, müşteriler gibi farklı konular için farklı topic’ler oluşturulabilir.
Bir topic’e veri göndermek veya topic’den veri almak için bir producer veya consumer kullanılır. Producer, bir topic’e veri gönderirken, consumer ise topic’den veri alır. Topic’ler, verilerin gerçek zamanlı olarak işlenmesini ve dağıtılmasını sağlar.
Broker
Broker, Kafka sisteminde veri akışını yöneten ve saklayan bir elemandır. Broker, verileri topic’lere göre sınıflandırır ve kullanıcıların (producer ve consumer) erişimine açar.
Bir Kafka sistemi birden fazla broker içerebilir, ve bu broker’lar arasında veri replikasyonu gerçekleştirilir. Bu sayede, veri kaybını önlemek ve sistemin çalışabilirliğini arttırmak amaçlanır.
Her broker ayrıca belli bir veri setini saklar, veriler sisteme girdiğinde veri seti arasında dağıtılır. Broker’ların veri setleri arasındaki eşitliği sağlamak için Kafka sistemi kullandığı yönetim mekanizmaları vardır.
Partition
Partition, Kafka’da verilerin saklandığı ve işlendiği bir kavramdır. Topic’ler verileri sınıflandırırken, partition’lar verilerin fiziksel olarak saklandığı ve işlendiği yerdir.
Her topic birden fazla partition içerebilir, bu sayede verilerin işlenmesi ve saklanması paralelleştirilir. Bu, sistemin işlem gücünü arttırır ve veri akışını hızlandırır. Aynı zamanda, her partition için bir offset değeri saklanır, bu sayede verilerin nereden başladığı veya nerede kaldığı takip edilebilir.
Partition’lar ayrıca verilerin yedeklenmesi ve replike edilmesi için kullanılır. Bu sayede sistemin çalışabilirliği arttırılır ve veri kaybı önlenir.
Apache Kafka’nın kullanım alanları…
Finansal sektör: Kafka, gerçek zamanlı işlemler ve veri yolları için kullanılmaktadır. Örneğin, bir banka işlem verilerini gerçek zamanlı olarak işlemek ve raporlamak için Kafka kullanabilir.
E-Ticaret: Kafka, gerçek zamanlı olarak sipariş verilerini toplamak ve işlemek için kullanılmaktadır. Örneğin, bir e-ticaret sitesi ziyaretçi verilerini gerçek zamanlı olarak analiz etmek için Kafka kullanabilir.
Medya ve eğlence: Kafka, gerçek zamanlı olarak video ve ses verilerini toplamak ve işlemek için kullanılmaktadır. Örneğin, bir televizyon yayıncısı canlı yayın verilerini gerçek zamanlı olarak analiz etmek için Kafka kullanabilir.
IoT: Kafka, gerçek zamanlı olarak IoT cihazlarından gelen verileri toplamak ve işlemek için kullanılmaktadır. Örneğin, bir şirket IoT cihazlarından gelen verileri gerçek zamanlı olarak analiz etmek için Kafka kullanabilir.
Telekomünikasyon: Kafka, gerçek zamanlı olarak telefon hattı verilerini toplamak ve işlemek için kullanılmaktadır. Örneğin, bir telekomünikasyon şirketi aramalar ve SMS verilerini gerçek zamanlı olarak analiz etmek için Kafka kullanabilir.
Bilgi teknolojileri: Kafka, gerçek zamanlı olarak sistem ve uygulama verilerini toplamak ve işlemek için kullanılmaktadır. Örneğin, bir şirket sistem ve uygulama verilerini gerçek zamanlı olarak analiz etmek için Kafka kullanabilir.
Peki, benzer platformlar hangileri?
Apache Kafka benzeri platformlar arasında RabbitMQ, ActiveMQ, ZeroMQ, Amazon Kinesis, Google Cloud Pub/Sub, Apache Pulsar gibi çözümler bulunmaktadır. Bunların hepsi de gerçek zamanlı veri akışı ve mesajlaşma işlemleri için kullanılabilir. Ancak, özellikleri ve kullanım amaçları farklılık gösterebilir, bu nedenle hangi platformun en uygun olduğu, ihtiyacınız doğrultusunda değerlendirmeniz gerekir.
[…] sonra da kendi kendime “Keşke daha önce keşfetseydim!” diye hayıflanırım. Apache Kafka‘da böyle oldu mesela, ya da RabbitMQ‘da veya […]