2013-04-15 8 views
5

Ich habe Message Queues System in meiner Klasse studiert, aber ich verstehe immer noch nicht, wie diese Message Queues System in Echtzeit-Szenarien arbeiten? Gibt es ein Tutorial, das mir helfen kann, das komplette Bild zu bekommen? Kann mir jemand erklären, wie diese Systeme funktionieren?Wie Message Queue System funktioniert?

+1

Der [Wikipedia Artikel] (http://en.wikipedia.org/wiki/Message_queue) ist ein guter Anfang. –

Antwort

10

Ein Beispiel: Mein Thread oder Prozess kann eine Nachricht an Ihre Nachrichtenwarteschlange senden, und nachdem ich sie gesendet habe, geht mein Code weiter. Ihr Code liest die nächste Nachricht aus der Nachrichtenwarteschlange und entscheidet dann, was mit dieser Nachricht geschehen soll. Nachrichtenwarteschlangen vermeiden, dass ein kritischer Abschnitt oder Mutex zwischen den beiden Threads oder Prozessen geteilt werden muss. Die darunterliegende Nachrichtenwarteschlangenschicht selbst sorgt dafür, dass Nachrichten in die Warteschlange gelangen, ohne dass sich die Race Conditions auf die Integrität der Warteschlange auswirken.

Nachrichtenwarteschlangen können sowohl für asynchrones als auch für asynchrones Messaging verwendet werden. Bei einer einseitigen Verwendung kann mein Thread sie verwenden, um Ihren Thread über wichtige Ereignisse in meinem Thread ohne Rückmeldung von Ihrem Thread zu informieren. Bei der bidirektionalen Verwendung muss der Thread möglicherweise, nachdem mein Thread eine Nachricht an Ihren Thread gesendet hat, Daten über meine Nachrichtenwarteschlange an meinen Thread zurücksenden.

Die Nachrichtenwarteschlangenschicht verwendet Synchronisierungsschemata niedrigerer Ebene, um sicherzustellen, dass keine zwei Writer zur Warteschlange gleichzeitig schreiben können. Es stellt sicher, dass alle Schreibvorgänge in der Warteschlange atomar sind. Es stellt auch sicher, dass ein Leser der Warteschlange eine teilweise geschriebene Nachricht aus der Warteschlange nicht lesen kann.

Die meisten Nachrichtenwarteschlangen-APIs bieten auch Unterstützung für das Lesen von Nachrichten aus der Warteschlange basierend auf dem von Ihnen festgelegten Filter. Sagen Sie zum Beispiel, dass Sie Nachrichten aus einem zeitkritischen Thread für wichtiger halten als andere Nachrichten. Sie können jedes Mal, wenn Sie Ihre Warteschlange nach Nachrichten durchsuchen, zuerst nach Nachrichten aus dem kritischen Thread suchen und diese Nachrichten zuerst bearbeiten. Ihr Thread würde dann weitergehen, um den Rest der Nachrichten als normal zu verarbeiten, vorausgesetzt, dass keine weiteren Nachrichten von dem kritischen Thread gefunden werden.

A C tutorial of the UNIX message queues

2

Das ist ein komplexes Thema ist, aber um es einfach auszudrücken:

Message Queues sind eine der besten Wege, wenn nicht das beste, zu verteilten Systemen implementieren.

Nun könnten Sie fragen, was ist ein verteiltes System? Es ist ein integriertes System, das mehrere Maschinen, Clients oder Knoten umfasst, die ihre Aufgaben parallel und unterbrechungsfrei ausführen. Ein verteiltes System sollte robust genug sein, um weiter zu arbeiten, wenn ein oder mehrere Knoten ausfallen, aufhören zu arbeiten, zu verzögern oder zu Wartungszwecken abgebaut werden.

Dann könnten Sie fragen, was ist eine Nachrichtenwarteschlange? Es ist eine nachrichtenorientierte Middleware, die die Entwicklung eines verteilten Systems ermöglicht, indem asynchrone Nachrichten für die Kommunikation zwischen Knoten über das Netzwerk verwendet werden.

Und schließlich könnten Sie fragen, wofür ist das gut? Dies ist gut für die Implementierung von Anwendungen mit vielen beweglichen Teilen namens Knoten, die Echtzeitüberwachung und Echtzeit-Reaktionsfähigkeiten benötigt.Zusammenfassend bieten sie: Parallelität (Knoten können wirklich parallel laufen), enge Integration (alle Knoten sehen die gleichen Nachrichten in der gleichen Reihenfolge), Entkopplung (Knoten können sich unabhängig entwickeln), Failover/Redundanz (wenn ein Knoten ausfällt, kann ein anderer) Betrieb und Building State werden sofort übernommen), Skalierbarkeit/Load - Balancing (einfach weitere Knoten hinzufügen), Elastizität (Knoten können während Aktivitätsspitzen nacheilen, ohne das System als Ganzes zu beeinträchtigen) und Ausfallsicherheit (Knoten können ausfallen/nicht mehr funktionieren, ohne die ganzes System runter).

Überprüfen Sie this article, die eine Nachrichtenwarteschlangeninfrastruktur im Detail beschreibt.