Kafka nedir?

Apache Kafka, akış verilerini gerçek zamanlı olarak alıp işlemek için optimize edilmiş bir dağıtılmış veri deposudur. Akış verileri, genelde veri kayıtlarını aynı anda gönderen binlerce veri kaynağı tarafından sürekli olarak oluşturulan verilerdir. Bir akış platformunun bu sürekli veri akışıyla ilgilenip verileri sıralı ve kademeli olarak işlemesi gerekmektedir.

Kafka, kullanıcılarına üç ana işlev sağlar:

  • Kayıt akışlarını yayınlamak ve bunlara abone olmak
  • Kayıtların oluşturulduğu sırayla kayıt akışlarını etkin bir şekilde depolamak
  • Kayıt akışlarını gerçek zamanlı olarak işlemek

Kafka öncelikle gerçek zamanlı akış verisi işlem hatları ve veri akışlarına uyum sağlayan uygulamalar oluşturmak için kullanılır. Hem geçmiş hem de gerçek zamanlı verilerin depolanmasına ve analiz edilmesine izin vermek için mesajlaşma, depolama ve akış işlemeyi birleştirir. 

Kafka ne için kullanılır?

Kafka, gerçek zamanlı akış verisi işlem hatları ve gerçek zamanlı akış uygulamaları oluşturmak için kullanılır. Veri işlem hattı, verileri güvenilir bir şekilde işleyip bir sistemden diğerine taşırken akış uygulaması, veri akışlarını tüketen bir uygulamadır. Örneğin kullanıcıların web sitenizi gerçek zamanlı olarak nasıl kullandığını izlemek üzere kullanıcı etkinliği verilerini alan bir veri işlem hattı oluşturmak istiyorsanız Kafka, veri işlem hattına güç veren uygulamalar için okuma olanağı sunarken akış verilerini almak ve depolamak amacıyla kullanılır. Kafka ayrıca genellikle iki uygulama arasındaki iletişimi işleyen ve buna aracılık eden bir platform olan bir mesaj aracısı çözümü olarak kullanılır.

Kafka nasıl çalışır?

Kafka, tüketicilere ikisinin de temel faydalarını sağlamak için, sıraya alma ve yayınlama-abonelik olmak üzere iki mesajlaşma modelini birleştirir. Sıraya alma, veri işlemenin birçok tüketici bulut sunucusuna dağıtılmasını sağlayarak onu yüksek oranda ölçeklenebilir hale getirir. Ancak, geleneksel sıralar çok aboneli değildir. Yayınlama-abonelik yaklaşımı ise çok abonelidir ancak her mesaj her aboneye gittiğinden, işi birden fazla çalışan süreci arasında dağıtmak için kullanılamaz. Kafka, bu iki çözümü birbirine bağlamak için bölümlenmiş bir günlük modeli kullanır. Günlük, sıralı bir kayıt dizisidir ve bu günlükler farklı abonelere karşılık gelen bölümlere ayrılır. Bu da aynı konuda birden fazla abonenin olabileceği ve her birine daha yüksek ölçeklenebilirlik sağlamak için bir bölüm atandığı anlamına gelir. Son olarak, Kafka'nın modeli, veri akışlarından okuma yapan birden fazla bağımsız uygulamanın kendi hızlarında bağımsız şekilde çalışmasına izin vermek üzere yeniden oynatılabilirlik özelliği sağlar.

Sıraya alma

Yayınla-Abonelik

Kafka'nın yaklaşımının faydaları nelerdir?

Ölçeklenebilir

Kafka'nın bölümlenmiş günlük modeli, verilerin birden fazla sunucuya dağıtılmasına izin vererek tek bir sunucuya sığacak olanın ötesinde ölçeklenebilir hale getirir. 

Hızlı

Kafka, veri akışlarını ayırır; böylece gecikme süresi çok düşük olur ve bu da onu son derece hızlı hale getirir. 

Dayanıklı

Bölümler birçok sunucuda dağıtılır ve çoğaltılır ve verilerin tümü diske yazılır. Bu da sunucu arızasına karşı korumaya yardımcı olur ve verileri hataya çok dayanıklı ve sağlam hale getirir. 

Kafka'nın mimarisi farklı modelleri nasıl entegre ediyor?

