Gearman ermöglicht paralleles abarbeiten von Aufgaben auf verteilten Systemen und Prozessen. Es bietet die Möglichkeit, Jobs zu parallelisieren, Last zu verteilen und Funktionen sprachübergreifend aufzurufen. In dieser Session werden neben den Grundlagen auch praxisbezogene Beispiele gezeigt.
3. Mayflower GmbH I 3
GEARMAN – MANAGER
„Gearman is an anagram for Manager, since it dispatches jobs to
be done, but does not do anything useful itself.“
http://www.gearman.org
4. Mayflower GmbH I 4
Gearman – History
I Initial in Perl geschrieben
· Brad Fitzpatrick (Danga Interactive - Livejournal.com / Sixapart.com)
http://brad.livejournal.com/2106943.html
· Danga Interactive (memcached, MogileFS, DJabberd, gearman)
http://www.danga.com/
5. Mayflower GmbH I 5
Gearman – Heute
I Implementierung des Frameworks in C
· Brian Aker und Eric Day
Brian: Drizzle MySql Fork, Mysql Memcached Storage
Engine, C Client Library memchached server …
Eric Day: Drizzle …
I PHP Extension von James Luedke / Craigslist.com
6. Mayflower GmbH I 6
OpenSource Application
Framework
zum Verteilen von Aufgaben
„distributed job system“
8. Mayflower GmbH I 8
Gearman – Übersicht
I Gearman Client
· Erstellt Aufgaben und sendet selbige zum Jobserver
I Gearman Server
· Verteilt Aufgaben an Worker;
· Liefert Ergebnisse an Clients
I Gearman Worker
· Registriert sich am Jobserver und arbeitet Jobs ab
12. Mayflower GmbH I 12
Gearman – Starten
I Starten des Gearman als Daemon Servers
· /usr/local/sbin/gearmand -d --listen=127.0.0.1 –-port=4730
▪-d = daemon / Hintergund Prozess
▪--listen = Nur auf diese IP / Host reagieren
▪--port = Der Port
I Debugging
· /usr/local/sbin/gearmand --listen=127.0.0.1 -vv -p4730
13. Mayflower GmbH I 13
Gearman – Help – /usr/local/sbin/gearmand -h
14. Mayflower GmbH I 14
Gearman – Installation PHP Extension
echo extension="gearman.so" >> php.ini
http://php.net/manual/de/install.pecl.phpize.php
Oder “pear install gearman“
21. Mayflower GmbH I 21
Gearman – Das Binär Protokoll
I Die Client- und Worker-APIs kommunizieren mit
dem Daemon über TCP Sockets.
I Die Kommunikation zwischen Workern, Clients und Jobserver
erfolgt mittels Binärpaketen.
I Der Header dieses Binärpakets ist wie folgt aufgebaut:
· 4 Byte Code: "0REQ" für Requests oder "0RES" für Responses.
· 4 Byte Code: big-endian Integer für den Pakettyp
· 4 Byte Große: big-endian Integer, Datengröße für nach dem
Header verschickte Daten
22. Mayflower GmbH I 22
Gearman – Übersicht der Gearman TCP Packet- Typen
I Übersicht der Gearman TCP Packet- Typen
23. Mayflower GmbH I 23
Gearman – Protokoll Unterscheidung Binär / Text
I Textbasiertes Protokoll für administrative Zwecke
· Gleicher Port / Unterscheidung Anhand des ersten Chars
0 => Binär Protokoll
Alles andere => Text Protokoll
24. Mayflower GmbH I 24
Gearman – Das Text Protokoll / Befehle 1
I Textbefehle:
· “workers“ => Liste aller registrierten Worker
Inklusive IP und Funktionen, die sie bearbeiten können
· „status“ => Liste aller registrierten Aufgaben
Reihenfolge
▪Jobs in Warteschlange
▪Laufende Jobs
▪Anzahl registrierter Worker die den Job ausführen
können
26. Mayflower GmbH I 26
Gearman – Das Text Protokoll / Befehle 2
I Weitere Textbefehle:
· “maxqueue“ => Setze maximale Anzahl der Jobs in der
Warteschlange für eine Funktion
Beispiel: maxqueue GearmanJob_UpperCase 100
· „shutdown“ => Server beenden
Option “Gracefull”:
▪Listening Socket schließen, aber Jobs noch ausführen
· „version“ => Zeige Gearman Server Version
30. Mayflower GmbH I 30
Gearman – Distributed I
I Möglichkeit beliebig viele Jobserver, Worker und Clients parallel
bzw. dezentral miteinander kommunizieren und arbeiten zu lassen
I No Single Point of Failure
I Extrem niedriger Protokoll Overhead
· Jobserver kann hunderte von Clients und Worker verwalten
31. Mayflower GmbH I 31
Gearman – Distributed II
I Einfache dezentrale und erweiterbare Struktur
I Nutzen vorhandener Infrastrukturen (Software und Hardware)
32. Mayflower GmbH I 32
„Command Line Tool“
gearman shell worker und gearman shell client
33. Mayflower GmbH I 33
Gearman – Command Line Tool
I Wird beim Kompilieren der Gearman Librarys installiert
I Kann als Gearman Client und Worker eingesetzt werden
I Binary z.B. in „/usr/local/bin/gearman“
I Hilfe: „/usr/local/bin/gearman -H“
38. Mayflower GmbH I 38
Gearman – Command Line Tool - Worker
I Durch das flag -w wird eine Worker Instanz initialisiert.
· gearman -w -f GearmanJob_UpperCase -- tr '[:lower:]' '[:upper:]';
I Kommt nun vom Jobserver eine Aufgabe „GearmanJob_UpperCase „
so wird der Workload an das Linux Programm tr übergeben und von
diesem bearbeitet.
40. Mayflower GmbH I 40
Gearman – MySQL Client (UDF)
Gearman API Funktionalitäten für SQL Querys, Trigger und Stored Procedures
https://launchpad.net/gearman-mysql-udf
42. Mayflower GmbH I 42
Gearman – Gearman Manager I
I OpenSource PHP Applikation zum Managen von PHP Gearman
Worker Prozessen (
http://github.com/brianlmoon/GearmanManager)
I Cronjob vs Start-Stop-Daemon == Zombie vs. Fork
I PHP-POSIX-Extension
· Kontrollieren von Prozessen auf Betriebssystemebene
· POSIX ermöglicht es PHP Prozesse zu forken und als Daemons
laufen zu lassen
43. Mayflower GmbH I 43
I Gearman Manager => PHP Gearman Worker als Daemon laufen
lassen
· Mit diesem Aufruf werden 3 PHP Gearman Worker Scripte im
Hintergrund als Daemon geforkt
php manager.php -a -D3
-w"/export/home/www/gearman.examples.local/htdocs/GearmanMan
ager/workers/" -h127.0.0.1:4730 -d
-P“/var/run/gearman_manager.pid“
Gearman – Gearman Manager II
48. Mayflower GmbH I 48
Quellen
I Resources / Links:
·http://www.gearman.org
·http://danga.com, http://www.livejournal.com/,
http://www.sixapart.com/
·http://gearman.org/index.php?id=protocol
·https://launchpad.net/gearman-mysql-udf
·http://php.net/manual/en/install.pecl.phpize.php
·http://github.com/brianlmoon/GearmanManager
·http://en.wikipedia.org/wiki/POSIX
·http://man.cx/start-stop-daemon%288%29
49. 28.10.10 Mayflower GmbH 49
Vielen Dank für Ihre Aufmerksamkeit!
Kontakt Web http://www.mayflower.de
Email: frank.ruske@mayflower.de
Tel +49 931 35965 1161
Mayflower GmbH
Pleichertorstr. 2
97070 Würzburg