Anda menggunakan Apache Kafka sebagai antrian terdistribusi dan kuat yang dapat menangani data volume tinggi dan memungkinkan Anda meneruskan pesan dari satu titik akhir ke titik akhir lainnya.
Badai bukanlah antrian. Ini adalah sistem yang telah mendistribusikan kemampuan pemrosesan waktu nyata, yang berarti Anda dapat mengeksekusi semua jenis manipulasi pada data waktu nyata secara paralel.
Alur umum dari alat-alat ini (seperti yang saya ketahui) adalah sebagai berikut:
real-time-system -> Kafka -> Storm -> NoSql -> BI (opsional)
Jadi, Anda memiliki aplikasi waktu nyata yang menangani data volume tinggi, mengirimkannya ke antrean Kafka. Storm menarik data dari kafka dan menerapkan beberapa manipulasi yang diperlukan. Pada titik ini Anda biasanya ingin mendapatkan beberapa manfaat dari data ini, jadi Anda dapat mengirimkannya ke beberapa Nosql db untuk penghitungan BI tambahan, atau Anda dapat menanyakan NoSql ini dari sistem lain.
Kafka dan Storm memiliki tujuan yang sedikit berbeda:
Kafka adalah broker pesan terdistribusi yang dapat menangani pesan dalam jumlah besar per detik. Ia menggunakan paradigma publish-subscribe dan bergantung pada topik dan partisi. Kafka menggunakan Zookeeper untuk berbagi dan menyelamatkan negara antar broker. Jadi Kafka pada dasarnya bertanggung jawab untuk mentransfer pesan dari satu mesin ke mesin lainnya.
Storm adalah sistem analitik real-time yang skalabel, toleran terhadap kesalahan (berpikir seperti Hadoop dalam waktu nyata). Ini mengkonsumsi data dari sumber (Spouts) dan meneruskannya ke pipa (Bolts). Anda dapat menggabungkannya dalam topologi. Jadi Storm pada dasarnya adalah unit komputasi (agregasi, pembelajaran mesin).
Tetapi Anda dapat menggunakannya bersama-sama: misalnya aplikasi Anda menggunakan kafka untuk mengirim data ke server lain yang menggunakan badai untuk membuat beberapa perhitungan di atasnya.
sumber
Saya tahu bahwa ini adalah utas yang lebih lama dan perbandingan Apache Kafka dan Storm valid dan benar ketika ditulis, tetapi perlu dicatat bahwa Apache Kafka telah berkembang pesat selama bertahun-tahun dan sejak versi 0.10 (April 2016) Kafka telah disertakan API Kafka Streams yang menyediakan kemampuan pemrosesan aliran tanpa memerlukan perangkat lunak tambahan seperti Storm. Kafka juga menyertakan Connect API untuk menghubungkan ke berbagai sumber dan sink (tujuan) data.
Blog pengumuman - https://www.confluent.io/blog/introducing-kafka-streams-stream-processing-made-simple/
Dokumentasi Apache saat ini - https://kafka.apache.org/documentation/streams/
Dalam 0.11 Kafka, fungsi pemrosesan aliran diperluas lebih lanjut untuk menyediakan Semantik dan Transaksi Tepat Sekali.
https://www.confluent.io/blog/exactly-once-semantics-are-possible-heres-how-apache-kafka-does-it/
sumber
Begini Cara kerjanya
Kafka - Untuk menyediakan streaming waktu nyata
Storm - Untuk melakukan beberapa operasi di aliran itu
Anda dapat melihat proyek GitHub https://github.com/abhishekgoel137/kafka-nodejs-d3js .
(D3js adalah pustaka representasi grafik)
Kasus ideal:
Repositori ini didasarkan pada:
sumber
Seperti yang dijelaskan semua orang bahwa Apache Kafka: adalah antrean perpesanan berkelanjutan
Apache Storm: adalah alat pemrosesan berkelanjutan
di sini, dalam aspek ini Kafka akan mendapatkan data dari situs web mana pun seperti FB, Twitter dengan menggunakan API dan data tersebut diproses dengan menggunakan Apache Storm dan Anda dapat menyimpan data yang diproses baik di database mana pun yang Anda suka.
https://github.com/miguno/kafka-storm-starter
Ikuti saja Anda akan mendapatkan beberapa ide
sumber
Ketika saya memiliki kasus penggunaan yang mengharuskan saya untuk memvisualisasikan atau mewaspadai pola (pikirkan tren twitter), sambil terus memproses kejadian, saya memiliki beberapa pola.
NiFi akan memungkinkan saya untuk memproses sebuah acara dan memperbarui penyimpanan data yang persisten dengan agregasi batch yang rendah (er) dengan pengkodean khusus yang sangat, sangat sedikit.
Storm (banyak pengkodean khusus) memungkinkan saya mengakses hampir secara waktu nyata ke acara yang sedang tren.
Jika saya bisa menunggu beberapa detik, maka saya bisa keluar dari kafka, menjadi hdfs (Parquet) dan proses.
Jika saya perlu tahu dalam hitungan detik, saya perlu NiFi, dan bahkan mungkin Storm. (Pikirkan memantau ribuan stasiun bumi, di mana saya perlu melihat kondisi cuaca wilayah kecil untuk peringatan tornado).
sumber
Cukup Kafka mengirim pesan dari node ke node lain, dan Storm memproses pesan tersebut. Lihat contoh bagaimana Anda dapat Mengintegrasikan Apache Kafka Dengan Storm
sumber