Göre Kafka sitesine :
" Kakfa gerçek zamanlı veri boru hatları ve akış uygulamaları oluşturmak için kullanılır. "
İnterneti çok geniş bir alanda arayarak, " yayın verilerinin " ne olduğuna ilişkin genel kabul gören şu tanımı buldum :
- Akış verileri, bir ağ üzerinden bir kaynaktan hedefe bitişik olarak akan verilerdir; ve
- Akış verisi doğası gereği atomik değildir , yani akan bir veri akışının herhangi bir kısmı, hepsine sahip olmadığınız sürece baytları hiçbir şey ifade etmeyen bir dosyanın aksine anlamlı ve işlenebilir; ve
- Akış verileri herhangi bir zamanda başlatılabilir / durdurulabilir; ve
- Tüketiciler istedikleri zaman bir veri akışını ekleyip çıkarabilir ve yalnızca istedikleri bölümlerini işleyebilir
Şimdi, yukarıda söylediğim bir şey yanlış, eksik veya tamamen yanlışsa, lütfen beni düzelterek başlayın! Yolda az çok olduğumu varsayarsak, o zaman ...
Şimdi "veri akışı" nın ne olduğunu anladığımdan, Kafka ve Kinesis'in veri akışı olan uygulamalar için ara katman yazılımı işlemesi / aracısı olarak kendilerini faturalandırdıklarında ne anlama geldiğini anlıyorum. Ama bu benim ilgimi çekti: Kafka veya Kinesis gibi "akış orta katman yazılım" geleneksel mesaj aracıları gibi akış dışı veriler için kullanılabilir / gerekir mi? Tam tersi: RabbitMQ, ActiveMQ, Apollo vb. Gibi geleneksel MQ'lar veri akışı için kullanılabilir mi?
Bir uygulamanın işlenmesi gereken JSON mesajlarının arka uç sabit barajını göndereceği ve işlemenin oldukça karmaşık olduğu bir örnek alalım (doğrulama, veri üzerinde dönüşümler, filtreleme, toplamalar vb.):
- Durum # 1: Mesajlar bir filmin her karesidir; kare verilerini ve bazı destekleyici meta verileri içeren her video karesi için bir JSON iletisidir.
- Durum # 2: Mesajlar zaman serisi verileridir, belki de zamanın bir fonksiyonu olarak birinin kalp atışı. Bu yüzden # 1 numaralı mesaj, t = 1'deki kalp atışımı temsil eder, # 2 numaralı mesaj, t = 2'deki vb.
- Durum # 3: Veriler tamamen farklıdır ve zamana göre veya herhangi bir "veri akışının" bir parçası değildir. Belki de yüzlerce kullanıcı düğmelere tıklayarak ve işlem yaparken uygulamada gezinirken tetiklenen denetim / güvenlik olayları
Kafka / Kinesis'in nasıl faturalandırıldığına ve "veri akışı" nın ne olduğuyla ilgili anlayışım temelinde, Durum 1 # (bitişik video verileri) ve # 2 (bitişik zaman serisi verileri) için açık adaylar gibi görünüyorlar. Ancak RabbitMQ gibi geleneksel mesaj komisyoncu bir neden görmüyorum olamazdı verimli yanı her iki girdileri işlemek.
Durum 3 ile, yalnızca gerçekleşen bir olay bize sunulur ve bu olaya bir tepki vermemiz gerekir. Yani bana göre bu, RabbitMQ gibi geleneksel bir brokere ihtiyaç duyuyor. Ama aynı zamanda Kafka veya Kinesis'in olay verilerinin işlenmesini sağlayamamanız için hiçbir neden yok.
Yani temelde, şöyle bir değerlendirme listesi oluşturmak istiyorum : Y özellikli X verilerim var. Bunu işlemek için Kafka / Kinesis gibi bir akış işlemcisi kullanmalıyım. Ya da tam tersine, belirlememe yardımcı olan: Z özellikli W verilerim var. Bunu işlemek için geleneksel bir mesaj komisyoncusu kullanmalıyım.
Bu yüzden soruyorum: Veriler (veya başka türlü) ile ilgili hangi faktörler, her ikisi de akış verilerini işleyebildiğinden ve her ikisi de (akışsız) mesaj verilerini işleyebildiğinden, akış işlemcisi veya ileti aracısı arasındaki kararı yönlendirmeye yardımcı olur?