Arbeit im LAN verteilen

Seite 2: Umsetzung

Inhaltsverzeichnis

Im Kern besteht Gearman aus einem Protokoll, das den beteiligten Computern eine von drei Rollen zuweist: Ein Job-Server nimmt Aufgaben von Clients entgehen und verteilt diese auf Worker im Netzwerk, die die Arbeit erledigen. Die Worker registrieren sich vorher beim Job-Server über einen Namen (Function), der beschreibt, welche Aufgaben sie abarbeiten können. Während man mit allen oben genannten Programmiersprachen Gearman-Clients und -Worker erzeugen kann, musste man für den Job-Server lange auf die Umsetzungen in C und Perl setzen. Seit einiger Zeit steht jedoch auch ein in Java geschriebener Job-Server namens java-gearman-service bereit.

Das Gearman-Protokoll verteilt über Job-Server Aufgaben an andere Computer, die so gemeinsame Datenbestände verarbeiten können. Auf bestimmte Programmiersprachen oder ein Betriebssystem legt es sich dabei nicht fest.

Gearman kommuniziert über den TCP-Port 4730 – unverschlüsselt, und einen Mechanismus zur Authentifizierung der Clients und Worker beherrscht das Protokoll auch nicht. Daher eignet es sich nur für abgeschottete Netze. Soll Gearman große Datenmengen wie Bilder verarbeiten, benötigt man ohnehin ein schnelles Netzwerk, über das Clients und Worker auf gemeinsame Freigaben etwa per Samba, NFS oder Cluster-Filesystem wie GFS zugreifen.

Für die Kommunikation zwischen Client, Job-Server und Worker nutzt das Protokoll ein Binär-Format, in dem es neben Steueranweisungen auch die Arbeitsaufträge (Workload) für die Worker weiterreicht. Statusinformationen und einige administrative Aufgaben lassen sich jedoch über Telnet oder Netcat per Textkommando vom Job-Server abrufen respektive ausführen.

Die Gearman-Umsetzungen muss man zum Teil per Hand übersetzen oder über Zusatzprogramme installieren. Sehr schnell gelingt das in Python mit den Modulinstallern pip oder easy_install. Mehr Handarbeit benötigt die PECL-Erweiterung gearman für PHP, die auf Gearmans C-Bibliothek aufsetzt und bislang nur als Quelltext vorliegt. Ähnlich sieht es derzeit bei der Gearman-Unterstützung für Datenbanken aus. Details zur Installation finden sich jedoch auf der Gearman-Homepage und in den jeweiligen Quelltext-Paketen.