Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 12210|Antwort: 0

Technische Auswahlanalyse der Nachrichtenwarteschlangen-Middleware

[Link kopieren]
Veröffentlicht am 15.12.2016 10:52:40 | | | |
Nachrichten-Middleware ist eine Middleware-Technologie, die aus einem Nachrichtenübertragungsmechanismus oder Nachrichtenwarteschlangenmodus besteht, der einen effizienten und zuverlässigen Messaging-Mechanismus für plattformunabhängigen Datenaustausch nutzt und verteilte Systeme auf Basis von Datenkommunikation integriert. Derzeit gibt es viele MQ-Produkte in der Branche, wie RabbitMQ, ActiveMQ, ZeroMQ usw., die ausgezeichnete Nachrichten-Middleware sind, aber welches sollten wir im Projekt wählen? Dieses Paper bewertet und vergleicht die folgenden Nachrichtenwarteschlangenprodukte: RabbitMQ, ZeroMQ, ActiveMQ, MSMQ, Redis und memcacheQ

Abschweifung: Hier können wir zunächst über eine kleine Frage nachdenken: "Warum brauchen wir Nachrichtenwarteschlangendienste in Webanwendungen?" ”
Zum Beispiel kommen viele Einfügungs-, Update- und andere Anfragen gleichzeitig bei MySQL ein, was direkt zu unzähligen Zeilen- und Tabellensperrungen und sogar zu vielen Anfragen führt, was zu vielen Verbindungsfehlern führt. Durch die Verwendung von Nachrichtenwarteschlangen können wir Anfragen asynchron verarbeiten und so die Belastung des Systems verringern.

RabbitMQ
Es handelt sich um eine Open-Source-Nachrichtenwarteschlange, die in Erlang geschrieben ist und viele Protokolle unterstützt: AMQP, XMPP, SMTP, STOMP, was sie sehr schwer und besser für die Entwicklung auf Unternehmensebene geeignet macht. Es ist eine führende Implementierung des AMQP-Protokolls, das eine Broker-Architektur implementiert, was bedeutet, dass Nachrichten auf einem zentralen Knoten in die Warteschlange gelegt werden können, bevor sie an den Client gesendet werden. Es gibt gute Unterstützung für Routing, Lastverteilung oder Datenpersistenz. Diese Funktion macht RabbitMQ einfach zu bedienen und einzusetzen, geeignet für viele Szenarien wie Routing, Lastverteilung oder Nachrichtenpersistenz und kann mit nur wenigen Codezeilen mit Nachrichtenwarteschlangen umgesetzt werden. Dies macht es jedoch weniger skalierbar und langsamer, da der zentrale Knoten die Latenz erhöht und nach der Kapselung der Nachricht größer ist. Um RabbitMQ zu konfigurieren, musst du die Erlang-Umgebung auf dem Zielrechner installieren.
Klicken Sie, um dieses Bild in einem neuen Fenster anzusehen

? MQ(ZeroMQ)
Es gilt als das schnellste Nachrichten-Warteschlangensystem, insbesondere für Szenarien mit hoher Durchsatzbedarf. Es handelt sich um ein sehr leichtes Messaging-System, das speziell für Szenarien mit hoher Durchsatzrate und niedriger Latenz entwickelt wurde und häufig in Anwendungen in der Finanzwelt zu finden ist. Im Vergleich zu RabbitMQ unterstützt ZeroMQ viele fortgeschrittene Nachrichtenszenarien, aber man muss einzelne Blöcke im ZeroMQ-Framework implementieren (wie Sockets oder Geräte usw.).

? MQ (ZeroMQ) kann fortgeschrittene/komplexe Warteschlangen implementieren, in denen RabbitMQ nicht gut ist, aber Entwickler müssen mehrere technische Frameworks selbst kombinieren, und die technische Komplexität stellt eine Herausforderung für die erfolgreiche Anwendung dieses MQ dar. ZeroMQ hat ein einzigartiges Nicht-Middleware-Modell, bei dem man keinen Nachrichtenserver oder Middleware installieren und betreiben muss, weil die Anwendung diese Servicerolle übernimmt. Alles, was du tun musst, ist, auf die ZeroMQ-Bibliothek zu verweisen, die mit NuGet installiert werden kann, und du kannst problemlos Nachrichten zwischen Anwendungen senden. ZeroMQ stellt jedoch nur nicht-persistente Warteschlangen bereit, was bedeutet, dass bei einem Ausfall der Maschine die Daten verloren gehen. Darunter nutzt Twitters Storm ZeroMQ zur Übertragung von Datenströmen. ZeroMQ ist sehr flexibel, aber du musst das 80-seitige Handbuch lernen (wenn du über ein verteiltes System schreibst, lies es unbedingt durch).

