Wann sollte das Advanced Message Queuing-Protokoll wie RabbitMQ verwendet werden? [geschlossen]

Antworten:

25

Stellen Sie sich vor, Sie haben einen Webdienst, der viele Anfragen pro Sekunde annehmen kann. Sie haben auch ein Buchhaltungssystem, das eine Menge Dinge erledigt. Eines davon ist die Verarbeitung der Anforderungen, die vom Webservice kommen.

Wenn Sie eine Warteschlange zwischen dem Webservice und dem Buchhaltungssystem einrichten, können Sie:

  • weniger Kopplung zwischen den beiden Anwendungen, da nun beide Anwendungen die Konfigurationsparameter des Warteschlangenverwaltungssystems und den Namen der Warteschlange kennen müssen. Hier ist der Haken, dass Sie in der Regel eher auf einen anderen Server als auf das Warteschlangenverwaltungssystem wechseln
  • Wenn Sie in kurzer Zeit viele Anfragen haben, kann das Buchhaltungssystem diese ohnehin alle bearbeiten
  • Bestehen einige Anfragen, wenn ihre Anzahl wirklich riesig wird

Natürlich könnten Sie komplexere Situationen haben, in denen die Anzahl Ihrer Anwendungen viel größer als zwei ist und Sie die Kommunikation zwischen ihnen verwalten müssen.

Виталий Олегович
quelle
1
1) Wie ist A besser an B gekoppelt als A an C und C an B gekoppelt?
Charlie
2) Warum nicht die Warteschlange in das Buchhaltungssystem stellen? Warum ein neues bewegliches Black-Box-Teil einführen, das zusätzliche Konfiguration benötigt?
Charlie
2
@ Charlie zu Frage 1, ich habe meine Antwort geändert. Was genau meinen Sie mit Frage 2, wenn Sie die Warteschlange in das Buchhaltungssystem stellen? Sie möchten eine Queue-Datenstruktur verwenden? In diesem Fall müssen Sie mehr Code schreiben, um ihn beizubehalten. Sie möchten die Queue anhand einer Datenbanktabelle simulieren? Auch hier müssen Sie einen guten Code schreiben, um diese Tabelle zu verwalten. Noch etwas, woran ich nicht gedacht habe?
Виталий Олегович
Ich habe für 1 einen falschen Fehler gemacht. Wenn die Warteschlange im Webdienst oder in der Anwendung platziert ist, bleibt eine Kopplung bestehen. Wenn sich die Warteschlange jedoch außerhalb von beiden befindet, haben Sie jetzt die doppelte Kopplung und 50% mehr zu verwaltende Systeme / Ausfallstellen. Wenn Sie eine Warteschlange eines Drittanbieters auswählen, müssen Sie auch dieses neue Paket kennenlernen und konfigurieren. Es wird wahrscheinlich unzählige Funktionen enthalten, die Sie nicht verwenden möchten, und Funktionen, die hinzugefügt wurden, um die Warteschlange für allgemeine Zwecke und Zwecke zu nutzen viel mehr Situationen als Ihre eigenen.
Charlie
@ Charlie, vermutlich würde ein einzelner Nachrichtenbroker unter mehreren Systemen verwendet. Oder es würde einen einzigen Proxy für den Broker geben. (In unserem Fall verwenden wir eine einzige Messaging-Appliance, die für alle unsere Systeme Millionen von Nachrichten pro Sekunde verarbeiten kann.) Dies führt tatsächlich zu einer stärkeren Entkopplung, da eine Nachricht von einem System generiert wird und jedes interessierte System diese Nachricht empfangen und eine entsprechende Logik ausführen kann. Die einzige Verbindung besteht mit der Warteschlange.
Michael Brown
16

Neben der Bereitstellung eines Puffers zwischen einem Webdienst und einem anderen Back-End-Dienst können Nachrichtenwarteschlangen für erweiterte Szenarien verwendet werden. Rabbit MQ (und andere ausgereifte Message Queue-Produkte, die auch als MOM - Message Oriented Middleware bezeichnet werden) können so konfiguriert werden, dass Nachrichten nach unterschiedlichen Regeln weitergeleitet und verteilt werden.

Beispielsweise ermöglicht die Pub-Sub-Routing-Technik, dass eine einzelne Quelle eine Nachricht sendet und dass viele Listener sie empfangen. Dies wird üblicherweise von Aktienhandelssoftware verwendet, um die Benutzer auf dem Laufenden zu halten.

Auch aufgrund der Tatsache, dass die meisten MOMs SDKs für mehrere Sprachen und Plattformen haben, können sie verwendet werden, um Anwendungen zu integrieren, die auf verschiedenen Plattformen geschrieben wurden.

Dies sind nur einige der von MOMs aktivierten Szenarien.

Michael Brown
quelle