Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
Dalam posting ini, kami akan mencoba membandingkan dan menetapkan beberapa perbedaan di dua broker pesan paling populer, RabbitMQ dan Apache Kafka.

Kapan pun kami ingin mengintegrasikan perantara pesan ke dalam aplikasi kami yang memungkinkan kami untuk menskalakan dengan mudah dan menghubungkan sistem kami secara asinkron, ada banyak perantara pesan yang dapat membuat daftar dari mana Anda diminta untuk memilih salah satu, seperti:

Masing-masing broker pesan ini memiliki daftar pro dan kontra sendiri, tetapi opsi yang paling menantang adalah dua yang pertama, RabbitMQ dan Apache Kafka. Dalam pelajaran ini, kami akan membuat daftar poin-poin yang dapat membantu mempersempit keputusan untuk memilih satu dari yang lain. Akhirnya, perlu ditunjukkan bahwa tidak ada yang lebih baik dari yang lain dalam semua kasus penggunaan dan itu sepenuhnya tergantung pada apa yang ingin Anda capai, jadi tidak ada satu jawaban yang benar!

Kami akan mulai dengan pengenalan sederhana alat-alat ini these.

Apache Kafka

Seperti yang kami katakan dalam pelajaran ini, Apache Kafka adalah log komit yang terdistribusi, toleran terhadap kesalahan, dapat diskalakan secara horizontal. Ini berarti bahwa Kafka dapat melakukan pembagian dan aturan dengan sangat baik, dapat mereplikasi data Anda untuk memastikan ketersediaan dan sangat skalabel dalam arti bahwa Anda dapat menyertakan server baru saat runtime untuk meningkatkan kapasitasnya untuk mengelola lebih banyak pesan.

Kafka Produsen dan Konsumen and

KelinciMQ

RabbitMQ adalah tujuan yang lebih umum dan lebih sederhana untuk menggunakan broker pesan yang dengan sendirinya menyimpan catatan tentang pesan apa yang telah dikonsumsi oleh klien dan bertahan yang lain. Bahkan jika karena alasan tertentu server RabbitMQ down, Anda dapat yakin bahwa pesan yang saat ini ada di antrian telah disimpan di Filesystem sehingga ketika RabbitMQ muncul kembali, pesan tersebut dapat diproses oleh konsumen secara konsisten.

RabbitMQ Bekerja

Kekuatan Super: Apache Kafka

Kekuatan super utama Kafka adalah dapat digunakan sebagai sistem antrian tetapi bukan itu yang terbatas pada. Kafka adalah sesuatu yang lebih seperti penyangga melingkar yang dapat menskalakan sebesar disk pada mesin di cluster, sehingga memungkinkan kami untuk dapat membaca ulang pesan. Ini dapat dilakukan oleh klien tanpa harus bergantung pada klaster Kafka karena klien sepenuhnya bertanggung jawab untuk mencatat metadata pesan yang sedang dibacanya dan dapat mengunjungi kembali Kafka nanti dalam interval tertentu untuk membaca pesan yang sama lagi.

Harap dicatat bahwa waktu di mana pesan ini dapat dibaca kembali terbatas dan dapat dikonfigurasi dalam konfigurasi Kafka. Jadi, setelah waktu itu habis, tidak mungkin klien dapat membaca pesan lama lagi.

Kekuatan Super: RabbitMQ

Kekuatan super utama RabbitMQ adalah skalabilitasnya yang sederhana, merupakan sistem antrian berkinerja tinggi yang memiliki aturan konsistensi yang terdefinisi dengan baik, dan kemampuan untuk membuat berbagai jenis model pertukaran pesan. Misalnya, ada tiga jenis pertukaran yang dapat Anda buat di RabbitMQ:

  1. Pertukaran Langsung: Pertukaran topik satu lawan satu
  2. Pertukaran Topik: A tema didefinisikan di mana berbagai produsen dapat mempublikasikan pesan dan berbagai konsumen dapat mengikat diri untuk mendengarkan topik itu, sehingga masing-masing dari mereka menerima pesan yang dikirim ke topik ini.
  3. Pertukaran fanout: Ini lebih ketat daripada pertukaran topik karena ketika sebuah pesan dipublikasikan di pertukaran fanout, semua konsumen yang terhubung ke antrian yang mengikat dirinya ke pertukaran fanout akan menerima pesan tersebut.