Kafka, farklı konulara kayıtlar yayınlayarak iki farklı modeli düzeltir. Her konu, tüm kayıtları sırayla takip eden ve yenilerini gerçek zamanlı olarak ekleyen, yapılandırılmış bir işleme günlüğü olan bölümlenmiş bir günlüğe sahiptir. Bu bölümler birden çok sunucuda dağıtılır ve çoğaltılır, böylece yüksek ölçeklenebilirlik, hata toleransı ve paralellik sağlanır. Her tüketiciye konuyla ilgili bir bölüm atanır; bu da verilerin sırasını korurken birden çok aboneye izin verir. Bu mesajlaşma modellerini birleştiren Kafka her ikisinin de avantajlarını sunar. Kafka ayrıca tüm verileri diske yazıp çoğaltarak çok ölçeklenebilir ve hataya dayanıklı bir depolama sistemi görevi görür. Varsayılan olarak Kafka, alanı bitene kadar diskte depolanan verileri tutar ancak kullanıcı bir saklama sınırı da belirleyebilir. Kafka'nın dört API'si vardır:

  • Üretici API'si: bir Kafka konusuna kayıt akışı yayınlamak için kullanılır.
  • Tüketici API'si: konulara abone olmak ve kayıt akışlarını işlemek için kullanılır.
  • Akışlar API'si: Uygulamaların, konulardan bir girdi akışı alan ve bunu farklı çıktı konularına giden bir çıktı akışına dönüştüren akış işlemcileri gibi davranmasını sağlar.
  • Bağlayıcı API'si: Kullanıcıların mevcut Kafka konularına başka bir uygulama veya veri sisteminin eklenmesini sorunsuz bir şekilde otomatikleştirmelerine olanak tanır.

Apache Kafka ve RabbitMQ arasındaki farklar nelerdir?

RabbitMQ, mesajlaşma sırası yaklaşımını kullanan açık kaynaklı bir mesaj aracısıdır. Sıralar, bir düğüm kümesine yayılarak isteğe bağlı olarak çoğaltılır ve her mesaj yalnızca tek bir tüketiciye iletilir.

Özellikler

Apache Kafka

RabbitMQ

Mimari

Kafka, mesajlaşma sırası ile yayınlama abone yaklaşımlarını birleştiren, bölümlenmiş bir günlük modeli kullanır.

RabbitMQ bir mesajlaşma sırası kullanır.

Ölçeklenebilirlik

Kafka, bölümlerin farklı sunuculara dağıtılmasına izin vererek ölçeklenebilirlik sağlar.

Rakip tüketiciler arasında işleme ölçeğini genişletmek için sıraya giren tüketici sayısını artırır.

Mesaj saklama

Politika tabanlıdır; örneğin mesajlar bir gün boyunca saklanabilir. Kullanıcı bu saklama penceresini yapılandırabilir.

Onay tabanlıdır; yani mesajlar tüketildikçe silinir.

Birden fazla tüketici

Birden fazla tüketici aynı konuya abone olabilir çünkü Kafka aynı mesajın belirli bir zaman aralığı için tekrar oynatılmasına izin verir.

Birden fazla tüketici aynı mesajı alamaz çünkü mesajlar tüketildikçe kaldırılır.

Çoğaltma

Konular otomatik olarak çoğaltılır ancak kullanıcı, konuları çoğaltılmayacak şekilde manuel olarak yapılandırabilir.

Mesajlar otomatik olarak çoğaltılmaz ancak kullanıcı bunları çoğaltılmak üzere manuel olarak yapılandırabilir.

Mesaj sıralaması

Her tüketici, bölümlenmiş günlük mimarisi nedeniyle sırayla bilgi alır.

Mesajlar tüketicilere sıraya varış sırasına göre teslim edilir. Rakip tüketiciler varsa, her tüketici bu mesajın bir alt kümesini işleyecektir.

Protokoller

Kafka, TCP üzerinden ikili bir protokol kullanır.

Eklentiler aracılığıyla desteklenen gelişmiş mesajlaşma sırası protokolü (AMQP): MQTT, STOMP.

Kafka ve RabbitMQ arasındaki fark hakkında daha fazla bilgi edinin»

AWS, Kafka gereksinimlerinizi nasıl destekleyebilir?

Kafka'yı AWS'de manuel olarak nasıl dağıtacağınız hakkında daha fazla bilgiyi burada okuyabilirsiniz.

AWS ayrıca Apache Kafka için en uyumlu, kullanılabilir ve güvenli tam olarak yönetilen hizmet olan Amazon MSK'yi de sunar ve müşterilerin veri göllerini doldurmasına, veritabanlarına ve veritabanlarından gelen değişiklikleri aktarmasına ve makine öğrenimi ve analitik uygulamalarına güç sağlamasına olanak tanır. Amazon MSK ile müşteriler altyapıyı yönetmek için daha az, uygulama oluşturmak için daha fazla zaman harcayabilir. Amazon MSK hakkında daha fazla bilgi edinin.

AWS'de Sonraki Adımlar

Ücretsiz bir hesap açmak için kaydolun

AWS Ücretsiz Kullanım için anında erişim elde edin.

Kaydolun 
Konsolda oluşturmaya başlayın

AWS Yönetim Konsolu'nda oluşturmaya başlayın.

Oturum açın