Wann und warum Sie RabbitMQ / Sudo Null IT News benötigen

In komplexen Systemen, Systemen mit Rechenaufgaben sowie solchen, die eine garantierte Lieferung erfordern, ist es wichtig, eine verteilte Architektur zu organisieren und eine Kommunikation zwischen Komponenten herzustellen. Für Aufgaben mit ähnlichen Einstiegsvoraussetzungen ist RabbitMQ ein Open Source Message Broker. In dem Artikel werden wir die Hauptszenarien für seine Verwendung betrachten und analysieren, wann und warum RabbitMQ benötigt wird.

Message Broker als Indikator für die Systemreife

Wenn Sie einen Dienst in Anspruch nehmen, wird er mit ziemlicher Sicherheit einen Nachrichtenbroker enthalten. Dies ist keine zwingende Bedingung, wird jedoch als einer der Indikatoren für die Reife des Systems angesehen. Da sich der Dienst weiterentwickelt und die Geschäftsfunktionalität komplexer wird, steigt der Bedarf an einem Nachrichtenbroker nur noch an. Je früher Sie also damit beginnen, desto weniger Krücken und technische Schulden werden in Ihrem Projekt auftreten.

Welche Probleme löst der Message Broker? Stellen Sie sich vor, ein neuer Benutzer ist zu Ihrem Service gekommen und möchte sich registrieren. Bei der Registrierung gibt er eine E-Mail-Adresse an, und um sie zu validieren, müssen Sie eine Benachrichtigung mit einem Code senden. Um das Senden einer Nachricht zu implementieren, müssen Sie eine Integration mit einem externen System vornehmen. Aber Sie möchten nicht, dass der Benutzer auf eine Antwort vom Remote-System wartet. Stattdessen möchten Sie sofort auf die nächste Seite weitergeleitet werden, wo Sie aufgefordert werden, einen Code mit der Aufschrift „E-Mail bestätigen“ einzugeben. Der Message Broker ermöglicht es Ihnen, die beschriebenen Operationen asynchron auszuführen.

Der asynchrone Ansatz löst viele Probleme. Anstatt eine Architektur zu planen, bei der jede Komponente Anforderungen an andere Komponenten sendet und auf eine Antwort von ihnen wartet, senden Sie einfach eine Nachricht an den Broker. Und ein oder mehrere Dienste empfangen diese Nachricht und verarbeiten sie zu einem geeigneten Zeitpunkt, sodass Sie Programme nicht blockieren können. Wenn Sie einige Dienste synchron auf andere warten lassen, stoßen Sie sehr schnell an eine Ressourcengrenze, wenn die Geschwindigkeit des gesamten Systems gleich der Geschwindigkeit seiner langsamsten Komponente ist.

Außerdem können Ihre Dienste durch die Verwendung eines Nachrichtenbrokers nichts darüber wissen, wer sie verarbeitet. Aus diesem Grund können verschiedene Komponenten vollständig isoliert und unabhängig bleiben – Sie müssen nur die gewünschte Warteschlange abonnieren.

Nachrichtenbroker sind Vermittler zwischen Diensten. Sie stehen im Zentrum der Architektur und steuern den Informationsfluss. Dadurch kann jeder Dienst eine Nachricht an einen anderen Dienst oder an eine ganze Gruppe von Diensten senden. Dieser Ansatz ist mit der Entwicklung von Microservices populär geworden und zwingt dazu, die Einstellung zur Fehlertoleranz zu überdenken.

Warum Message Broker verwenden

Wenn der Broker kaputt geht, gehen im schlimmsten Fall einige der Nachrichten verloren, aber der Dienstkern funktioniert immer noch, da er Informationen aus der Datenbank bezieht. Nachrichten sammeln sich an, und wenn der Server zurückkehrt, liest und verarbeitet er schnell die resultierenden Schulden. Aber manchmal gibt es eine teilweise Verschlechterung: Einige Informationen sind möglicherweise nicht die relevantesten, obwohl Benutzer sie höchstwahrscheinlich nicht einmal bemerken werden. Ein Beispiel ist ein Newsfeed in sozialen Netzwerken. Wenn es für eine Weile nicht aktualisiert wird, können Sie immer noch veröffentlichte Beiträge sehen.

Es kommt vor, dass Dienste, die in kurzer Zeit entworfen und geschrieben wurden, keinen Nachrichtenbroker haben. Die Notwendigkeit, diese Funktionalität zu implementieren, wird viel später erkannt. Und hier gibt es zwei Möglichkeiten. Die erste besteht darin, Geld zu sparen und eine Datenbank als Nachrichtenbroker zu verwenden. Das ist nicht sehr gut, weil es das Problem nur in einem frühen Stadium löst.

Die zweite Möglichkeit besteht darin, einen Nachrichtenbroker einzurichten. So verschaffen Sie Ihrer Anwendung einen technologischen Spielraum für zukünftige Entwicklungen. RabbitMQ bleibt einer der beliebtesten Nachrichtenbroker.

Was ist RabbitMQ

RabbitMQ ist ein verteilter und skalierbarer Nachrichtenbroker. Vereinfacht kann seine Vorrichtung wie folgt beschrieben werden:

  • der Herausgeber, der die Nachrichten sendet;

  • Warteschlange, in der Nachrichten gespeichert werden;

  • Abonnenten, die als Empfänger von Nachrichten fungieren.

RabbitMQ leitet Nachrichten zwischen Produzenten und Abonnenten über Warteschlangen weiter. Nachrichten können beliebige Informationen enthalten, z. B. über ein Ereignis, das auf der Site aufgetreten ist.