Sudah memperhatikan perbedaannya antara RabbitMQ dan Kafka? Bedanya, jika konsumen tidak terhubung ke pertukaran fanout di RabbitMQ saat pesan dipublikasikan, pesan tersebut akan hilang karena konsumen lain telah mengkonsumsi pesan tersebut, tetapi ini tidak terjadi di Apache Kafka karena konsumen mana pun dapat membaca pesan apa pun. sebagai mereka mempertahankan kursor mereka sendiri.

RabbitMQ adalah broker-sentris

Broker yang baik adalah seseorang yang menjamin pekerjaan yang dilakukannya sendiri dan itulah keahlian RabbitMQ. Itu miring ke arah jaminan pengiriman antara produsen dan konsumen, dengan pesan yang lebih disukai sementara daripada pesan yang tahan lama.

RabbitMQ menggunakan broker itu sendiri untuk mengelola status pesan dan memastikan bahwa setiap pesan terkirim ke setiap konsumen yang berhak.

RabbitMQ menganggap bahwa sebagian besar konsumen sedang online.

Kafka adalah produser-sentris

Apache Kafka adalah produsen-sentris karena sepenuhnya didasarkan pada partisi dan aliran paket acara yang berisi data dan mengubahnya menjadi perantara pesan yang tahan lama dengan kursor, mendukung konsumen batch yang mungkin offline, atau konsumen online yang menginginkan pesan dengan latensi rendah.

Kafka memastikan bahwa pesan tetap aman sampai jangka waktu tertentu dengan mereplikasi pesan pada node di cluster dan mempertahankan keadaan yang konsisten.

Jadi, Kafka tidak menganggap bahwa salah satu konsumennya sebagian besar online dan tidak peduli.

Pemesanan Pesan

Dengan RabbitMQ, pesanan penerbitan dikelola secara konsisten dan konsumen akan menerima pesan dalam pesanan yang diterbitkan itu sendiri. Di sisi lain, Kafka tidak melakukannya karena menganggap pesan yang diterbitkan bersifat berat sehingga konsumen lambat dan dapat mengirim pesan dalam urutan apa pun, sehingga tidak mengelola pesanannya sendiri juga. Padahal, kita dapat menyiapkan topologi serupa untuk mengelola pesanan di Kafka menggunakan pertukaran hash yang konsisten atau plugin sharding., atau bahkan lebih banyak jenis topologi.

Tugas lengkap yang dikelola oleh Apache Kafka adalah untuk bertindak seperti "peredam kejut" antara aliran peristiwa yang berkelanjutan dan konsumen di mana beberapa dari mereka online dan yang lain dapat offline - hanya memakan batch per jam atau bahkan setiap hari.

Kesimpulan

Dalam pelajaran ini, kita mempelajari perbedaan utama (dan juga persamaan) antara Apache Kafka dan RabbitMQ. Di beberapa lingkungan, keduanya telah menunjukkan kinerja yang luar biasa seperti RabbitMQ mengkonsumsi jutaan pesan per detik dan Kafka telah mengkonsumsi beberapa juta pesan per detik. Perbedaan arsitektur utama adalah bahwa RabbitMQ mengelola pesannya hampir di dalam memori dan karenanya, menggunakan cluster besar (30+ node), sedangkan Kafka benar-benar memanfaatkan kekuatan operasi I/O disk sekuensial dan membutuhkan lebih sedikit perangkat keras.

Sekali lagi, penggunaan masing-masing masih tergantung sepenuhnya pada kasus penggunaan dalam suatu aplikasi. Selamat berkirim pesan !

Cara Menggunakan Xdotool untuk Merangsang Klik Mouse dan Keystroke di Linux
Xdotool adalah alat baris perintah sumber terbuka dan gratis untuk mensimulasikan klik mouse dan penekanan tombol. Artikel ini akan membahas panduan s...
5 Produk Mouse Komputer Ergonomis Terbaik untuk Linux
Apakah penggunaan komputer yang lama menyebabkan rasa sakit di pergelangan tangan atau jari Anda?? Apakah Anda menderita persendian yang kaku dan teru...
Cara Mengubah Pengaturan Mouse dan Touchpad Menggunakan Xinput di Linux
Sebagian besar distribusi Linux dikirimkan dengan pustaka "libinput" secara default untuk menangani kejadian input pada sistem. Ini dapat memproses ke...