Einführung
Jeder erfahrene Systemadministrator weiß, dass es manchmal sehr nützlich und sogar notwendig ist, Aufgaben auf später zu verschieben, insbesondere wenn die Aufgabe zeitaufwändig ist und viele Ressourcen verbraucht. Dazu benötigen Sie einen Message Broker – ein Programm, das Nachrichten (Aufgaben) von verschiedenen Absendern (Webanwendungen) entgegennimmt, daraus eine Warteschlange bildet und diese dann zwischen Workprozessen verteilt.
Dieser Artikel konzentriert sich auf das RabbitMQ-Projekt – eine Reihe offener Anwendungen zur Implementierung der Funktionen eines Nachrichtenbrokers, der das Advanced Message Queuing Protocol (AMQP) implementiert.
Nachrichten, Nachrichtenbroker und Sequenz
Messaging ist eine Möglichkeit, bestimmte Daten zwischen Prozessen, Anwendungen, virtuellen und physischen Servern auszutauschen. Diese Nachrichten, die einige Rechenfunktionen ausführen, können fast alles enthalten, von reinem Text bis hin zu großen Blöcken binärer Daten. Für die korrekte Ausführung dieses Prozesses wird ein Drittprogramm benötigt – das ist der Message Broker.
Ein Message Broker ist normalerweise eine Gruppe von Anwendungen, deren einzelne Komponenten darauf ausgelegt sind, eine bestimmte Phase des Messaging zu verarbeiten:eine Nachricht zu empfangen, sie in der Warteschlange zu definieren und die Nachricht an den für ihre Ausführung verantwortlichen Arbeitsprozess zu übergeben. Oft werden statt vollwertiger Lösungen Programme verwendet, die ursprünglich nicht für diese Arbeit gedacht waren (Datenbanken, Cron-Daemon etc.); Sie erstellen einfach eine Nachrichtenwarteschlange (die technisch unendliche Puffer darstellt) und übergeben sie dann zur automatischen Verarbeitung oder zum Abrufen.
Warum brauchen Sie Message Broker?
Message Broker fungieren als Vermittler zwischen verschiedenen Diensten (Webanwendungen). Sie reduzieren die Last erheblich und verkürzen die Zustellzeit von Nachrichten, da Aufgaben, deren Bearbeitung einige Zeit in Anspruch nimmt, auf Workflows verteilt werden, die ausschließlich für diese Aufgaben vorgesehen sind. Sie bieten einen zuverlässigen Kanal zum Übertragen von Nachrichten von einer Anwendung zur anderen.
Wann brauchen Sie Message Broker?
Im Allgemeinen deckt die Grundfunktionalität von Nachrichtenbrokern viele Bereiche ab, einschließlich, aber nicht beschränkt auf:
- Reduzierung der Antwortzeit von Webservern auf Anfragen (weil sie keine ressourcenintensiven Aufgaben ausführen müssen).
- Verteilung der Nachricht an mehrere Empfänger (zB zur Bearbeitung).
- Offline-Benutzer können später alle Daten abrufen.
- Vollständig asynchrone Arbeitsweise mit Serversystemen.
- Reihenfolge und Priorisierung von Aufgaben;
- Lastenausgleich zwischen Arbeitsprozessen.
- Verbesserung der Zuverlässigkeit und Verfügbarkeit der Anwendung.
Und vieles mehr.
Ein kurzer Rückblick auf RabbitMQ
RabbitMQ (veröffentlicht 2007) ist einer der beliebtesten Open-Source-Nachrichtenbroker, der unter der Mozilla Public License v1.1 als Implementierung des Advanced Message Queuing Protocol lizenziert ist. RabbitMQ wurde in Erlang entwickelt und ist ziemlich einfach zu verwenden und zu installieren.
Wie funktioniert RabbitMQ?
RabbitMQ bietet eine Schnittstelle, die Sender (Publisher) mit Empfängern (Consumer) verbindet, indem ein Broker verwendet wird, der die Daten in den entsprechenden Listen – Message Queues – verteilt.
APPLICATION EXCHANGE TASK LIST WORKER [DATA] -------> [DATA] ------> [D]+[D][D][D] ---> [DATA] Publisher EXCHANGE Queue Consumer
Vorteile von RabbitMQ
Im Gegensatz zu anderen Lösungen ist RabbitMQ ein vollwertiger Anwendungsstapel und keine einfache Basis für die Anwendung Ihrer Wahl. Es bietet alle notwendigen Werkzeuge im Komplex.
Ein kurzer Überblick über AMQP
AMQP (Advanced Message Queuing Protocol) ist ein weit verbreiteter offener Standard zur Verteilung und Übertragung von Nachrichten. Als Protokoll und Standard schafft es einen gemeinsamen Rahmen für das Zusammenspiel verschiedener Anwendungen und Nachrichtenbroker und eliminiert die Probleme, die durch individuelles Programmdesign verursacht werden.
RabbitMQ-Installation
RabbitMQ-Pakete werden von CentOS / RHEL und Ubuntu / Debian bereitgestellt. Aber in der Regel sind solche Pakete veraltet. Daher wird empfohlen, RabbitMQ manuell herunterzuladen und zu installieren.
Hinweis :Es wird empfohlen, alle manuellen Aktionen auf einem neuen Server durchzuführen, um den Betrieb zuvor gestarteter Anwendungen nicht zu stören und keinen Konfigurationsfehler zu verursachen.Installieren Sie RabbitMQ in CentOS/RHEL
Bevor Sie mit der Installation von RabbitMQ beginnen, müssen Sie die Programmabhängigkeiten installieren, von denen eine Erlang ist. Zunächst müssen jedoch das System und die Standardanwendungen aktualisiert werden. Führen Sie dazu Folgendes aus:
# yum -y update
Für die Erlang-Installation können Sie verwenden:
# Add and enable relevant application repositories: # Note: We are also enabling third party remi package repositories. wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm sudo rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm # Finally, download and install Erlang: yum install -y erlang
Jetzt können Sie RabbitMQ installieren:
# Download the latest RabbitMQ package using wget: wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.2.2/rabbitmq-server-3.2.2-1.noarch.rpm # Add the necessary keys for verification: rpm --import http://www.rabbitmq.com/rabbitmq-signing-key-public.asc # Install the .RPM package using YUM: yum install rabbitmq-server-3.2.2-1.noarch.rpm
Installieren Sie RabbitMQ auf Ubuntu
Der Installationsprozess von RabbitMQ in Ubuntu/Debian ist unter CentOS fast gleich. Zuerst müssen Sie die Software aktualisieren:
# apt-get update # apt-get -y upgrade
Rabbitmq-Schlüssel hinzufügen:
# curl -fsSL https://github.com/rabbitmq/signing-keys/releases/download/2.0/rabbitmq-release-signing-key.asc | sudo apt-key add -
Paketaktualisierung durchführen:
# apt-get update
Jetzt können Sie rabbitmq RabbitMQ installieren:
$ sudo apt-get install rabbitmq-server
RabbitMQ-Verwaltung
Wie bereits erwähnt, ist der RabbitMQ-Broker sehr einfach zu bedienen. Dieser Abschnitt enthält Anweisungen zum Verwalten und Konfigurieren von RabbitMQ.
Verwaltungskonsole aktivieren
Die RabbitMQ Management Console (RabbitMQ Management Console) ist eines der verfügbaren Plug-ins, mit denen Sie die Prozesse des RabbitMQ-Servers über eine grafische webbasierte Benutzeroberfläche überwachen können.
Mit dieser Konsole können Sie:
- Messaging, Nachrichtenwarteschlangen, Verbindungen und Benutzer verwalten;
- Nachverfolgung von Nachrichtenwarteschlangen, Verbindungen und Nachrichtenraten
- Nachrichten senden und empfangen;
- Erlang-Prozesse und Speichernutzung verfolgen;
Und vieles mehr.
Um die RabbitMQ-Verwaltung zu aktivieren, führen Sie den folgenden Befehl aus:
$ sudo rabbitmq-plugins enable rabbitmq_management
Jetzt können Sie die Verwaltungskonsole im Browser öffnen und your_ip:15672 aufrufen.
Default rabbitmq user – guest. Default rabbitmq password – guest
RabbitMQ-Verwaltung in CentOS/RHEL
Um den Autostart von RabbitMQ zu aktivieren, müssen Sie Folgendes ausführen:
# chkconfig rabbitmq-server on
Verwenden Sie zum Starten, Stoppen, Neustarten und Überprüfen des Status die folgenden Befehle:
# start: /sbin/service rabbitmq-server start # stop: /sbin/service rabbitmq-server stop # restart: /sbin/service rabbitmq-server restart # status: /sbin/service rabbitmq-server status
RabbitMQ-Verwaltung in Ubuntu/Debian
Um den Rabbitmq-Status unter Ubuntu/Debian zu starten, zu stoppen, neu zu starten und zu überprüfen, verwenden Sie die folgenden Befehle:
# start: service rabbitmq-server start # stop: service rabbitmq-server stop # restart: service rabbitmq-server restart # status: service rabbitmq-server status
Jetzt ist Ihr Rabbitmq-Server einsatzbereit!
RabbitMQ-Konfiguration
RabbitMQ wird mit Standardeinstellungen geliefert. Im Allgemeinen sind sie ziemlich zuverlässig und erfordern keine Bearbeitung.