© saicle/Shutterstock.com
PHP Magazin
Verteilte Bearbeitung von Aufgaben und Entkopplung von Applikationsteilen

Verteilte Bearbeitung von Aufgaben und Entkopplung von Applikationsteilen

Eine PHP-Webanwendung wird innerhalb eines HTTP-Requests ausgeführt. Ein Request hat eine endliche Laufzeit, die zumeist durch Konfiguration des HTTP-Servers, der Script-Engine oder einer Nutzerinteraktion (z. B. eines Abbruchs) begrenzt ist. Diese „natürliche“ Grenze verhindert die Ausführung von langlaufenden, nebenläufigen oder verknüpften Operationen wie bspw. einem Videoupload, der Ausführung einer Kette von abhängigen Prozessen mit möglichst hoher Ausfallsicherheit in jedem Prozess oder verteiltem Logging.

Mike Lohmann, Wolf Bauer


Eine wirkliche parallele und asynchrone Berechnung ist mit dem HTTP-Request-Konzept nicht ohne Weiteres umzusetzen. Die Forderung nach Nebenläufigkeit in der Anwendung wird oft gestellt, wenn zeitintensive Berechnungen oder die Verteilung auf nachgelagerte Systeme die Lösung für fachliche Anforderungen sind. Der Ablauf ist dabei meist sehr ähnlich zu dem dargestellten Beispiel eines Videouploads (Abb. 1).

Abb. 1: Ein Request wird relativ zügig abgearbeitet und stellt in diesem Fall eine zu bearbeitende Datei in ein Verzeichnis ein. Das Bearbeiten der Datei (Encoding) wird aber von einem ganz anderen Prozess übernommen

RabbitMQ – Basics

RabbitMQ ist ein in Erlang und auf Basis des OTP-Frameworks [3] implementierter Message Broker. Ein Message Broker verteilt Nachrichten von einem System zum anderen und kann konfiguriert werden, um Nachrichten nach bestimmten Regeln zuzustellen. RabbitMQ kann als programmiersprachenunabhängiges Übergangswerkzeug von einer Applikation zur anderen eingesetzt werden und hilft bei der Entkoppelung verschiedener unabhängiger und möglicherweise verschiedenartiger Applikationen, dem asynchronen Bearbeiten von Aufgaben in einer Prozesskette oder bei der Anwendung des Publish/Subscribe[4]-Patterns.

Ausfallsicherheit und Datenintegrität sind Teil der Architektur von RabbitMQ. So kann zum Beispiel für jede Nachricht entschieden werden, ob der Erhalt vom Empfänger dem sog. Publisher bestätigt werden muss, oder ob ein „Fire and Forget“-Verhalten ausreichend ist. Zur Ausfallsicherheit können mehrere Instanzen von RabbitMQ-Server zu einem Cluster zusammengeschaltet werden. Dabei ist ein Ausfall eines einzelnen Servers unproblematisch, da alle Queues auf allen Servern des Clusters gespiegelt werden können. Das Clustermanagement ist dabei so intelligent, dass der Verlust einer Nachricht sehr unwahrscheinlich ist. Als RabbitMQ in unserem Unternehmen Gearman [5] für neue Projekte abgelöst hat, waren unsere Administratoren bei einer Vorstellung der Features von RabbitMQ bezüglich Ausfallsicherheit und Datenintegrität sofort begeistert. Zur Kommunikation verwendet RabbitMQ das AMQP-­Protokoll zwischen Client, Broker und Consumer.

AMQP

Das Advanced Message Queuing Protocol (AMQP, [6]) ist ein binäres programmiersprachenunabhängiges Kommunikationsprotokoll wie zum Beispiel FTP, POP oder IMAP. Es wurde ursprünglich für und von Firmen der Finanzindustrie entwickelt. Es wurde recht schnell deutlich, dass das Protokoll zur Kommunikation von Applikationen...

