İşlerimizi halletmek için giderek daha fazla veriye güvendiğimiz bir zamanda çalışıyor ve yaşıyoruz. Uygulamalar, hizmetler, yazılımlar, mobil cihazlar ve diğer unsurlar, hayatımızın çoğu alanına dokunan ve etkileyen karmaşık ve geniş kapsamlı bir ağ oluşturmak için bir araya geliyor.
Sonuç olarak, bu farklı unsurlar arasındaki bilgi akışını yönetme ihtiyacı artmıştır. Cihazlar ve uygulamalar birbirleriyle konuşmalıdır ve hataya yer yoktur. Bu nedenle programcılar, bilgi alışverişinde bulunmak ve birbirleriyle iletişim kurmak için mesaj aracıları(broker) ve benzeri araçları kullanırlar.
Mesaj Broker ile Yayınla/Abone Ol (Pub/Sub) Mesajlaşma Sistemi Arasındaki Fark Nedir?
Mesaj aracıları (Broker), uygulamaların, hizmetlerin ve sistemlerin iletişim kurmasını ve bilgi alışverişinde bulunmasını sağlayan yazılım modülleridir. Mesaj aracıları bunu, resmi mesajlaşma protokolleri arasında mesajları çevirerek, birbirine bağımlı hizmetlerin farklı dillerde yazılmış veya başka platformlarda çalışıyor olsalar bile birbirleriyle doğrudan "konuşmasını" sağlayarak yapar.
Mesaj aracıları mesajları doğrular, yönlendirir, depolar ve belirlenen alıcılara iletir. Aracılar diğer uygulamalar arasında aracı olarak çalışır ve göndericilerin tüketicilerin konumlarını, aktif olup olmadıklarını veya hatta kaç tane olduklarını bilmeden mesaj göndermelerine olanak tanır.
Ancak yayınla/abone ol, üreticilerin istedikleri her mesajı yayınlamalarına olanak tanıyan bir mesaj dağıtım örüntüsüdür.
Veri mühendisleri ve bilim insanları pub/sub'u, yayıncı ile tüketiciler arasında bire-çok ilişkisi bulunan bir yayın tarzı dağıtım yöntemi olarak adlandırıyor.
Kafka Nedir?
- Kafka açık kaynaklıdır dağıtılmış olay akışı platformu, ham verimi kolaylaştırır. Java ve Scala'da yazılan Kafka, akışlara ve yüksek girişli veri tekrarına yönelik bir pub/sub mesaj veri yoludur. Kafka, bir mesaj kuyruğuna güvenmek yerine mesajları günlüğe ekler ve tüketici okuyana veya saklama sınırına ulaşana kadar orada kalırlar.
Kafka, kullanıcıların belirli konumlardan mesaj grupları talep etmesine izin veren "çekme tabanlı" bir yaklaşım kullanır. Kullanıcılar, daha yüksek verim ve etkili mesaj teslimi için mesaj gruplamasından yararlanabilir.
Kafka yalnızca bir Java istemcisiyle birlikte gelse de, programcıların kendi benzersiz sistem entegrasyonlarını oluşturmalarına olanak tanıyan bir adaptör SDK'sı sunar. Ayrıca, büyüyen bir topluluk ekosistemi projeleri ve açık kaynaklı istemciler kataloğu da vardır.
Kafka 2011'de yayınlandı, bu yüzden yeni gelen. Kafka'ya dair daha detaylı bir giriş burada bulabilirsiniz. Ayrıca bu Kafka eğitimi aracılığıyla nasıl kullanılacağı hakkında daha fazla bilgi edinebilir ve bunun mimarisine bakabilirsiniz
RabbitMQ Nedir?
RabbitMQ, karmaşık yönlendirme senaryolarında verimli mesaj teslimatını kolaylaştıran açık kaynaklı dağıtılmış bir mesaj aracısıdır. "Dağıtılmış" olarak adlandırılır çünkü RabbitMQ genellikle kuyrukların düğümler arasında dağıtıldığı bir düğüm kümesi olarak çalışır — yüksek kullanılabilirlik ve hata toleransı için çoğaltılır.
RabbitMQ bir push modeli kullanır ve tüketici tarafından yapılandırılan ön getirme sınırı yoluyla kullanıcıları bunaltmayı önler. Bu model düşük gecikmeli mesajlaşma için ideal bir yaklaşımdır. Ayrıca RabbitMQ kuyruk tabanlı mimarisiyle de iyi çalışır. RabbitMQ'yu posta alan, depolayan ve teslim eden bir postane olarak düşünün, oysa RabbitMQ ikili veri mesajlarını kabul eder, depolar ve iletir.
RabbitMQ, AMQP 0.9.1'i doğal olarak uygular ve AMQP 1.0, HTTP, STOMP ve MQTT gibi ek protokoller sunmak için eklentiler kullanır. RabbitMQ, Elixir, Go, Java, JavaScript, .NET, PHP, Python, Ruby, Objective-C, Spring ve Swift'i resmi olarak destekler. Ayrıca topluluk eklentilerini kullanarak çeşitli geliştirme araçlarını ve istemcileri destekler.
Kafka Ne İçin Kullanılır?
Kafka, karmaşık yönlendirmelere başvurmadan A'dan B'ye akış için en iyi şekilde kullanılır, ancak maksimum verimle. Ayrıca olay kaynaklama, akış işleme ve bir sistemde bir olay dizisi olarak modelleme değişiklikleri gerçekleştirmek için de idealdir. Kafka ayrıca çok aşamalı veri hatlarında veri işleme için de uygundur.
Özetle, akış verilerini depolamak, okumak, yeniden okumak ve analiz etmek için bir çerçeveye ihtiyacınız varsa Kafka kullanın. Rutin olarak denetlenen sistemler veya mesajlarını kalıcı olarak depolayan sistemler için idealdir. Daha da ayrıntılı olarak açıklamak gerekirse, Kafka gerçek zamanlı işleme ve veri analizinde parlıyor.
Kafka'da Akış Veriniz Var. Sırada ne var?
İlk adım, Kafka'daki verilere sahip olduğunuzda tamamlanır. Ancak, bunlardan herhangi bir yararlı bilgi çıkarmaya çalışıyorsanız, akışlarınızı depolamak, yönetmek ve analiz etmek için çok daha gelişmiş bir mekanizmaya ihtiyacınız olacak. Bunun dışında, bir diğer öneri de SQLake'i ücretsiz (erken erişim) olarak test etmenizdir. Tamamen SQL ortamı kullanarak akış ve toplu veriler üzerinde güvenilir veri hatları oluşturmanızı ve yürütmenizi sağlar. Ücretsiz olarak deneyebilirsiniz. Kredi kartı gerekmez.
RabbitMQ Ne İçin Kullanılır?
Geliştiriciler, RabbitMQ'yu yüksek verimli ve güvenilir arka plan işlerini işlemek, ayrıca uygulamalar arasında ve içinde entegrasyon ve iletişim kurmak için kullanır. Programcılar ayrıca, tüketicilere karmaşık yönlendirme yapmak ve birden fazla uygulamayı ve hizmeti önemsiz olmayan yönlendirme mantığıyla entegre etmek için RabbitMQ'yu kullanır.
RabbitMQ, hızlı istek-yanıt gerektiren web sunucuları için mükemmeldir. Ayrıca, yüksek yük altında (saniyede 20K+ mesaj) işçiler arasında yükleri paylaşır. RabbitMQ ayrıca arka plan işlerini veya PDF dönüştürme, dosya tarama veya görüntü ölçekleme gibi uzun süreli görevleri de halledebilir.
Özetle, RabbitMQ'yu uzun süren görevlerde, arka plan işlerinin güvenilir bir şekilde çalıştırılmasında ve uygulamalar arası ve içindeki iletişim/entegrasyonda kullanın.
RabbitMQ ile Kafka Arasındaki Farkları Anlamak
Bu mesajlaşma çerçeveleri mesajlaşmaya tamamen farklı açılardan yaklaşır ve yetenekleri büyük ölçüde değişir. Başlangıç için, bu grafik en önemli farklardan bazılarını açıklar.
Kafka ve RabbitMQ |
RabbitMQ |
Kafka |
Performans |
Saniyede 4K-10K mesaj |
Saniyede 1 milyon mesaj |
Mesaj Saklama |
Teşekkür temelli |
Politika bazlı (örneğin, 30 gün) |
Veri Türü |
İşlemsel |
Operasyonel |
Tüketici Modu |
Akıllı komisyoncu/aptal tüketici |
Aptal komisyoncu/akıllı tüketici |
Topoloji |
Değişim türü: Doğrudan, Fan out, Konu, Başlık tabanlı |
Yayınla/abone ol tabanlı |
Yük Boyutu |
Hiçbir kısıtlama yok |
Varsayılan 1MB sınırı |
Kullanım Örnekleri |
Basit kullanım durumları |
Büyük veri/yüksek verimli vakalar |
Kafka ile RabbitMQ arasındaki başlıca farklar hakkında daha fazla bilgi:
- Veri Akışı
RabbitMQ ayrı, sınırlı bir veri akışı kullanır. Mesajlar üretici tarafından oluşturulur ve gönderilir ve tüketici tarafından alınır. Apache Kafka, anahtar-değer çiftlerinin sürekli olarak atanan konuya aktığı sınırsız bir veri akışı kullanır.
- Veri Kullanımı
RabbitMQ, sipariş oluşturma ve yerleştirme ve kullanıcı istekleri gibi işlemsel veriler için en iyisidir. Kafka, işlem operasyonları, denetim ve günlük istatistikleri ve sistem etkinliği gibi operasyonel verilerle en iyi şekilde çalışır.
- Mesajlaşma
RabbitMQ kullanıcılara mesajlar gönderir. Bu mesajlar işlenip onaylandıktan sonra kuyruktan kaldırılır. Kafka bir günlüktür. Saklama süresi dolana kadar kuyrukta kalan sürekli mesajları kullanır.
- Tasarım Modeli
RabbitMQ akıllı aracı/aptal tüketici modelini kullanır. Aracı, tüketicilere sürekli olarak mesajlar iletir ve durumlarını takip eder. Kafka aptal aracı/akıllı tüketici modelini kullanır. Kafka her kullanıcının okuduğu mesajları izlemez. Bunun yerine, yalnızca okunmamış mesajları saklar ve tüm mesajları belirli bir süre boyunca korur. Tüketiciler her günlükteki konumlarını izlemelidir.
- Topoloji
RabbitMQ, değişim kuyruğu topolojisini kullanır — tüketicinin kullanımı için çeşitli kuyruk bağlamalarına yönlendirildikleri bir değişime mesajlar gönderir. Kafka, yayınla/abone ol topolojisini kullanır, mesajları akış boyunca doğru konulara gönderir ve ardından farklı yetkili gruplardaki kullanıcılar tarafından tüketilir.
- Mimari Farklılıklar
Apache Kafka ile RabbitMQ arasında seçim yaparken, iç işlemler ve temel tasarım önemli hususlar olabilir.
RabbitMQ'nun Mimarisi bileşenleri şunlardan oluşur:
Kuyruk: Alınan mesajların takibinden sorumludur ve bir mesajla ne yapabileceğini belirten yapılandırma verilerine sahip olabilir.
Değişim: Bir değişim, RabbitMQ'ya gönderilen mesajları alır ve nereye iletileceğini belirler. Değişimler, mesajlar için kullanılan yönlendirme stratejilerini tanımlar, çoğunlukla mesajla birlikte iletilen veya özniteliklerinin içinde yer alan veri özelliklerini inceleyerek.
Üretici: Mesajlar üretir ve bunları bir aracı sunucuya gönderir (yayınlar). Bir yük ve bir etiket, bir mesajın iki bileşenidir. Kullanıcının iletmek istediği veri yüktür. Etiket, mesajın bir kopyasını kimin alması gerektiğini belirtir ve yükü açıklar.
Tüketici: Bir kuyruğa abone olur ve bir broker sunucusuna bağlanır.
Broker: Uygulamalar, bir broker aracılığıyla bilgi alışverişinde bulunabilir ve birbirleriyle iletişim kurabilir.
Bağlama: Bir borsaya hangi kuyrukların mesajları dağıtacağını söyler. Ek olarak, bağlama borsaya belirli borsa türleri için hangi mesajların bir kuyruğa eklenmesine izin verildiğini filtrelemesini söyler.
Şimdi ikisini karşılaştırmak için Apache Kafka'nın mimarisine bakalım.
Kafka'nın mimarisi aşağıdaki bileşenler kullanılarak tasarlanmıştır:
Ayna Yapıcı: Kafka'nın en önemli unsurlarından biri replikasyondur; bu, aracının bir sorunla karşılaşması durumunda bile mesajların yayınlanmasını ve tüketilmesini sağlar.
ZooKeeper: Tüketiciler ve Kafka broker'ı arasında bir bağlantı görevi görür. Yapılandırma, konum ve durum ayrıntıları gibi koordinasyon verilerini korur.
Üretici: Üreticiler, Kafka broker'ında oluşturulan bir Kafka konusuna mesajlar gönderir veya yayınlar. Üreticiler ayrıca, bir broker'a senkron veya asenkron bir şekilde mesaj gönderme seçeneğine de sahiptir.
Tüketiciler: Bir Kafka konusuna abone olan ve ondan mesajlar çeken kişiler. Kafka Varsayılan olarak, tüketiciler mesajları ZooKeeper'da depolar. Ancak, Kafka ayrıca verilerin çevrimiçi işlem işleme (OLTP) için programlar tarafından kullanılan ek depolama platformlarında depolanmasına da izin verir.
Broker: Kafka sunucusu veya broker olarak görev yapar. Her mesaj için bölüm sayısı, mesajların broker tarafından depolanma sırasına göre tanımlanır.
Şimdi RabbitMQ ile Kafka arasındaki Ölçeklenebilirlik ve Yedeklilik farklarına bakalım.
Şimdi bu ikisinin Ölçeklenebilirlik ve Yedeklilik açısından birbirleriyle nasıl karşılaştırıldığına bakalım.
Ölçeklenebilirlik ve Yedeklilik
RabbitMQ, mesajları tekrarlamak için bir sıralı sıra kullanır. Verimi artırmak ve yükü dengelemek için mesajlar sıralar arasında bölünür. Ayrıca, çok sayıda tüketicinin çeşitli sıralardan mesajları aynı anda okumasını sağlar.
Ölçeklenebilirlik ve yedeklilik Kafka bölümleri tarafından sağlanır. Bölüm çok sayıda broker arasında çoğaltılmıştır. Brokerlardan birinin arızalanması durumunda, müşteriye yine de başka bir broker hizmet verebilir.
Tüm bölümleri tek bir broker'da depolarsak, o broker'a olan bağımlılığımız artacaktır, bu da tehlikelidir ve başarısız olma olasılığını artırır. Ayrıca, bölümleri dağıtmak verimi büyük ölçüde artıracaktır.
Şimdi bu ikisinin Mesaj Silme açısından birbirleriyle nasıl karşılaştırıldığına bakalım.
Mesaj Silme
Sıradan çıkmak için RabbitMQ, tüketici aracılığıyla başarılı bir onay gönderir.
Olumsuz ACK durumunda mesajlar kuyruğa geri döndürülür ve olumlu ACK durumunda tüketiciye kaydedilir.
Kafka bir saklama süresi kullanırken, bu süreye göre saklanan tüm iletiler bu süre geçtikten sonra silinir.
Şimdi bu ikisinin Mesaj Silme konusunda birbirleriyle nasıl karşılaştırıldığına bakalım.
Mesaj Tüketimi
Bir mesajın RabbitMQ'nun brokerlarından biri tarafından müşteriye iletilmesi gerekir ve bu mesajlar gruplar halinde iletilir.
Kafka Tüketicileri aracıdan bir mesaj okur ve kuyruk sayacı ofsetini izlenebilir tutar. Mesaj okunur okunmaz ofset artar.
Şimdi Mesaj Önceliği açısından nasıl farklılaştıklarına bakalım.
Mesaj Önceliği
RabbitMQ'da öncelik kuyruğu yardımıyla mesajlara öncelik verilebilir.
Kafka'da tüm iletilerin önceliği aynıdır ve bu değiştirilemez.
Kafka ve RabbitMQ'nun sunduğu Kütüphaneler ve Dil Desteği nelerdir? Şimdi bunlara bakalım.
Kütüphaneler ve Dil Desteği
RabbitMQ, Python, Ruby, Elixir, PHP, Swift, Go, Java, C, Spring, .Net ve JavaScript'i destekler.
Kafka, Node js, Python, Ruby ve Java'yı destekler.
Şimdi RabbitMQ ile Kafka'yı karşılaştırdığımızda Sıralı Sıralama'dan bahsedeceğiz.
Broker kuyruğundaki mesajların sırası RabbitMQ tarafından tutulur.
Konular, Kafka tarafından mesajlar arasında ayrım yapmak için kullanılır ve Zookeeper, herhangi bir konuyu okumak isteyen tüketici tarafından kullanılabilmesi için ofseti takip eder.
Daha sonra, bu iki teknolojiyi takip eden Çekme ve İtme Yaklaşımlarına bakacağız.
Çekme ve İtme Yaklaşımı
RabbitMQ'nun push mekanizması tüketicinin herhangi bir mesaj alımından haberdar olmasını engeller. Broker müşterinin mesajı aldığından emin olur.
Ayrıca, mesajların müşteriye ulaştığından emin olmak için verileri işledikten sonra bir onay döndürür. Olumsuz bir yanıt olduğunda, mesaj kuyruğa eklenerek bir kez daha gönderilir.
Kafka, istemcilerin aracıdan toplu olarak veri talep etmesini sağlayan bir çekme mekanizması sağlar. Akıllıca, tüketici en son mesaj karşılaşmasının ofsetini takip eder. Ofseti kullanarak, verileri bölümlerin sırasına göre düzenler.
Şimdi bu ikisinin mesajlaşmayı nasıl ele aldığını karşılaştıralım.
Mesajlaşmayı Nasıl Yönetiyorlar?
Bu iki teknolojinin mesajlaşmayı nasıl ele aldıklarına ilişkin farklar aşağıdaki tabloda özetlenmiştir
Şim
Alet |
RabbitMQ |
Apaçi Kafka |
Teslimat Garantisi |
Özellikle tek bir kuyruğu kullanan işlemlerde atomiklik garanti edilmez. |
Sadece bir bölüm içinde düzeni korur. Kafka, bir bölümdeki her mesajın başarılı veya başarısız olmasını sağlar. |
Mesaj siparişi |
Desteklenmiyor. |
Mesaj sıralaması, bölümlenmesi yoluyla sağlanır. Mesaj anahtarıyla mesajlar konulara gönderilir. |
Mesaj öncelikleri |
RabbitMQ'da mesaj önceliklerini ayarlayabilir ve mesajları en yüksek öncelik sırasına göre tüketebilirsiniz. |
Mevcut değil |
Mesaj ömrü |
RabbitMQ bir kuyruk olduğundan, mesajlar okunduktan sonra atılır ve bir onay verilir. |
Kafka bir günlük olduğundan, mesajlar varsayılan olarak dosyada tutulur. Bu, bir saklama politikası tanımlanarak kontrol edilebilir. |
di Apache Kafka ve RabbitMQ'nun temel özelliklerini inceleyeceğiz.
Kafka'nın Özellikleri
Gerçek zamanlı veri depolama ve analizini mümkün kılmak için Apache Kafka şu işlevleri sunar: mesaj iletişimi ve akış işleme.
Apache Kafka'nın başlıca özellikleri aşağıdadır:
Dağıtılmış olay akışı platformu: Kafka, Kafka sunucuları arasında mesaj bölümlendirmesini kolaylaştırırken ve tüketimi bir tüketici sistemleri kümesine dağıtırken bölüm başına sıralama semantiğini etkinleştirir.
Yüksek Verim: Kafka, saniyede milyonlarca mesajı işleyecek ve çok büyük miktarda veriyi idare edecek şekilde tasarlanmıştır.
Gerçek zamanlı çözümler: Tüketici iş parçacıklarının, üretici iş parçacıkları tarafından üretilen mesajlara anında erişebilmesi gerekir.
Kalıcı Mesajlaşma: Büyük verilerden gerçek anlamda faydalanmak için hiçbir tür bilgi kaybı kabul edilemez. Apache Kafka'nın inşasında kullanılan O(1) Disk Yapıları, aşırı büyük mesaj depolama yoğunluklarında (TB'lerde) bile sabit zamanlı performans sağlar. Karmaşık Olay İşleme gibi olay tabanlı sistemlerde bu kalite çok önemlidir (CEP).
RabbitMQ'nun Özellikleri
RabbitMQ'nun bazı temel özellikleri şunlardır:
Güvenilirlik: RabbitMQ'nun performans üzerinde anında etkisi olan temel özellikleri arasında kalıcılık, teslimat geri bildirimi, yayıncı onayları ve yüksek kullanılabilirlik yer alır.
Dahili Kümeleme: RabbitMQ'daki kümeleme iki amaç düşünülerek oluşturulmuştur. Bir düğümün arızalanması durumunda tüketicilerin ve üreticilerin çalışmaya devam etmesini sağlar ve yeni düğümler ekleyerek mesajlaşma verimini doğrusal olarak genişletir.
Güvenlik: RabbitMQ tarafından farklı düzeylerde sunulur. İstemci Sertifikası Denetimi ve yalnızca SSL iletişimi gerektirilerek güvenli istemci bağlantıları elde edilebilir. Sanal ana bilgisayar, yüksek düzeyde ileti izolasyonunu sağlamak için kullanıcı erişim denetimlerine sahip olabilir.
Esnek Yönlendirme: Yönlendirme için RabbitMQ, bir dizi yerleşik değişim türüyle birlikte gelir. Mesajlar, geleneksel yönlendirmede kuyruklara ulaşmadan önce genellikle değişimler aracılığıyla yönlendirilir. Kullanıcılar ayrıca karmaşık yönlendirme için değişimleri birbirine bağlayabilir veya hatta değişim türlerini bir eklenti olarak geliştirebilirler.
Gereksinimler ve Kullanım Örnekleri
İlk aşamalarda, RabbitMQ ve Kafka arasında tasarımda önemli bir fark ve gereksinimler ve kullanım durumları arasında bir fark vardı. RabbitMQ'nun mesaj aracısı tasarımı, belirli yönlendirme gereksinimleri ve mesaj öncesi garantileri olan kullanım durumları için mükemmel bir seçim olsa da, Kafka'nın yalnızca ekleme günlüğü, geliştiricilerinakış geçmişi ve daha doğrudan akış işleme. İki teknoloji tarafından yerine getirilen kullanım durumlarının Venn diyagramı oldukça sıkıydı. Birinin diğerinden açıkça daha iyi bir seçim olduğu durumlar vardı.
Ancak bu denge yakında değişecek. RabbitMQ, geleneksel kuyruk modelini sağlamanın yanı sıra, yıkıcı olmayan tüketen semantiklerle yalnızca eklemeli bir günlük modelleyen yeni bir veri yapısı sunacak. Bu yeni veri yapısı, akış kullanım durumlarını geliştirmek isteyen RabbitMQ kullanıcıları için ilginç bir ekleme olacak.
Geliştirici Deneyimi
RabbitMQ ve Kafka'nın geliştirici deneyimi oldukça benzerdi, istemci ve kütüphane listesi ilgili topluluklarının çalışmaları nedeniyle sürekli olarak artıyordu. Her ikisinin de istemci kütüphane listelerinde istikrarlı bir büyüme oldu. Daha fazla dil ve çerçeve popülerleştikçe, RabbitMQ ve Kafka için iyi desteklenen ve eksiksiz bir kütüphane bulmak daha kolay hale geldi.
Kafka akışlarının istemci kütüphanesi uygulaması önemli ölçüde büyüdü ve geliştiricilerin akış verilerini işlemesini kolaylaştırdı. Uygulama, Kafka'dan veri okumak, işlemek ve başka bir Kafka kuyruğuna yazmak için kullanılır. Ayrıca, ksqlDB, ilişkisel veritabanlarına aşinalıklarını kullanarak akış uygulamaları geliştirmek isteyen geliştiricilere yardımcı olabilir.
Geliştiriciler RabbitMQ ile güçlü akış ve toplu işleme için Spring Cloud Data Flow'un yardımını alabilirler.
Güvenlik ve Operasyonlar
Hem RabbitMQ hem de Kafka, güvenlik ve işlemleri yönetmek için yerleşik araçlar sunar. Ayrıca, her iki platform da düğümlerden, kümelerden, kuyruklardan vb. izleme ölçümlerini geliştiren üçüncü taraf araçları sunar.
Son zamanlarda Kubernetes'in ortaya çıkması, altyapı operatörlerinin hem Kafka'yı hem de RabbitMQ'yu Kubernetes üzerinde çalıştırmasına olanak sağladı.
RabbitMQ, kullanıcıları ve kuyrukları yönetmek için tarayıcı tabanlı bir API ile gelirken, Kafka Taşıma Katmanı Güvenliği (TLS) şifrelemesi ve JAAS (Java Kimlik Doğrulama ve Yetkilendirme Hizmeti) gibi özellikler sunar. Hem Kafka hem de RabbitMQ, rol tabanlı erişim denetimi (RBAC) ve Basit Kimlik Doğrulama ve Güvenlik Katmanı (SASL) kimlik doğrulamasını destekler. Kafka'da, güvenlik politikalarını komut satırı arayüzü (CLI) aracılığıyla bile kontrol edebilirsiniz.
Performans
Hizmetin nasıl yapılandırıldığı, kodun onunla nasıl etkileşime girdiği ve donanım gibi çok sayıda değişkenin dahil olduğu bir ortamda performansı ölçmek zor olabilir. Ağ, bellek ve disk hızı gibi şeyler bile hizmet performansını önemli ölçüde etkileyebilir. RabbitMQ ve Kafka performans için optimize edilmiş olsa da, kullanım senaryonuzu maksimum verimlilik için yapılandırdığınızdan emin olun.
RabbitMQ için maksimum performans için nasıl yapılır kılavuzlarına bakın. Kümeler oluştururken dikkate alınması gereken şeyleri, kümenizi nasıl kıyaslayıp boyutlandıracağınızı, kodunuzun optimize edilmiş performans için onlarla nasıl etkileşime gireceğini, kuyruk boyutunu ve bağlantıları nasıl yöneteceğinizi ve son kullanıcının mesajları nasıl tükettiğine dikkat etmeyi aklınızda bulundurun.
Benzer şekilde, Kafka'yı üretim kılavuzlarında çalıştırma, Kafka kümesinin nasıl yapılandırılacağı, Kafka'yı JVM'de çalıştırmak için akılda tutulması gereken şeyler ve daha fazlası hakkında temel noktaları kapsar.
Kafka ve RabbitMQ Arasında Karar Vermek
Kafka ve RabbitMQ arasında karar vermek zor olabilir, özellikle de her iki platform da her geçen gün gelişiyor ve avantaj marjları daralıyor. Ancak kararınız belirli kullanıcı durumunuza bağlı olacaktır.
Kafka büyük veri için en uygunudur. En iyi verimi gerektiren kullanım durumlarında, RabbitMQ düşük gecikmeli mesaj iletimi için mükemmeldir.
Hem Kafka hem de RabbitMQ için bazı yaygın kullanım durumları vardır. Her ikisi de üreten ve tüketen uygulamalar arasında bağlantı sağlayan mikroservis mimarisinin bileşeni olarak kullanılabilir. Başka bir yaygın kullanım durumu, mesaj arabelleği olarak, tüketen uygulamalar kullanılamadığında mesaj depolama için geçici bir konum sağlamak veya üretici tarafından oluşturulan mesajlardaki artışları düzeltmek olabilir.
Hem Kafka hem de RabbitMQ teknolojileri büyük miktarda mesajı farklı şekillerde işleyebilir ve her biri farklı kullanım durumları için uygundur.
RabitMQ Ne Zaman Kullanılır?
Programınızın bir kullanıcısı, video veya ses gibi başka biçimlere dönüştürülmesi gereken belirli dosyaları gönderir. Bir arka plan işlemi veya kuyruğu ayarlamazsanız, kullanıcı bir sonraki adıma geçmeden önce işlemin bitmesini beklemek zorunda kalacaktır. Bu, video durumunda çok uzun bir süre olabilir.
Mevcut eklentileri kullanarak (veya kendi eklentilerinizi tasarlayarak) tüketici uygulamalarını eski uygulamalarla bağlamak için RabbitMQ'yu kullanabilirsiniz. Örneğin, JMS uygulamalarına bağlanmak için JMS istemci kitaplıkları ve Java Mesaj Hizmeti eklentileri mevcuttur.
Esnek ve güvenilir bir mesaj aracısına ihtiyacınız varsa RabbitMQ harika bir seçimdir. RabbitMQ topluluğu aktif ve genişliyor ve çok sayıda belge ve yardım mevcut. Bir konu hakkında mesajları tekrar oynatma yeteneğine ihtiyaç duymadığınızda, RabbitMQ faydalı olabilir. RabbitMQ olayları tekrar oynatamasa da, iletilen mesajlar yine de korunur; dolayısıyla, mesajı tekrar oynatmak için üreticiyi kullanabilirsiniz.
Uygulamanızda belirli bir eylem gerçekleştiğinde, kullanıcıyı bilgilendirmek isteyebilirsiniz. Uyarıları göndermekle (e-posta, SMS vb.) ilgilenen kodunuzu ayırarak değerleri kullanıcıya iletebilirsiniz. RabbitMQ (ve diğerleri(karmaşık ileti kuyrukları) ayrıca, kaç tane kuyruk, tüketici ve bağlamanın oluşturulacağı gibi ileti akışını yönetmek için oldukça karmaşık sistem kuralları sağlamak amacıyla da kullanılabilir.
Mesajların birden fazla tüketici uygulaması arasında yönlendirilmesi gerektiğinde, RabbitMQ en iyi seçim olabilir. Sürekli karma değişimi, yük işlemeyi dağıtılmış bir izleme hizmeti üzerinden yaymak için kullanılabilir.
Kullanıcılar, virüslere karşı taranacakları ve diğer kullanıcılara dağıtılmadan önce dosya hakkında bilgi toplanacakları Softonic platformuna dosya yükleyebilirler. Yükleme tamamlandığında, kullanıcı bir bildirim alır. Bu, RabbitMQ'nun Mikro Hizmet Mimarisi özelliğinin web sunucularının sorgulara hızla yanıt vermesine izin vermesi sayesinde başarılabilir.
Apache Kafka Ne Zaman Kullanılır?
Etkinlik Takibi, Kafka'nın ilk kullanım örneğiydi. LinkedIn'in kullanıcı etkinliği takibi boru hattı, bir dizi gerçek zamanlı yayınlama-abone olma akışı olarak yeniden oluşturulmalıdır. Her kullanıcı sayfa görünümü birkaç etkinlik mesajı (olay) oluşturduğundan: kullanıcı tıklamaları, beğeniler, kayıtlar, siparişler, belirli sayfalarda harcanan zaman, çevresel değişiklikler vb., etkinlik takibi sıklıkla oldukça yüksek bir hacimdedir. Bu olaylar belirli Kafka temalarına atanabilir (yayınlanabilir). Her akış, çevrimdışı işleme ve raporlama için bir veri gölüne veya deposuna koymak gibi çeşitli amaçlar için kullanılabilir (tüketilebilir).
Kafka, daha yüksek verim, yerleşik bölümlendirme, çoğaltma ve hata toleransı ve gelişmiş ölçeklenebilirlik yetenekleri sağladığı için geleneksel mesaj aracılarına iyi bir alternatiftir. Mesajları tekrar oynatmak gerektiğinde, tüketici bunu doğrudan yapabilir. Tekrar oynatma, tüketici bir hata içeriyorsa, aşırı yüklenmişse veya başka bir şekilde hazır değilse hiçbir olayın kaybolmamasını sağlar. Sorunu düzeltin, müşteriyi hızlandırın ve mesajları tekrar oynatın.
Kafka, operasyonel izleme verilerini depolamak için sıklıkla kullanılır. Bu, operasyonel verilerin merkezileştirilmiş beslemelerini oluşturmak için uzak uygulamalardan istatistik toplamayı gerektirir.
Olay akışı, bir boru hattının birden fazla aşamasından gelen verileri işlemek için kullanıldığında, olay akışındaki veri akışının grafiklerini oluşturarak, çok aşamalı boru hatlarındaki gerçek zamanlı trafiği izlemek mümkündür.
Birçok işletme günlükleri toplamak için Kafka'yı kullanır. Günlük toplama genellikle sunuculardan fiziksel günlük dosyalarını toplamayı ve bunları işleme için tek bir depoda (örneğin bir dosya sunucusu veya veri gölü) depolamayı gerektirir. Kafka dosya özelliklerini kaldırır ve verileri bir mesaj akışı olarak soyutlar. Bu, daha düşük gecikmeli işleme ve birçok veri kaynağı ve dağıtılmış veri tüketimi için daha basit destek sağlar. Scribe veya Flume gibi günlük merkezli sistemlerle karşılaştırıldığında, Kafka karşılaştırılabilir hız, çoğaltma sayesinde daha yüksek dayanıklılık garantileri ve önemli ölçüde azaltılmış uçtan uca gecikme sağlar.
Apache Kafka Kullanım Örnekleri
Yüksek Verimli Aktivite Takibi – Kafka'yı web sitesi aktivitesini takip etme, IoT sensörlerinden veri toplama, sevkiyatları takip etme, hastanelerdeki hastaları izleme vb. gibi farklı yüksek hacimli, yüksek verimli aktivite takibi için kullanabilirsiniz.
Akış İşleme – Olay akışlarına dayalı uygulama mantığını uygulamak için Kafka'yı kullanın. Örneğin, birkaç dakika süren bir olay için, olayın süresi boyunca ortalama değeri izleyebilir veya olay türlerinin sürekli bir sayısını tutabilirsiniz.
Olay Kaynağı – Kafka, bir uygulama durumundaki herhangi bir değişikliğin olay dizisi biçiminde depolandığı olay kaynağını destekler. Örneğin, bir bankacılık uygulaması için Kafka kullanırken, hesap bakiyesi bir şekilde bozulursa, bakiyeyi yeniden hesaplamak için depolanan işlem geçmişini kullanabilirsiniz.
Günlük toplama – Kafka ayrıca günlük dosyalarını toplamak ve bunları merkezi bir konumda depolamak için de kullanılabilir.
RabbitMQ Kullanım Örnekleri
Karmaşık Yönlendirme – Mikroservis mimarisinde olduğu gibi birçok tüketen uygulama arasında mesajları yönlendirmek istiyorsanız, RabbitMQ sizin için en iyi seçim olabilir. RabbitMQ tutarlı karma değişimi, dağıtılmış bir izleme hizmeti genelinde yük işlemeyi dengeleyebilir. Ayrıca, A/B testi için olayların belirli bir bölümünü belirli hizmetlere yönlendirmek için alternatif değişimleri kullanabilirsiniz.
Eski Uygulamalar – RabbitMQ'nun bir diğer kullanım durumu, tüketici uygulamalarını eski uygulamalara bağlamak için mevcut eklentileri kullanarak (veya kendi eklentinizi oluşturarak) dağıtmaktır. Örneğin, Java Mesaj Servisi (JMS) eklentisini ve JMS istemci kitaplığını kullanarak JMS uygulamalarıyla iletişim kurun.
Hangisini Öğrenmelisiniz - Kafka mı RabbitMQ mu?
Bu bir kaçamak gibi görünse de, cevap şudur: İhtiyaçlarınızın ne olduğuna bağlıdır. İşleminiz aşağıdaki kullanım durumlarından herhangi birini gerektiriyorsa Apache Kafka'yı öğrenin ve kullanın:
Olay kaynağı veya sistem modellemesi, bir dizi olay olarak değişir
Çok aşamalı veri hatlarında veri akışı ve işlenmesi
"En az bir kez" bölümlenmiş sırayla teslim edilen bir akış geçmişine ihtiyaç duyan uygulamalar
En az 110K/sn olay verimine sahip akışlar, karmaşık yönlendirme veya "en az bir kez" bölümlenmiş sıralama
Ve eğer aşağıdaki kullanım durumlarından herhangi biri kuruluşunuzda geçerliyse RabbitMQ'yu öğrenmeli ve kullanmalısınız:
Tutarlılık/mesaj bazında garanti kümesi üzerinde ayrıntılı kontrol
Kullanıcılara/tüketicilere karmaşık yönlendirme
Çeşitli yayınlama/abone olma veya noktadan noktaya istek/yanıt mesajlaşma yetenekleri gerektiren uygulamalar
STOMP, MQTT, AMQP, 0-9-1 gibi eski protokolleri desteklemesi gereken uygulamalar
Kariyerinizin sizi nereye götüreceğinden emin değilseniz, her ikisini de öğrenmeyi düşünebilirsiniz. Bu strateji, beceri setinizi güçlendirir, yeni bir iş ortamında esnekliğinizi artırır ve gelecekteki olası işverenlere pazarlanabilirliğinizi artırır. Zaman ve kaynaklar izin verdiğinde, hem RabbitMQ hem de Kafka'da sertifika almayı düşünün ve her şeye hazır olun.
Apache Kafka sertifika sınavına girmeye hazır olduğunuzda, bunlara göz atınKafka pratik sorularıilk önce, sonra kontrol edebilirsinizKafka röportaj sorularıiş görüşmesine hazırlanmak için.
Veri Mühendisi Olarak Kariyer Fırsatlarına mı Bakıyorsunuz?
Veri bilimcisi ve veri mühendisi becerileri şunlardır:2021'de en çok talep gören. Veri mühendisliği kariyeriyle ilgileniyorsanız, Simplilearn size doğru yönde bir ivme kazandırmak için veri mühendisliği kursları sunar. Veri Mühendisliği alanındaki bu Yüksek Lisans Programı, Hadoop çerçevesini kullanarak dağıtılmış işleme, Spark kullanarak büyük ölçekli veri işleme, Kafka ile veri hatları ve veri işleme üzerine odaklanır.AWS ve Azure bulut altyapısı.Bu veri mühendisliği sertifika kursunu tamamladığınızda, Veri Mühendisliği rolü için kariyerinize hazır olacaksınız.
Veri mühendisliği sertifikasını aldıktan sonra Simplilearn'inVeri Mühendisliğinde Profesyonel Sertifika ProgramıBu kurs size mimari, kurulum, yapılandırma ve Kafka açık kaynaklı mesajlaşma arayüzlerinde nasıl ustalaşacağınızı öğretir. Merkezi bir hizmet olarak Apache ZooKeeper'ın temellerini öğrenecek ve gerçek zamanlı mesajlaşma için Kafka'yı dağıtma becerilerini geliştireceksiniz.
Payscale'e göre veri mühendisleri yıllık ortalama 92.325 ABD doları kazanabiliyor, üst sınır ise 132.000 ABD doları civarında.
Simplilearn'ün veri odaklı kariyer hayallerinizi gerçekleştirmenize yardımcı olmasına izin verin. Bugün kurslara göz atın ve cömert faydalar ve istikrar sunan bir kariyer yoluna girin.
Hiç yorum yok:
Yorum Gönder