Apache Kafka: Mimari, Kavramlar, Özellikler ve Uygulamalar

Yayınlanan: 2021-03-09

Kafka, LinkedIn sayesinde 2011 yılında piyasaya sürüldü. O zamandan beri, Fortune 500'de listelenen çoğu şirketin şimdi kullandığı noktaya kadar inanılmaz bir büyümeye tanık oldu. Büyük miktarda akış verisini işleyebilen, yüksek düzeyde ölçeklenebilir, dayanıklı ve yüksek verimli bir üründür. Ama bu muazzam popülaritesinin arkasındaki tek sebep bu mu? Hayır. Özelliklerine, ürettiği kaliteye ve kullanıcılara sağladığı kolaylıklara daha başlamadık bile.

Buna daha sonra dalacağız. Önce Kafka'nın ne olduğunu ve nerede kullanıldığını anlayalım.

İçindekiler

Apaçi Kafka nedir?

Apache Kafka, gerçek zamanlı verileri yönetirken yüksek verim ve düşük gecikme süresi sağlamayı amaçlayan açık kaynaklı bir akış işleme yazılımıdır. Java ve Scala'da yazılan Kafka, bellek içi mikro hizmetler aracılığıyla dayanıklılık sağlar ve CEP veya Otomasyon Sistemleri olarak da bilinen Karmaşık Olay Akışı Hizmetlerine tedarik olaylarının sürdürülmesinde bütünleyici bir role sahiptir.

Uber gibi şirketlerin yolcu ve sürücü eşleştirmesini yönetmesini sağlayan olağanüstü çok yönlü, hatasız dağıtılmış bir sistemdir. Aynı zamanda, British Gas'ın akıllı ev ürünleri için LinkedIn'in birden fazla gerçek zamanlı hizmeti izlemesine yardımcı olmanın yanı sıra, gerçek zamanlı veriler ve proaktif bakım sağlar.

Gerçek zamanlı analitik sağlamak için genellikle gerçek zamanlı veri akışı mimarisinde kullanılan Kafka, hızlı, sağlam, ölçeklenebilir ve yayınla-abone ol mesajlaşma sistemidir. Apache Kafka, mükemmel uyumluluğu ve hizmet çağrılarını veya IoT sensör verilerini izlemesine olanak tanıyan esnek mimarisi nedeniyle geleneksel MOM'un yerine kullanılabilir.

Kafka, gerçek zamanlı alım, araştırma, analiz ve akış verilerinin işlenmesi için Apache Flume/Flafka, Apache Spark Streaming, Apache Storm, HBase, Apache Flink ve Apache Spark ile mükemmel bir şekilde çalışır. Kafka aracıları, Hadoop veya Spark'ta düşük gecikmeli takip raporlarını da kolaylaştırır. Kafka'nın ayrıca gerçek zamanlı analiz için etkili bir araç olarak çalışan Kafka Stream adlı bir yan projesi vardır.

Kafka Mimarisi ve Bileşenleri

Kafka, gerçek zamanlı verileri birden çok alıcı sisteme aktarmak için kullanılır. Kafka, gerçek zamanlı veri boru hatlarını ayırmak için merkezi bir katman olarak çalışır. Doğrudan hesaplamalarda fazla kullanım bulmaz. Toplu veri analizi için önemli miktarda veri akışı sağlamak için gerçek zamanlı veya operasyonel veri tabanlı hızlı şerit besleme sistemleriyle en uyumludur.

Storm, Flink, Spark ve CEP çerçeveleri, Kafka'nın gerçek zamanlı analitik gerçekleştirmek, yedeklemeler, denetimler ve daha fazlasını oluşturmak için birlikte çalıştığı birkaç veri sistemidir. Ayrıca veri bilimi kırma, raporlama vb. için büyük veri platformları veya RDBMS ve Cassandra, Spark vb. gibi veritabanı sistemleriyle entegre edilebilir.

Aşağıdaki şema Kafka Ekosistemini göstermektedir:

Kaynak

Kafka mimari diyagramında gösterildiği gibi Kafka ekosisteminin çeşitli bileşenleri şunlardır:

1. Kafka Komisyoncusu

Kafka, her biri "aracı" olarak bilinen birden çok sunucudan oluşan bir kümeyi öykünür. İstemciler ve sunucular arasındaki herhangi bir iletişim, yüksek performanslı bir TCP protokolüne bağlıdır. Ağır yüklemeyi işlemek için birden fazla durum bilgisi olmayan komisyoncu içerir. Tek bir Kafka komisyoncusu, performanstan ödün vermeden her saniye birkaç okuma ve yazma gecikmesini yönetebilir. Kümeleri korumak ve komisyoncu liderini seçmek için ZooKeeper'ı kullanırlar.

2. Kafka Hayvan Bekçisi

Yukarıda belirtildiği gibi, ZooKeeper, Kafka brokerlerini yönetmekten sorumludur. Kafka ekosistemindeki bir komisyoncunun herhangi bir yeni eklemesi veya başarısızlığı, ZooKeeper aracılığıyla bir üretici veya tüketicinin dikkatine sunulur.

3. Kafka Yapımcıları

Aracılara veri göndermekten sorumludurlar. Üreticiler, bir mesajın alındığını onaylamak için aracılara güvenmezler. Bunun yerine, bir aracının ne kadarını işleyebileceğini ve buna göre mesaj gönderebileceğini belirlerler.

4. Kafka Tüketicileri

