© 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...
Mayflower GmbH I 4
Gearman – History
I Initial in Perl geschrieben
· Brad Fitzpatrick (Danga Interactive - Livejournal.com...
Mayflower GmbH I 5
Gearman – Heute
I Implementierung des Frameworks in C
· Brian Aker und Eric Day
Brian: Drizzle MySql F...
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 Ser...
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....
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/i...
Mayflower GmbH I 15
PHP CLIENT
Mayflower GmbH I 16
Gearman – Client PHP
I Gearman Client PHP
· Erstellt Aufgaben und sendet selbige zum Jobserver
· Param...
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 Sock...
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
· ...
Mayflower GmbH I 24
Gearman – Das Text Protokoll / Befehle 1
I Textbefehle:
· “workers“ => Liste aller registrierten Worke...
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 ...
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. dezen...
Mayflower GmbH I 31
Gearman – Distributed II
I Einfache dezentrale und erweiterbare Struktur
I Nutzen vorhandener Infrastr...
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 Gearma...
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/gea...
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.
· gea...
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 Procedure...
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 ...
Mayflower GmbH I 43
I Gearman Manager => PHP Gearman Worker als Daemon laufen
lassen
· Mit diesem Aufruf werden 3 PHP Gear...
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 Processin...
Mayflower GmbH I 47
Gearman – Rechenintensive Operationen
find ./ -name "*.php" -o -name ".htaccess" | xargs egrep -rin
"i...
Mayflower GmbH I 48
Quellen
I Resources / Links:
·http://www.gearman.org
·http://danga.com, http://www.livejournal.com/,
h...
28.10.10 Mayflower GmbH 49
Vielen Dank für Ihre Aufmerksamkeit!
Kontakt Web http://www.mayflower.de
Email: frank.ruske@may...
Nächste SlideShare
Wird geladen in …5
×

Gearman - Distributed Job System

4.476 Aufrufe

Veröffentlicht am

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.

Veröffentlicht in: Technologie
0 Kommentare
3 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
4.476
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
3
Aktionen
Geteilt
0
Downloads
55
Kommentare
0
Gefällt mir
3
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Gearman - Distributed Job System

  1. 1. © Mayflower GmbH 2010 Gearman Frank Ruske I IPC I 11. Oktober 2010
  2. 2. Mayflower GmbH I 2 Gearman
  3. 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. 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. 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. 6. Mayflower GmbH I 6 OpenSource Application Framework zum Verteilen von Aufgaben „distributed job system“
  7. 7. Mayflower GmbH I 7 GEARMAN – MANAGER „Worker <=> Manager <=> Client“
  8. 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
  9. 9. Mayflower GmbH I 9 Gearman – Client / Server / Worker
  10. 10. Mayflower GmbH I 10 Installation & Konfiguration
  11. 11. Mayflower GmbH I 11 Gearman – Installation
  12. 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. 13. Mayflower GmbH I 13 Gearman – Help – /usr/local/sbin/gearmand -h
  14. 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“
  15. 15. Mayflower GmbH I 15 PHP CLIENT
  16. 16. 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)
  17. 17. Mayflower GmbH I 17 PHP WORKER
  18. 18. Mayflower GmbH I 18 Gearman – Worker PHP I Gearman Worker PHP · Registriert sich am Jobserver und arbeitet Jobs ab
  19. 19. Mayflower GmbH I 19 Gearman – Workflow der Beispielanwendung
  20. 20. Mayflower GmbH I 20 DAS PROTOKOLL
  21. 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. 22. Mayflower GmbH I 22 Gearman – Übersicht der Gearman TCP Packet- Typen I Übersicht der Gearman TCP Packet- Typen
  23. 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. 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
  25. 25. Mayflower GmbH I 25 Telnet- Zugriff auf Gearman-Jobserver
  26. 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
  27. 27. Mayflower GmbH I 27 Distributed Processing
  28. 28. Mayflower GmbH I 28 Gearman Workflow
  29. 29. Mayflower GmbH I 29 Gearman Cluster / Load Balancing
  30. 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. 31. Mayflower GmbH I 31 Gearman – Distributed II I Einfache dezentrale und erweiterbare Struktur I Nutzen vorhandener Infrastrukturen (Software und Hardware)
  32. 32. Mayflower GmbH I 32 „Command Line Tool“ gearman shell worker und gearman shell client
  33. 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“
  34. 34. Mayflower GmbH I 34 Gearman – Command Line Tool - Help
  35. 35. Mayflower GmbH I 35 „SHELL CLIENT“ Gearman Command Line Tool
  36. 36. 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
  37. 37. Mayflower GmbH I 37 „SHELL WORKER“ Gearman Command Line Tool
  38. 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.
  39. 39. Mayflower GmbH I 39 „MySQL Client“ UDF - User defined functions
  40. 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
  41. 41. Mayflower GmbH I 41 „Gearman Manager“
  42. 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. 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
  44. 44. Mayflower GmbH I 44 Gearman – Gearman Manager – Funktionen
  45. 45. Mayflower GmbH I 45 Einsatzgebiete?
  46. 46. 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
  47. 47. 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"
  48. 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. 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

×