Höhere Performance durch Schlange stehen

Was ist eine Message Queue?

| Autor / Redakteur: Otto Geißler / Ulrike Ostler

Eine Message Queue ist eine bestimmte Form der Kommunikation zwischen Services, die in serverlosen Architekturen und Architekturen mit Mikroservices zur Anwendung kommt.
Eine Message Queue ist eine bestimmte Form der Kommunikation zwischen Services, die in serverlosen Architekturen und Architekturen mit Mikroservices zur Anwendung kommt. (Bild: © djama - stock.adob.com)

Anwendungen kommunizieren, indem sie sich einander Nachrichten (messages) senden. Für ein geregeltes Nacheinander gibt es Message Queue, die Nachrichtenwarteschlange. Sie bildet also einen temporären Nachrichtenspeicher, wenn das Zielprogramm beschäftigt oder gerade nicht verbunden ist.

Message Queues stellen ein asynchrones Kommunikationsprotokoll bereit, indem Absender und Empfänger von Nachrichten nicht gleichzeitig mit der Nachrichten-Warteschlange interagieren müssen. Das heißt, die in der Message Queue gestellten Nachrichten werden so lange gespeichert, bis der Empfänger sie abruft. Im Anschluss dazu werden sie gelöscht.

Jede Nachricht wird von einem einzelnen Empfänger immer nur einmal verarbeitet. Die Message Queue repräsentiert also einen zeitweiligen Speicher für den Fall, dass das Zielprogramm gerade beschäftigt oder nicht verbunden ist. Die Nachrichten sind in der Regel kurz, und inhaltlich kann es sich dabei zum Beispiel um Anforderungen, Antworten, Fehlermeldungen oder Informationen in Klartext handeln.

Mithilfe von Message Queues können umfangreiche Verarbeitungsprozesse entkoppelt, Aufgaben gepuffert oder im Stapelbetrieb verarbeitet und so hohe Workloads reduziert werden. Hinzu kommt, dass Message Queuing-Systeme in der Regel eine verbesserte Ausfallsicherheit bieten, um sicherzustellen, dass Nachrichten bei einem Systemausfall nicht verloren gehen.

Message Queue-Optionen

Viele Implementierungen von Message Queues funktionieren „intern“. Das bedeutet innerhalb eines Betriebssystems oder innerhalb einer Anwendung. Solche Warteschlangen existieren dann nur für die Zwecke dieses Systems.

Andere Implementierungen ermöglichen das Weiterleiten von Nachrichten zwischen verschiedenen Computersystemen, wodurch mehrere Anwendungen und mehrere Betriebssysteme verbunden werden. Message Queues gibt es als proprietäre Software, Open Source-Software oder hardwarebasierte Lösungen:

Proprietäre Lösungen

Diese Option hat die längste Tradition und umfasst Produkte, die in der Pionierzeit der Message Queues entwickelt wurden, wie zum Beispiel „IBM MQ“, als auch solche, die an bestimmte Betriebssysteme gebunden sind, zum Beispiel „Microsoft Message Queuing“.

Cloud-basierte Lösungen

Ebenso existieren auch Cloud-basierte Message Queueing-Service-Optionen wie „Amazon Simple Queue Service“ (SQS), „StormMQ“, „IronMQ“ und IBM MQ.

Open-Source-Lösungen

Des Weiteren gibt es eine Reihe von Open-Source-Optionen für Messaging-Middleware-Systeme, darunter „Apache ActiveMQ“, „Apache Kafka“, „Apache Qpid“, „Apache RocketMQ“, „Beanstalkd“, „Enduro / X“, „HTTPSQS“, „JBoss Messaging“, „JORAM, RabbitMQ„ und „Sun Open Message Queue“ und „Tarantool“.

Hardwarebasierte Lösungen

Neben Open-Source-Systemen gibt es auch hardwarebasierte Messaging-Middleware von Anbietern wie Solace, Apigee und Tervela, die Warteschlangen über Silicon- oder Silicon- / Software-Datenpfade anbieten. IBM offeriert seine MQ-Software ebenfalls auf einer Appliance.

Message Queue-Funktionen

In modernen Architekturen werden Applikationen in kleinere, unabhängige Bausteine aufgegliedert, die einfacher entwickelt, bereitgestellt und gewartet werden können. Die Message Queues dienen zur Kommunikation und Koordination für diese verteilten Anwendungen. Sie vereinfachen deutlich die Codierung der aufgegliederten Anwendungen und verbessern gleichzeitig Performance, Zuverlässigkeit und Skalierbarkeit.

Message Queues erlauben einzelnen Teil-Systemen, asynchron zu kommunizieren und Prozesse zu verarbeiten. Somit stellen Nachrichten-Warteschlangen einen Puffer bereit, der das System nicht belastet und Nachrichten temporär speichert, sowie Endpunkte, die den Software-Komponenten das Herstellen einer Verbindung mit der Message Queue zum Senden und Empfangen von Nachrichten gestatten.

Für das Senden einer Nachricht fügt eine als Producer bezeichnete Komponente eine Nachricht an die Warteschlange an. Die Nachricht wird dort gespeichert, bis eine andere, als Consumer benannte Komponente die Nachricht aufruft und eine Aktion mit ihr ausführt.

Viele Producer und Consumer können die Warteschlange nutzen, wobei jede Nachricht nur einmal von einem einzelnen Consumer verarbeitet wird. Daher wird dieses Messaging-Paradigma zuhauf als 1-zu-1- bzw. Punkt-zu-Punkt-Kommunikation betitelt. Soll eine Nachricht mehreren Consumern zugeführt werden, so können Message Queues in einer Art Auffächerungs-Modell mit Pub/Sub-Messaging kombiniert werden.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46297975 / Definitionen)