PHP Magazin
Verteilte Bearbeitung von Aufgaben und Entkopplung von Applikationsteilen

Verteilte Bearbeitung von Aufgaben und Entkopplung von Applikationsteilen

Eine PHP-Webanwendung wird innerhalb eines HTTP-Requests ausgeführt. Ein Request hat eine endliche Laufzeit, die zumeist durch Konfiguration des HTTP-Servers, der Script-Engine oder einer Nutzerinteraktion (z. B. eines Abbruchs) begrenzt ist. Diese „natürliche“ Grenze verhindert die Ausführung von langlaufenden, nebenläufigen oder verknüpften Operationen wie bspw. einem Videoupload, der Ausführung einer Kette von abhängigen Prozessen mit möglichst hoher Ausfallsicherheit in jedem Prozess oder verteiltem Logging.

Mike Lohmann, Wolf Bauer


Eine wirkliche parallele und asynchrone Berechnung ist mit dem HTTP-Request-Konzept nicht ohne Weiteres umzusetzen. Die Forderung nach Nebenläufigkeit in der Anwendung wird oft gestellt, wenn zeitintensive Berechnungen oder die Verteilung auf nachgelagerte Systeme die Lösung für fachliche Anforderungen sind. Der Ablauf ist dabei meist sehr ähnlich zu dem dargestellten Beispiel eines Videouploads (Abb. 1).

Abb. 1: Ein Request wird relativ zügig abgearbeitet und stellt in diesem Fall eine zu bearbeitende Datei in ein Verzeichnis ein. Das Bearbeiten der Datei (Encoding) wird aber von einem ganz anderen Prozess übernommen

RabbitMQ – Basics

RabbitMQ ist ein in Erlang und auf Basis des OTP-Frameworks [3] implementierter Message Broker. Ein Message Broker verteilt Nachrichten von einem System zum anderen und kann konfiguriert werden, um Nachrichten nach bestimmten Regeln zuzustellen. RabbitMQ kann als programmiersprachenunabhängiges Übergangswerkzeug von einer Applikation zur anderen eingesetzt werden und hilft bei der Entkoppelung verschiedener unabhängiger und möglicherweise verschiedenartiger Applikationen, dem asynchronen Bearbeiten von Aufgaben in einer Prozesskette oder bei der Anwendung des Publish/Subscribe[4]-Patterns.

Ausfallsicherheit und Datenintegrität sind Teil der Architektur von RabbitMQ. So kann zum Beispiel für jede Nachricht entschieden werden, ob der Erhalt vom Empfänger dem sog. Publisher bestätigt werden muss, oder ob ein „Fire and Forget“-Verhalten ausreichend ist. Zur Ausfallsicherheit können mehrere Instanzen von RabbitMQ-Server zu einem Cluster zusammengeschaltet werden. Dabei ist ein Ausfall eines einzelnen Servers unproblematisch, da alle Queues auf allen Servern des Clusters gespiegelt werden können. Das Clustermanagement ist dabei so intelligent, dass der Verlust einer Nachricht sehr unwahrscheinlich ist. Als RabbitMQ in unserem Unternehmen Gearman [5] für neue Projekte abgelöst hat, waren unsere Administratoren bei einer Vorstellung der Features von RabbitMQ bezüglich Ausfallsicherheit und Datenintegrität sofort begeistert. Zur Kommunikation verwendet RabbitMQ das AMQP-­Protokoll zwischen Client, Broker und Consumer.

AMQP

Das Advanced Message Queuing Protocol (AMQP, [6]) ist ein binäres programmiersprachenunabhängiges Kommunikationsprotokoll wie zum Beispiel FTP, POP oder IMAP. Es wurde ursprünglich für und von Firmen der Finanzindustrie entwickelt. Es wurde recht schnell deutlich, dass das Protokoll zur Kommunikation von Applikationen...

Neugierig geworden?


    
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang