Transcript
Page 1: Gearman - Distributed Job System

© Mayflower GmbH 2010

Gearman

Frank Ruske I IPC I 11. Oktober 2010

Page 2: Gearman - Distributed Job System

Mayflower GmbH I 2

Gearman

Page 3: Gearman - Distributed Job System

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

Page 4: Gearman - Distributed Job System

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/

Page 5: Gearman - Distributed Job System

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

Page 6: Gearman - Distributed Job System

Mayflower GmbH I 6

OpenSource Application Framework

zum Verteilen von Aufgaben

„distributed job system“

Page 7: Gearman - Distributed Job System

Mayflower GmbH I 7

GEARMAN – MANAGER

„Worker <=> Manager <=> Client“

Page 8: Gearman - Distributed Job System

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

Page 9: Gearman - Distributed Job System

Mayflower GmbH I 9

Gearman – Client / Server / Worker

Page 10: Gearman - Distributed Job System

Mayflower GmbH I 10

Installation & Konfiguration

Page 11: Gearman - Distributed Job System

Mayflower GmbH I 11

Gearman – Installation

Page 12: Gearman - Distributed Job System

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

Page 13: Gearman - Distributed Job System

Mayflower GmbH I 13

Gearman – Help – /usr/local/sbin/gearmand -h

Page 14: Gearman - Distributed Job System

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“

Page 15: Gearman - Distributed Job System

Mayflower GmbH I 15

PHP CLIENT

Page 16: Gearman - Distributed Job System

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)

Page 17: Gearman - Distributed Job System

Mayflower GmbH I 17

PHP WORKER

Page 18: Gearman - Distributed Job System

Mayflower GmbH I 18

Gearman – Worker PHP

I Gearman Worker PHP

· Registriert sich am Jobserver und arbeitet Jobs ab

Page 19: Gearman - Distributed Job System

Mayflower GmbH I 19

Gearman – Workflow der Beispielanwendung

Page 20: Gearman - Distributed Job System

Mayflower GmbH I 20

DAS PROTOKOLL

Page 21: Gearman - Distributed Job System

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

Page 22: Gearman - Distributed Job System

Mayflower GmbH I 22

Gearman – Übersicht der Gearman TCP Packet- Typen

I Übersicht der Gearman TCP Packet- Typen

Page 23: Gearman - Distributed Job System

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

Page 24: Gearman - Distributed Job System

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

Page 25: Gearman - Distributed Job System

Mayflower GmbH I 25

Telnet- Zugriff auf Gearman-Jobserver

Page 26: Gearman - Distributed Job System

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

Page 27: Gearman - Distributed Job System

Mayflower GmbH I 27

Distributed Processing

Page 28: Gearman - Distributed Job System

Mayflower GmbH I 28

Gearman Workflow

Page 29: Gearman - Distributed Job System

Mayflower GmbH I 29

Gearman Cluster / Load Balancing

Page 30: Gearman - Distributed Job System

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

Page 31: Gearman - Distributed Job System

Mayflower GmbH I 31

Gearman – Distributed II

I Einfache dezentrale und erweiterbare Struktur

I Nutzen vorhandener Infrastrukturen (Software und Hardware)

Page 32: Gearman - Distributed Job System

Mayflower GmbH I 32

„Command Line Tool“gearman shell worker und gearman shell client

Page 33: Gearman - Distributed Job System

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“

Page 34: Gearman - Distributed Job System

Mayflower GmbH I 34

Gearman – Command Line Tool - Help

Page 35: Gearman - Distributed Job System

Mayflower GmbH I 35

„SHELL CLIENT“

Gearman Command Line Tool

Page 36: Gearman - Distributed Job System

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

Page 37: Gearman - Distributed Job System

Mayflower GmbH I 37

„SHELL WORKER“

Gearman Command Line Tool

Page 38: Gearman - Distributed Job System

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.

Page 39: Gearman - Distributed Job System

Mayflower GmbH I 39

„MySQL Client“

UDF - User defined functions

Page 40: Gearman - Distributed Job System

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

Page 41: Gearman - Distributed Job System

Mayflower GmbH I 41

„Gearman Manager“

Page 42: Gearman - Distributed Job System

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

Page 43: Gearman - Distributed Job System

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

Page 44: Gearman - Distributed Job System

Mayflower GmbH I 44

Gearman – Gearman Manager – Funktionen

Page 45: Gearman - Distributed Job System

Mayflower GmbH I 45

Einsatzgebiete?

Page 46: Gearman - Distributed Job System

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

Page 47: Gearman - Distributed Job System

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"

Page 48: Gearman - Distributed Job System

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

Page 49: Gearman - Distributed Job System

28.10.10 Mayflower GmbH 49

Vielen Dank für Ihre Aufmerksamkeit!

Kontakt Web http://www.mayflower.de

Email: [email protected]

Tel +49 931 35965 1161

Mayflower GmbH

Pleichertorstr. 2

97070 Würzburg


Top Related