gearman - distributed job system

Post on 02-Jul-2015

3.211 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

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

© 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