ZeroMQ hat keine Middleware-Architektur und benötigt keine Serviceprozesse und -ausläufe. Tatsächlich übernimmt dein Anwendungsendpunkt diese Service-Rolle. Das macht die Bereitstellung sehr einfach, aber die Sorge ist, dass man keinen Ort hat, an den man schauen kann, falls etwas schiefgeht. Soweit wir wissen, bietet ZeroMQ nur nicht-persistente Warteschlangen an. Sie können Ihre eigenen Audit- und Datenwiederherstellungsfunktionen dort implementieren, wo Sie sie benötigen.
Klicken Sie, um dieses Bild in einem neuen Fenster anzusehen

MSMQ
Das ist das Einzige in Microsofts Produkt, das als wertvoll gilt. Wenn MSMQ nachweisen kann, dass es diese Aufgabe bewältigen kann, werden sie sich entscheiden, es zu verwenden. Der Punkt ist, dass dieses Ding nicht kompliziert ist, nichts als Empfangen und Senden; Es gibt einige harte Einschränkungen, wie zum Beispiel die maximale Nachrichtengröße von 4 MB. Diese Probleme können jedoch gelöst werden, indem sie sich mit Software wie MassTransit oder NServiceBus verbindet.
Klicken Sie, um dieses Bild in einem neuen Fenster anzusehen

Jafka/Kafka
Kafka (das Nachrichten über verschiedene Knoten verteilt) ist ein verteiltes MQ-System, das von LinkedIn im Dezember 2010 als Open Source entwickelt und als Open Source veröffentlicht wurde, und ist nun ein Inkubationsprojekt von Apache, einem leistungsstarken, sprachübergreifenden Publish/Subscribe-Nachrichten-Warteschlangensystem, und Jafka wird auf Kafka inkubiert, das eine verbesserte Version von Kafka ist. Sie besitzt folgende Eigenschaften: schnelle Persistenz, die Nachrichten unter dem Systemoverhead von O(1) erhalten kann; Hoher Durchsatz, der auf einem gewöhnlichen Server eine Durchsatzrate von 10W/s erreichen kann; Vollständig verteilte Systeme, Broker, Producer und Consumer unterstützen alle nativ verteiltes System und erreichen automatisch ein komplexes Gleichgewicht. Unterstützt paralleles Laden von Hadoop-Daten, was eine praktikable Lösung für Logdaten und Offline-Analysesysteme wie Hadoop ist, jedoch mit den Einschränkungen der Echtzeitverarbeitung. Kafka vereint Online- und Offline-Nachrichtenverarbeitung durch Hadoops parallelen Lademechanismus, was ebenfalls für das in diesem Thema untersuchte System wichtig ist. Apache Kafka ist im Vergleich zu ActiveMQ ein sehr leichtes Messaging-System und neben sehr guter Leistung auch ein verteiltes System, das gut funktioniert.
Klicken Sie, um dieses Bild in einem neuen Fenster anzusehen

Apache ActiveMQ
ActiveMQ liegt irgendwo zwischen beiden (RabbitMQ und ZeroMQ), ähnlich wie ZemoMQ, und kann sowohl im Proxy- als auch im P2P-Modus eingesetzt werden. Ähnlich wie bei RabbitMQ ist es einfach, fortgeschrittene Szenarien umzusetzen und erfordert einen geringen Verbrauch.
ActiveMQ gilt als das Rückgrat der Java-Welt. Es hat eine lange Geschichte und wird weit verbreitet genutzt. Es ist außerdem plattformübergreifend und bietet einen natürlichen Integrationszugang für Produkte, die nicht auf Microsofts Plattform sind. Es ist jedoch nur möglich, in Betracht gezogen zu werden, wenn es über MSMQ hinausgelaufen ist. Um ActiveMQ zu konfigurieren, musst du die Java-Umgebung auf dem Zielrechner installieren.
Klicken Sie, um dieses Bild in einem neuen Fenster anzusehen
Es ist wichtig zu beachten, dass das nächste Produkt von ActiveMQ Apollo ist, das auf dem ActiveMQ-Prototyp basiert und ein schnelleres, zuverlässigeres und leichter zu wartendes Nachrichtenbroker-Tool darstellt. Apache bezeichnet Apollo als den schnellsten und robustesten STOMP-Server (Streaming Text Orientated Message Protocol).
Die Merkmale von Apollo sind wie folgt:
Stomp 1.0 und Stomp 1.1 Protokolle werden unterstützt
Themen und Warteschlangen
Warteschlangenbrowser
Theme-persistente Abonnements
Spiegelwarteschlange
Zuverlässige Nachrichten
Ablauf der Nachricht und Austausch
Nachrichten-Picker
JAAS bestätigt
ACL-basierte Autorisierung
Unterstützung für SSL/TLS- und Zertifikatsvalidierung
REST-Management-API
Klicken Sie, um dieses Bild in einem neuen Fenster anzusehen

