Apache Kafka

RabbitMQ vs Apache Kafka

RabbitMQ vs Apache Kafka
In diesem Beitrag werden wir versuchen, einige Unterschiede zwischen den beiden beliebtesten Message Brokern RabbitMQ und Apache Kafka zu vergleichen und festzustellen.

Wann immer wir Message Broker in unsere Anwendung integrieren möchten, die uns eine einfache Skalierung und eine asynchrone Verbindung unseres Systems ermöglicht, gibt es viele Message Broker, die eine Liste erstellen können, aus der Sie einen auswählen können, wie zum Beispiel:

Jeder dieser Message Broker hat seine eigene Liste mit Vor- und Nachteilen, aber die schwierigsten Optionen sind die ersten beiden, RabbitMQ und Apache Kafka. In dieser Lektion werden wir Punkte auflisten, die helfen können, die Entscheidung, sich füreinander zu entscheiden, einzugrenzen. Schließlich ist es erwähnenswert, dass keines davon in allen Anwendungsfällen besser ist als das andere und es völlig davon abhängt, was Sie erreichen möchten es gibt keine richtige antwort!

Wir beginnen mit einer einfachen Einführung dieser Tools.

Apache Kafka

Wie wir in dieser Lektion gesagt haben, ist Apache Kafka ein verteiltes, fehlertolerantes, horizontal skalierbares Commit-Log. Dies bedeutet, dass Kafka einen Teilungs- und Regelbegriff sehr gut ausführen kann, Ihre Daten replizieren kann, um die Verfügbarkeit zu gewährleisten, und in dem Sinne hoch skalierbar ist, dass Sie zur Laufzeit neue Server einbinden können, um die Kapazität für die Verwaltung von mehr Nachrichten zu erhöhen.

Kafka Produzent und Konsument

KaninchenMQ

RabbitMQ ist ein allgemeinerer und einfacher zu verwendender Nachrichtenbroker, der selbst aufzeichnet, welche Nachrichten vom Client konsumiert wurden und die anderen beibehalten. Selbst wenn der RabbitMQ-Server aus irgendeinem Grund ausfällt, können Sie sicher sein, dass die Nachrichten, die sich derzeit in Warteschlangen befinden, im Dateisystem gespeichert wurden, sodass diese Nachrichten von den Verbrauchern konsistent verarbeitet werden können, wenn RabbitMQ wieder hochfährt.

RabbitMQ funktioniert

Supermacht: Apache Kafka

Kafkas Hauptsupermacht besteht darin, dass es als Warteschlangensystem verwendet werden kann, aber das ist nicht darauf beschränkt. Kafka ist so etwas wie ein Ringpuffer die bis zu einer Festplatte auf dem Computer im Cluster skalieren kann und es uns somit ermöglicht, Nachrichten erneut zu lesen. Dies kann vom Client durchgeführt werden, ohne vom Kafka-Cluster abhängig zu sein, da es vollständig in der Verantwortung des Kunden liegt, die Nachrichten-Metadaten zu notieren, die er gerade liest, und er kann Kafka später in einem bestimmten Intervall erneut besuchen, um dieselbe Nachricht erneut zu lesen read.

Bitte beachten Sie, dass die Zeit, in der diese Nachricht erneut gelesen werden kann, begrenzt ist und in der Kafka-Konfiguration konfiguriert werden kann. Wenn diese Zeit vorbei ist, kann ein Kunde keine ältere Nachricht mehr lesen.

Superkraft: RabbitMQ

Die Hauptsupermacht von RabbitMQ besteht darin, dass es einfach skalierbar ist, ein hochperformantes Warteschlangensystem mit sehr gut definierten Konsistenzregeln und der Fähigkeit, viele Arten von Nachrichtenaustauschmodellen zu erstellen. Es gibt beispielsweise drei Arten von Austausch, die Sie in RabbitMQ erstellen können:

  1. Direkter Austausch: Eins zu eins Austausch von Themen
  2. Themenaustausch: A Thema ist definiert, auf dem verschiedene Produzenten eine Nachricht veröffentlichen können und verschiedene Verbraucher sich verpflichten können, dieses Thema zu hören, sodass jeder von ihnen die Nachricht erhält, die zu diesem Thema gesendet wird.
  3. Fanout-Austausch: Dies ist strenger als der Themenaustausch, denn wenn eine Nachricht auf einem Fanout-Austausch veröffentlicht wird, erhalten alle Verbraucher, die mit Warteschlangen verbunden sind, die sich an den Fanout-Austausch binden, die Nachricht.

