Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
Dalam catatan ini, kami akan cuba membandingkan dan mewujudkan beberapa perbezaan dalam dua broker mesej paling popular, RabbitMQ dan Apache Kafka.

Setiap kali kami mahu menggabungkan broker mesej ke dalam aplikasi kami yang membolehkan kami membuat skala dengan mudah dan menghubungkan sistem kami dengan cara yang tidak segerak, terdapat banyak broker mesej yang dapat membuat senarai dari mana anda dibuat untuk memilihnya, seperti:

Setiap broker mesej ini mempunyai senarai kebaikan dan keburukan mereka tetapi pilihan yang paling mencabar adalah dua yang pertama, RabbitMQ dan Apache Kafka. Dalam pelajaran ini, kami akan menyenaraikan perkara-perkara yang dapat membantu menyempitkan keputusan untuk memilih yang lain. Akhirnya, perlu dinyatakan bahawa tidak ada yang lebih baik daripada yang lain dalam semua kes penggunaan dan bergantung sepenuhnya kepada apa yang anda ingin capai, jadi tidak ada satu jawapan yang tepat!

Kami akan memulakan dengan pengenalan alat ini dengan mudah.

Apache Kafka

Seperti yang kami katakan dalam pelajaran ini, Apache Kafka adalah log yang terdistribusi, bertoleransi kesalahan, berskala mendatar,. Ini bermaksud bahawa Kafka dapat menjalankan istilah pembahagi dan aturan dengan sangat baik, ia dapat meniru data anda untuk memastikan ketersediaan dan sangat diskalakan dalam arti bahawa anda dapat memasukkan pelayan baru pada waktu runtime untuk meningkatkan kemampuannya untuk menguruskan lebih banyak mesej.

Pengeluar dan Pengguna Kafka

ArnabMQ

RabbitMQ adalah broker mesej yang lebih umum dan lebih senang digunakan yang dengan sendirinya menyimpan catatan tentang mesej yang telah digunakan oleh pelanggan dan meneruskan pesanan yang lain. Walaupun, atas sebab tertentu, pelayan RabbitMQ dimatikan, anda boleh yakin bahawa mesej yang ada pada barisan antrian telah disimpan di Sistem Filesy sehingga apabila RabbitMQ kembali muncul, mesej tersebut dapat diproses oleh pengguna secara konsisten.

RabbitMQ Berfungsi

Kuasa Super: Apache Kafka

Kuasa super utama Kafka adalah bahawa ia boleh digunakan sebagai sistem antrian tetapi itu tidak terhad kepada. Kafka adalah sesuatu yang lebih mirip penyangga bulat yang boleh skala sebanyak cakera pada mesin di kluster, dan dengan itu membolehkan kita dapat membaca semula mesej. Perkara ini dapat dilakukan oleh klien tanpa harus bergantung pada kluster Kafka kerana sepenuhnya menjadi tanggungjawab pelanggan untuk memperhatikan metadata mesej yang sedang dibacanya dan ia dapat melihat kembali Kafka kemudian dalam selang waktu yang ditentukan untuk membaca semula mesej yang sama.

Harap maklum bahawa masa di mana mesej ini dapat dibaca semula adalah terhad dan dapat dikonfigurasi dalam konfigurasi Kafka. Oleh itu, setelah masa itu berakhir, tidak mungkin pelanggan dapat membaca mesej lama lagi.

Kuasa Super: RabbitMQ

Kuasa super utama RabbitMQ adalah bahawa ia hanya boleh diskalakan, adalah sistem antrian berprestasi tinggi yang mempunyai peraturan konsistensi yang sangat jelas, dan kemampuan untuk membuat banyak jenis model pertukaran mesej. Contohnya, terdapat tiga jenis pertukaran yang boleh anda buat di RabbitMQ:

  1. Pertukaran Langsung: Pertukaran topik satu demi satu
  2. Pertukaran Topik: A topik didefinisikan di mana pelbagai pengeluar dapat menerbitkan mesej dan pelbagai pengguna dapat mengikat diri mereka untuk mendengar topik itu, sehingga masing-masing dari mereka menerima mesej yang dikirim ke topik ini.
  3. Pertukaran fanout: Ini lebih ketat daripada pertukaran topik kerana ketika mesej diterbitkan di fanout exchange, semua pengguna yang tersambung ke barisan yang mengikat dirinya dengan pertukaran fanout akan menerima mesej.