Redis
Es handelt sich um eine Key-Value NoSQL-Datenbank, die aktiv entwickelt und gepflegt wird, obwohl sie ein Key-Value-Datenbankspeichersystem ist, MQ-Funktionen unterstützt und somit als leichtgewichtiger Warteschlangendienst genutzt werden kann. Für die Onboarding- und Out-Queue-Operationen von RabbitMQ und Redis jeweils 1 Million Mal, und die Ausführungszeit wird alle 100.000 Mal aufgezeichnet. Die Testdaten sind in vier verschiedene Größen unterteilt: 128 Bytes, 512 Bytes, 1K und 10K. Experimente zeigen, dass die Leistung von Redis beim Eintritt ins Team höher ist als die von RabbitMQ, wenn der Datenvergleich klein ist, und wenn die Datengröße 10K übersteigt, ist Redis unerträglich langsam. Beim Ausscheiden aus dem Team zeigte Redis eine sehr gute Leistung, unabhängig von der Datengröße, während die Leistung von RabbitMQ deutlich niedriger war als die von Redis.

MemcacheQ
Die persistente Nachrichtenwarteschlange Memcacheq (kurz MCQ) ist eine leichte Nachrichtenwarteschlange, MemcacheQ bietet folgende Funktionen:
1 Einfach und einfach zu bedienen
2 Schnelle Verarbeitung
3 Mehrere Warteschlangen
4 Gute Nebenläufigkeit
5 Kompatibel mit dem Memcache-Protokoll. Das bedeutet, dass man einfach die Memcache-Erweiterung installieren muss, keine zusätzlichen Plugins erforderlich sind.
6 Es ist auch praktisch im Zend-Framework zu verwenden.

Letztendlich sind diese Produkte:
1. Beide haben eigene Client-APIs oder unterstützen mehrere Programmiersprachen;
2. Es gibt viele Dokumentationen;
3. Positive Unterstützung wurde geleistet.
4. ActiveMQ, RabbitMQ, MSMQ, Redis müssen alle Serviceprozesse starten, die überwacht und konfiguriert werden können, und die anderen sind problematisch
5. Sie alle bieten relativ gute Zuverlässigkeit (Konsistenz), Skalierbarkeit und Lastverteilung sowie natürlich Leistung

Ich werde hier keinen Unsinn reden, unten folgt eine Reihe von Testergebnissen, die aus dem Internet abgefangen wurden. Die Anzahl der gesendeten und empfangenen Nachrichten pro Sekunde wird angezeigt. Der gesamte Prozess erzeugte insgesamt 1 Million 1.000-Wörter-Nachrichten. Der Test wurde auf einem eigenständigen Windows Vista-Rechner durchgeführt.


Wie du siehst, ist ZeroMQ kein Level wie alles andere. Seine Leistung ist überraschend hoch. Trotzdem bietet dieses Produkt keine Nachrichtenpersistenz, kann Zwischenprozesse nicht leicht speichern und überwachen und erfordert eine Selbstprüfung sowie Datenrettung, weshalb es in Bezug auf Benutzerfreundlichkeit und HA nicht zufriedenstellend ist. Das Fazit ist klar: Wenn du möchtest, dass eine App Nachrichten so schnell wie möglich verschickt, wählst du ZeroMQ. Es ist wertvoller, wenn es einem nicht allzu wichtig ist, bestimmte Nachrichten zufällig zu verlieren.

Der Blogger in diesem Artikel hofft (und hofft nicht viel), Rabbit zu nutzen, Rabbitmq hat ein integriertes Ha, wenn man einen Cluster bildet, muss man sich keine Sorgen um Probleme wie Lastverteilung machen und man kann einen Warteschlangenspiegel einrichten. Aber bei solchen Dingen sollte es mehr Tests geben, und man hat am Ende einen Favoriten, und all das, was ich über Rabbit gehört und gelesen habe, lässt mich glauben, dass es die beste Wahl sein sollte.





Vorhergehend:c#/.net liest den Quellcode der Hash-Informationen des Torrent-Torrents
Nächster:WLAN-Masterschlüssel-Schnittstelle WLAN-Passwortanfrage
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com