Habe schon den Unterschied bemerkt zwischen RabbitMQ und Kafka? Der Unterschied besteht darin, dass ein Consumer, der bei der Veröffentlichung einer Nachricht nicht mit einem Fanout-Austausch in RabbitMQ verbunden ist, verloren geht, weil andere Consumer die Nachricht konsumiert haben, aber dies passiert in Apache Kafka nicht, da jeder Consumer jede Nachricht lesen kann wie sie pflegen ihren eigenen Cursor.

RabbitMQ ist Broker-zentriert

Ein guter Broker ist jemand, der die Arbeit garantiert, die er auf sich nimmt, und darin ist RabbitMQ gut. Es ist in Richtung geneigt Liefergarantien zwischen Erzeugern und Verbrauchern, wobei vorübergehende Nachrichten gegenüber dauerhaften Nachrichten bevorzugt werden.

RabbitMQ verwendet den Broker selbst, um den Status einer Nachricht zu verwalten und sicherzustellen, dass jede Nachricht an jeden berechtigten Verbraucher zugestellt wird.

RabbitMQ geht davon aus, dass die Verbraucher hauptsächlich online sind.

Kafka ist herstellerorientiert

Apache Kafka ist herstellerzentriert, da es vollständig auf Partitionierung und einem Stream von Ereignispaketen mit Daten basiert und diese mit Cursorn in dauerhafte Nachrichtenbroker umwandelt, die Batch-Consumer unterstützen, die möglicherweise offline sind, oder Online-Consumer, die Nachrichten mit geringer Latenz wünschen.

Kafka stellt sicher, dass die Nachricht bis zu einem bestimmten Zeitraum sicher bleibt, indem sie die Nachricht auf ihren Knoten im Cluster repliziert und einen konsistenten Zustand aufrechterhält.

Also, Kafka nicht gehen davon aus, dass einer seiner Verbraucher hauptsächlich online ist, und es interessiert ihn auch nicht.

Nachrichtenbestellung

Mit RabbitMQ ist die Bestellung des Verlagswesens wird konsequent gemanagt und Verbraucher erhalten die Nachricht in der veröffentlichten Bestellung selbst. Auf der anderen Seite tut Kafka dies nicht, da es davon ausgeht, dass veröffentlichte Nachrichten von Natur aus schwer sind, sodass die Verbraucher langsam sind und Nachrichten in beliebiger Reihenfolge senden können, sodass sie die Reihenfolge nicht auch selbst verwaltet. Wir können jedoch eine ähnliche Topologie einrichten, um die Bestellung in Kafka mit der konsequenter Hash-Austausch oder Sharding-Plugin., oder noch mehr Arten von Topologien.

Die gesamte von Apache Kafka verwaltete Aufgabe besteht darin, wie ein „Stoßdämpfer“ zwischen dem kontinuierlichen Fluss von Ereignissen und den Verbrauchern zu fungieren, von denen einige online und andere offline sein können – nur stündlich oder sogar täglich stapelweise.

Fazit

In dieser Lektion haben wir die Hauptunterschiede (und auch Ähnlichkeiten) zwischen Apache Kafka und RabbitMQ untersucht. In einigen Umgebungen haben beide eine außergewöhnliche Leistung gezeigt, wie z. B. RabbitMQ verbraucht Millionen von Nachrichten pro Sekunde und Kafka hat mehrere Millionen Nachrichten pro Sekunde verbraucht. Der Hauptunterschied in der Architektur besteht darin, dass RabbitMQ seine Nachrichten fast im Arbeitsspeicher verwaltet und daher einen großen Cluster (über 30 Knoten) verwendet, während Kafka tatsächlich die Möglichkeiten sequenzieller Platten-I/O-Operationen nutzt und weniger Hardware benötigt.

Auch hier hängt die Verwendung von jedem von ihnen immer noch vollständig vom Anwendungsfall in einer Anwendung ab. Fröhliche Nachrichten !

So ändern Sie die Maus- und Touchpad-Einstellungen mit Xinput in Linux
Die meisten Linux-Distributionen werden standardmäßig mit der Bibliothek „libinput“ ausgeliefert, um Eingabeereignisse auf einem System zu verarbeiten...
Weisen Sie Ihre Maustasten mit der X-Mouse Button Control für verschiedene Software unterschiedlich zu
Vielleicht benötigen Sie ein Tool, mit dem sich die Steuerung Ihrer Maus bei jeder von Ihnen verwendeten Anwendung ändern kann. In diesem Fall können ...
Microsoft Sculpt Touch Wireless-Maus Bewertung
Ich habe vor kurzem gelesen, dass Microsoft Sculpt Touch kabellose Maus und beschloss, sie zu kaufen. Nachdem ich es eine Weile benutzt hatte, beschlo...