Pulsar vs Kafka
Architecture
Hem Apache Kafka hem de Pulsar, partitionlara ayrılmış topicler aracılığıyla etkileşim kurar. Ayrıca, bu partitionlar, birden fazla consumer tarafından tüketilmek üzere verileri brokerlar arasında dağıtır. Temel fark, Kafka'nın partition-centered bir tasarım izlediği, Pulsar'ın ise multi-layered bir mimari tasarım izlediği mimari yaklaşımdır.
Apache Kafka, partitionların doğrudan Leader brokerda depolandığı ve hata toleransı için verilerin Follower brokerlara çoğaltıldığı monolitik mimariyi uygular. Kafka'nın en büyük dezavantajı, partition’un sınırlı alana sahip yerel bir diskte saklanmasıdır. Kafka'nın bir başka dezavantajı ise Follower broker boyutu dolduğunda gelen mesajların durarak veri kaybına yol açmasıdır. Kafka'da Broker'lar stateless değildir; bu, başarısız olursa başka bir Broker'ın mevcut brokerdan state’i(bir başka deyişler verileri) eşitlemesi gerektiği anlamına gelir.
Apache Pulsar, partitionların Bookies(Apache BookKeeper bileşeni) arasında eşit olarak dağıtılan bölümlere ayrıldığı Segment merkezli bir yaklaşım izler. Bu yaklaşım, bellek dolduğunda içeriği çoğaltma ihtiyacını ortadan kaldırarak Yedeklilik(Redundancy) ve Ölçeklendirmeye yardımcı olur. Ayrıca, brokerlar Apache Pulsar mimarisinde stateless’tır. Apache Pulsar state’i korur, ancak veriler brokerlar yerine Apache Bookkeeper'da depolanır.
Message Consumption
Apache Kafka da, consumerlar mesajları sunucudan alır. Long-polling yöntemi, yeni iletilerin neredeyse anında tüketilmesini sağlar.
Apache Pulsar, Yayınla-Abone Ol (Pub-Sub) modelini kullanır. Producerlar mesajlar yayınlar ve consumerlar bunları almak için abone olurlar.
Retention
Hem Apache Kafka hem de Apache Pulsar uzun süreli depolamayı destekler, ancak Kafka, snapshotlar oluşturmak ve topic’i olduğu gibi bırakmak yerine akıllı bir sıkıştırma stratejisine izin verir. Apache Pulsar, tüketime dayalı olarak mesajların silinmesini sağlar. Her iki sistem de muhtemelen işi görecektir, ancak kullanıcılar bir platform seçmeden önce depolama özelliklerini göz önünde bulundurmalıdır.
Message Acknowledgement
Apache Kafka, mesajları Consumer Group düzeyinde her partition için ayrı ayrı kabul eder. Aynı consumer group’una ait iki consumer’ın, aynı partitiondan gelen iki mesajı aynı anda işlemesi mümkün değildir. Partitionlama, mesajların sırayla ulaşmasını sağlar.
Apache Pulsar, kullanıcıların bir topic’e birden fazla consumer eklemesine ve her biri ayrı ayrı onaylanabilen mesajları aynı anda almasına izin verir. Pulsar'ın amacı, Scheduling olarak da bilinen Task Queues olarak sorunları yönetmektir.
Documentation & Community Support
Apache Pulsar ile karşılaştırıldığında Apache Kafka, daha popüler ve yerleşik olduğu için çok daha büyük ve daha aktif bir topluluğa sahiptir. Topluluğun daha küçük boyutuna rağmen, Apache Pulsar, geliştiricileri desteklemek için kapsamlı belgeler sağlar.
Sonuç
Apache Pulsar, multi tenancy, daha eski verileri daha ucuz depolama alanında depolama, clusterları coğrafi olarak verimli bir şekilde çoğaltma, queuing ve streaming yeteneklerini tek bir sistemde birleştirme konularında Kafka'ya göre açık bir avantaja sahiptir.
Güven, yapılandırma, dokümantasyon, kullanım senaryoları ve destek söz konusu olduğunda Apache Kafka daha avantajlıdır.