Sudah menyedari perbezaannya antara RabbitMQ dan Kafka? Perbezaannya adalah, jika pengguna tidak tersambung ke pertukaran fanout di RabbitMQ ketika mesej diterbitkan, ia akan hilang kerana pengguna lain telah menggunakan mesej tersebut, tetapi ini tidak berlaku di Apache Kafka kerana mana-mana pengguna dapat membaca sebarang mesej sebagai mereka mengekalkan kursor mereka sendiri.

RabbitMQ berpusat pada broker

Broker yang baik adalah seseorang yang menjamin pekerjaan yang dilakukannya sendiri dan itulah yang diinginkan oleh RabbitMQ. Ia condong ke arah jaminan penghantaran antara pengeluar dan pengguna, dengan pilihan sementara daripada mesej tahan lama.

RabbitMQ menggunakan broker itu sendiri untuk menguruskan keadaan mesej dan memastikan bahawa setiap mesej dihantar kepada setiap pengguna yang berhak.

RabbitMQ menganggap bahawa pengguna kebanyakannya dalam talian.

Kafka berpusat pada pengeluar

Apache Kafka berpusat pada pengeluar kerana berdasarkan sepenuhnya pada pemisahan dan aliran paket acara yang mengandungi data dan mengubahnya menjadi broker mesej tahan lama dengan kursor, menyokong pengguna kumpulan yang mungkin di luar talian, atau pengguna dalam talian yang menginginkan mesej pada latensi rendah.

Kafka memastikan bahawa mesej tetap selamat sehingga jangka masa yang ditentukan dengan mereplikasi mesej pada nodenya dalam kluster dan mengekalkan keadaan yang konsisten.

Jadi, Kafka tidak menganggap bahawa mana-mana penggunanya kebanyakannya dalam talian dan tidak peduli.

Pesanan Mesej

Dengan RabbitMQ, pesanannya penerbitan diuruskan secara konsisten dan pengguna akan menerima mesej dalam pesanan yang diterbitkan itu sendiri. Di sisi lain, Kafka tidak melakukannya kerana menganggap mesej yang diterbitkan sangat berat sehingga pengguna lambat dan dapat menghantar pesanan dalam pesanan apa pun, jadi ia juga tidak menguruskan pesanannya sendiri. Walaupun begitu, kita dapat membuat topologi serupa untuk mengatur pesanan di Kafka menggunakan pertukaran hash yang konsisten atau pelindung pelindung., atau lebih banyak lagi jenis topologi.

Tugas lengkap yang dikendalikan oleh Apache Kafka adalah bertindak sebagai "penyerap kejutan" antara aliran peristiwa yang berterusan dan pengguna yang sebahagiannya dalam talian dan yang lain boleh berada di luar talian - hanya memakan banyak setiap jam atau bahkan setiap hari.

Kesimpulannya

Dalam pelajaran ini, kami mengkaji perbezaan utama (dan juga persamaan) antara Apache Kafka dan RabbitMQ. Di beberapa persekitaran, kedua-duanya telah menunjukkan prestasi luar biasa seperti RabbitMQ menghabiskan berjuta-juta mesej sesaat dan Kafka telah menghabiskan beberapa juta mesej sesaat. Perbezaan seni bina utama adalah bahawa RabbitMQ menguruskan mesejnya hampir dalam memori dan dengan itu, menggunakan kluster besar (30+ nod), sedangkan Kafka sebenarnya menggunakan kekuatan operasi I / O cakera berurutan dan memerlukan lebih sedikit perkakasan.

Sekali lagi, penggunaan masing-masing masih bergantung sepenuhnya pada kes penggunaan dalam aplikasi. Selamat menghantar pesanan !

Cara Menggunakan Xdotool untuk Merangsang Klik dan Penekanan Tetikus di Linux
Xdotool adalah alat baris arahan sumber terbuka dan bebas untuk mensimulasikan klik dan tekan kekunci tetikus. Artikel ini akan merangkumi panduan rin...
5 Produk Tetikus Komputer Ergonomik Teratas untuk Linux
Adakah penggunaan komputer yang berpanjangan menyebabkan rasa sakit di pergelangan tangan atau jari anda? Adakah anda mengalami sendi kaku dan selalu ...
Cara Mengubah Tetapan Tetikus dan Pad Sentuh Menggunakan Xinput di Linux
Sebilangan besar pengedaran Linux dihantar dengan perpustakaan "libinput" secara lalai untuk menangani peristiwa input pada sistem. Ia dapat memproses...