RabbitMQ eignet sich hervorragend zum Integrieren verschiedener Komponenten, zum Erstellen von Mikrodiensten, zum Streamen von Daten in Echtzeit oder zum Auslagern von Arbeiten an Remote-Mitarbeiter. Es wird von großen Unternehmen verwendet, darunter Bloomberg, Reddit, WeWork, NASA und andere.

Warum RabbitMQ wählen:

  • RabbitMQ unterstützt mehrere Protokolle: AMQP, MQTT, STOMP usw., wodurch es in verschiedenen Szenarien verwendet werden kann.

  • RabbitMQ speichert die Nachricht, bis die empfangende Anwendung eine Verbindung herstellt und sie aus der Warteschlange abruft. Der Kunde kann den Eingang der Nachricht sofort oder nach vollständiger Bearbeitung durch ihn bestätigen. Sobald eine solche Bestätigung empfangen wird, wird die Nachricht aus der Warteschlange entfernt. Im Vergleich dazu ist die Nachrichtenwarteschlange in Kafka persistent – ​​Daten werden gespeichert, bis ein bestimmter Zeitraum abläuft oder das Größenlimit erreicht ist. Daher ist es wichtig sicherzustellen, dass ein Ereignis, das einmal passieren sollte, nicht viele Male wiederholt wird.

  • Der Hauptvorteil von RabbitMQ ist das flexible Routing. Nachrichten werden durch die Vermittlungsstelle geleitet, bevor sie in die Warteschlange gelangen. RabbitMQ bietet mehrere integrierte Austauschtypen für typische Routing-Logik.

  • RabbitMQ unterstützt die Priorisierung in Warteschlangen und ermöglicht es Ihnen, eine Reihe von Prioritäten festzulegen. Die Priorität jeder Nachricht wird festgelegt, wenn sie veröffentlicht wird.

  • RabbitMQ bietet eine einfache Verwaltungsbenutzeroberfläche. Es ermöglicht Ihnen, jeden Aspekt des Nachrichtenbrokers zu steuern. .

Szenarien für die Verwendung von RabbitMQ

Normalerweise werden zwei Optionen genannt, wenn es sich lohnt, RabbitMQ zu verwenden: für die Datenverarbeitung im Hintergrund und für die Integration innerhalb von Anwendungen und zwischen ihnen, d.h. als Nachrichtenbroker zwischen Microservices. Betrachten wir beide Szenarien.

Datenverarbeitung im Hintergrund

Die Hintergrundverarbeitung ist der beste Anwendungsfall für RabbitMQ. Sie können eine Nachricht in die Warteschlange stellen, ohne sie sofort zu verarbeiten.

Beispiel: Sie möchten einen Bericht aus einer Anwendung herunterladen. Die Anwendung verarbeitet die Informationen und generiert innerhalb von 15-20 Minuten eine PDF-Datei. Diese sendet es Ihnen dann per E-Mail zu. Die Nachrichtenwarteschlange ermöglicht es Ihnen, alle Aufgaben asynchron auszuführen.

RabbitMQ-Warteschlangen dienen als Ereignisbusse und ermöglichen es Webservern, schnell auf Anfragen zu reagieren, anstatt zeitaufwändige Aufgaben an Ort und Stelle zu erledigen.

Vermittler in der Microservice-Architektur

RabbitMQ wird auch häufig für Microservice-Architekturen verwendet, wo es als Kommunikationsmittel zwischen Anwendungen fungiert und dabei hilft, Engpässe bei der Nachrichtenübermittlung zu vermeiden.

Zum Schluss noch ein paar Worte zu RabbitMQ

Wenn eine Anwendung unterbrochen wird, können andere Anwendungen keine Nachrichten mehr mit ihr austauschen, sodass die Arbeit unterbrochen wird. RabbitMQ hingegen stellt eine Nachricht in die Warteschlange, wartet, bis die defekte Anwendung behoben ist, und gibt ihr eine Nachricht aus der Warteschlange. Ja, es gibt eine gewisse Verzögerung bei der Beseitigung der Störungsursache, aber global fällt nichts.

RabbitMQ führt auch verteilte Workloads aus. Mehrere Kopien derselben Anwendung können auf verschiedenen Computern ausgeführt werden. RabbitMQ gleicht die Leistungslast aus und wählt aus, an wen die Nachricht gesendet werden soll.

RabbitMQ ist mehr als nur ein Nachrichtenbroker. Es basiert auf ERLANG und der Open Telecom-Plattform und bietet eine hohe Leistung bei minimalem Ressourcenverbrauch. Es wird gewählt, wenn eine zuverlässige Nachrichtenzustellung und ein flexibles Routing erforderlich sind.

Für diejenigen, die RabbitMQ verstehen und 10 % Rabatt auf Schulungen erhalten möchten

Am 28. September starten wir den Kurs auf Rabbit MQ. Darin erklärt Ihnen Infrastrukturingenieur Alexei Barabanov, wie Sie nicht nach komplexen Lösungen suchen sollten, bei denen ein gut abgestimmtes Zielwerkzeug ausreicht. Sie wird auch Fälle und Beispiele aus ihrer eigenen Erfahrung schildern.

Der Kurs wird für diejenigen nützlich sein, die mit RabbitMQ noch nicht vertraut sind, und für diejenigen, die schon lange nur in der Basisversion damit arbeiten und neue Verwendungsmöglichkeiten, die Nuancen der Fehlertoleranz und lernen möchten Überwachung.

Hier finden Sie das detaillierte Programm und nehmen Platz: https://slurm.club/3AFKlyr

Und mit dem Promo-Code „READER“ erhalten Sie 10 % Rabatt auf den Kauf des Kurses.

Similar Posts

Leave a Reply

Your email address will not be published.