gearman - distributed job system

49
© Mayflower GmbH 2010 Gearman Frank Ruske I IPC I 11. Oktober 2010

Upload: mayflower-gmbh

Post on 02-Jul-2015

3.211 views

Category:

Technology


5 download

DESCRIPTION

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.

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