gearman - distributed job system
Post on 02-Jul-2015
3.211 Views
Preview:
DESCRIPTION
TRANSCRIPT
© Mayflower GmbH 2010
Gearman
Frank Ruske I IPC I 11. Oktober 2010
Mayflower GmbH I 2
Gearman
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
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/
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
Mayflower GmbH I 6
OpenSource Application Framework
zum Verteilen von Aufgaben
„distributed job system“
Mayflower GmbH I 7
GEARMAN – MANAGER
„Worker <=> Manager <=> Client“
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
Mayflower GmbH I 9
Gearman – Client / Server / Worker
Mayflower GmbH I 10
Installation & Konfiguration
Mayflower GmbH I 11
Gearman – Installation
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
Mayflower GmbH I 13
Gearman – Help – /usr/local/sbin/gearmand -h
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“
Mayflower GmbH I 15
PHP CLIENT
Mayflower GmbH I 16
Gearman – Client PHP
I Gearman Client PHP
· Erstellt Aufgaben und sendet selbige zum Jobserver
· Parameter: Jobname (@param string) , Workload (@param mixed)
Mayflower GmbH I 17
PHP WORKER
Mayflower GmbH I 18
Gearman – Worker PHP
I Gearman Worker PHP
· Registriert sich am Jobserver und arbeitet Jobs ab
Mayflower GmbH I 19
Gearman – Workflow der Beispielanwendung
Mayflower GmbH I 20
DAS PROTOKOLL
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
Mayflower GmbH I 22
Gearman – Übersicht der Gearman TCP Packet- Typen
I Übersicht der Gearman TCP Packet- Typen
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 ProtokollAlles andere => Text Protokoll
Mayflower GmbH I 24
Gearman – Das Text Protokoll / Befehle 1
I Textbefehle:
· “workers“ => Liste aller registrierten WorkerInklusive 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
Mayflower GmbH I 25
Telnet- Zugriff auf Gearman-Jobserver
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
Mayflower GmbH I 27
Distributed Processing
Mayflower GmbH I 28
Gearman Workflow
Mayflower GmbH I 29
Gearman Cluster / Load Balancing
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
Mayflower GmbH I 31
Gearman – Distributed II
I Einfache dezentrale und erweiterbare Struktur
I Nutzen vorhandener Infrastrukturen (Software und Hardware)
Mayflower GmbH I 32
„Command Line Tool“gearman shell worker und gearman shell client
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“
Mayflower GmbH I 34
Gearman – Command Line Tool - Help
Mayflower GmbH I 35
„SHELL CLIENT“
Gearman Command Line Tool
Mayflower GmbH I 36
Gearman – Command Line Tool – Client
I Client Aufruf (Job mit Workload ausführen)· /usr/local/bin/gearman -f GearmanJob_UpperCase "make me upper"
I Client Aufruf mit Linux PIPE (just 4 fun)· /usr/local/bin/gearman -f GearmanJob_LowerCase < /etc/passwd
Mayflower GmbH I 37
„SHELL WORKER“
Gearman Command Line Tool
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.
Mayflower GmbH I 39
„MySQL Client“
UDF - User defined functions
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
Mayflower GmbH I 41
„Gearman Manager“
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
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/GearmanManager/workers/" -h127.0.0.1:4730 -d -P“/var/run/gearman_manager.pid“
Gearman – Gearman Manager II
Mayflower GmbH I 44
Gearman – Gearman Manager – Funktionen
Mayflower GmbH I 45
Einsatzgebiete?
Mayflower GmbH I 46
Gearman – Mögliche Einsatzgebiete
I Rechenintensive Operationen
· Thumbnail Erstellung
· Video Processing
· Statistiken / Logfile Analysen
· Katalog Import
· Etc...
I Cache Warmup
I Kommunikation zwischen verschiedenen Architekturen
Mayflower GmbH I 47
Gearman – Rechenintensive Operationen
find ./ -name "*.php" -o -name ".htaccess" | xargs egrep -rin "ini_set(.*)max_execution_time(.*)|set_time_limit[:blank:]{0,1}\((.*)\)|ini_set(.*)memory_limit|php_value(.*)max_execution_time|php_value(.*)memory_limit"
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
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
top related