Bölüm uzaklığı tarafından tüketilen ileti sayısının kaydını tutmak Kafka tüketicilerinin sorumluluğundadır. Bir mesajın onaylanması, mesajların tüketilmeden önce gönderildiğini gösterir. Aracının tüketiciye gönderilmeye hazır bir bayt arabelleğine sahip olduğundan emin olmak için tüketici, eşzamansız bir çekme isteği başlatır. ZooKeeper'ın bir mesajı atlama veya geri sarmanın ofset değerini korumada oynayacağı bir rolü vardır.

Kafka'nın mekanizması, dağıtılmış sistemlerdeki uygulamalar arasında mesaj göndermeyi içerir. Kafka, abone olduğunda çeşitli akış uygulamalarına sunulan verileri yayınlayan bir kesinleştirme günlüğü kullanır. Gönderici Kafka'ya mesaj gönderirken, alıcı Kafka tarafından dağıtılan akıştan mesajlar alır.

Mesajlar konulara göre birleştirilir - Kafka tarafından etkili bir müzakere. Belirli bir konu, belirli bir türe veya sınıflandırmaya dayalı olarak organize edilmiş veri akışını temsil eder. Üretici, tüketicilerin okuması için bir konuya dayalı mesajlar yazar.

Her konuya benzersiz bir ad verilir. Bir gönderici tarafından belirli bir konudan gönderilen herhangi bir mesaj, o konuyu ayarlayan tüm kullanıcılar tarafından alınır. Yayınlandıktan sonra, bir konudaki veriler güncellenemez veya değiştirilemez.

Kafka'nın Özellikleri

  1. Kafka, abone olmanıza ve ardından birden çok sisteme veya gerçek zamanlı uygulamaya veri yayınlamanıza izin veren kalıcı bir taahhüt günlüğünden oluşur.
  2. Uygulamalara bu verileri geldiği gibi kontrol etme yeteneği verir. Apache Kafka'daki Streams API, anında toplu veri işlemeyi kolaylaştıran güçlü, hafif bir kitaplıktır.
  3. İş akışınızı düzenlemenize izin veren ve herhangi bir bakım gereksinimini önemli ölçüde azaltan bir Java uygulamasıdır.
  4. Kafka, birden çok veri sistemi aracılığıyla veri dağıtımını etkinleştirerek verileri birden çok düğüme dağıtan bir "gerçeğin deposu" olarak işlev görür.
  5. Kafka'nın taahhüt günlüğü, onu güvenilir bir depolama sistemi yapar. Kafka, veri kaybını önlemeye yardımcı olan bir bölümün kopyalarını/yedeklerini oluşturur (doğru yapılandırmalar sıfır veri kaybıyla sonuçlanabilir). Bu ayrıca sunucu arızasını önler ve Kafka'nın dayanıklılığını artırır.
  6. Kafka'daki konuların binlerce bölümü vardır, bu da onu rastgele miktarda veriyi ve ağır yüklemeyi işleyebilmesini sağlar.
  7. Kafka, verileri hızlı bir şekilde hareket ettirmek için işletim sistemi çekirdeğine bağlıdır. Bu bilgi kümeleri, uçtan uca şifrelenmiş, üreticiden dosya sistemine ve son tüketiciye kadar.
  8. Kafka'da toplu işlem, veri sıkıştırma verimliliği sağlar ve G/Ç gecikmesini azaltır.

Kafka'nın Uygulamaları

Günlük olarak büyük miktarda veri ile uğraşan birçok şirket Kafka kullanıyor.

  1. LinkedIn, kullanıcı etkinliğini ve performans ölçümlerini izlemek için Kafka'yı kullanır. Twitter, bir akış işleme çerçevesini etkinleştirmek için bunu Storm ile birleştirir.
  2. Square, tüm sistem olaylarının diğer Square veri merkezlerine taşınmasını kolaylaştırmak için Kafka'yı kullanır. Buna günlükler, özel olaylar ve ölçümler dahildir.
  3. Kafka'nın avantajlarından yararlanan diğer popüler şirketler arasında Netflix, Spotify, Uber, Tumblr, CloudFlare ve PayPal bulunmaktadır.

Neden Apache Kafka Öğrenmelisiniz?

Kafka, gerçek zamanlı verileri verimli bir şekilde işleyebilen, takip edebilen ve izleyebilen mükemmel bir olay akış platformudur . Hataya dayanıklı ve ölçeklenebilir mimarisi , düşük gecikmeli veri entegrasyonuna olanak tanır ve bu da yüksek akışlı olaylarla sonuçlanır. Kafka, veriler için "değere dönüşme süresini" önemli ölçüde azaltır.

Verilerin etrafındaki “günlükleri” ortadan kaldırarak kuruluşlara bilgi üreten temel sistem olarak çalışır. Bu, veri bilimcilerinin ve uzmanlarının herhangi bir zamanda bilgiye kolayca erişmesini sağlar.

Bu nedenlerden dolayı, birçok önde gelen şirket için en çok tercih edilen akış platformudur ve bu nedenle Apache Kafka yeterliliğine sahip adaylar çok aranır.

Kafka, Büyük Veri hakkında daha fazla bilgi edinmek istiyorsanız, 7'den fazla vaka çalışması ve proje ve birinci sınıf fakülte ve endüstri uzmanlarından mentorluk sunan Büyük Veride Yazılım Geliştirme Uzmanlığı alanında yüksek Grad'ın PG Diplomasına göz atmalısınız. 13 aylık program 14 programlama dilini kapsar ve diğer becerilerin yanı sıra Veri İşleme, MapReduce, Veri Ambarı, Gerçek Zamanlı İşleme, Bulutta Büyük Veri İşlemeyi öğretir.

upGrad'daki diğer Yazılım Mühendisliği Kurslarımıza göz atın.

Veriye Dayalı Teknolojik Devrime Öncülük Edin

IIIT Bangalore'den Büyük Veride Gelişmiş Sertifika Programı