SlideShare ist ein Scribd-Unternehmen logo
1 von 49
Downloaden Sie, um offline zu lesen
© 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 Protokoll
Alles andere => Text Protokoll
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
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/GearmanMan
ager/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

Weitere ähnliche Inhalte

Andere mochten auch

INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3thefasp10
 
PréSentation1 Hundertwasser
PréSentation1 HundertwasserPréSentation1 Hundertwasser
PréSentation1 HundertwasserFrauA
 
Guia de informatica enfermeria
Guia de informatica enfermeria Guia de informatica enfermeria
Guia de informatica enfermeria Cristina Pardo
 
Trabajo pasado
Trabajo pasadoTrabajo pasado
Trabajo pasadoJuan Gomez
 
Arquitectura cliente servidor
Arquitectura cliente servidorArquitectura cliente servidor
Arquitectura cliente servidorMemo Wars
 
Vom Nutzen von Mind Maps
Vom Nutzen von Mind MapsVom Nutzen von Mind Maps
Vom Nutzen von Mind MapsThomas N. Burg
 
Plantronics Unified Communications Trendreport 2009
Plantronics Unified Communications Trendreport 2009Plantronics Unified Communications Trendreport 2009
Plantronics Unified Communications Trendreport 2009Zucker.Kommunikation
 
Presentación impress de unidad didáctica de lengua jlcl
Presentación impress de unidad didáctica de lengua jlclPresentación impress de unidad didáctica de lengua jlcl
Presentación impress de unidad didáctica de lengua jlclMagistersigloXXI
 
Social Media in Unternehmen - Chancen und Risiken neuer Kommunikationsformen
Social Media in Unternehmen - Chancen und Risiken neuer KommunikationsformenSocial Media in Unternehmen - Chancen und Risiken neuer Kommunikationsformen
Social Media in Unternehmen - Chancen und Risiken neuer KommunikationsformenJörn Hendrik Ast
 
Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...
Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...
Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...FABIS Sales Solutions GmbH & Co. KG
 
E-Teaching: Ein Erfahrungsbericht
E-Teaching: Ein ErfahrungsberichtE-Teaching: Ein Erfahrungsbericht
E-Teaching: Ein ErfahrungsberichtJörg Hafer
 
Presentación modelo de conumicacion wiki
Presentación modelo de conumicacion wikiPresentación modelo de conumicacion wiki
Presentación modelo de conumicacion wikimarlenecardona2008
 
La pedagogía de la investigación acción de un blog blogger spot
La pedagogía de la investigación acción de un blog blogger spotLa pedagogía de la investigación acción de un blog blogger spot
La pedagogía de la investigación acción de un blog blogger spotteam5mas1
 
Enfermero interno residente (EIR)
Enfermero interno residente (EIR)Enfermero interno residente (EIR)
Enfermero interno residente (EIR)bloginformatica14
 

Andere mochten auch (20)

INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3INTRODUCCIÓN ADSI - PARTE 3
INTRODUCCIÓN ADSI - PARTE 3
 
PréSentation1 Hundertwasser
PréSentation1 HundertwasserPréSentation1 Hundertwasser
PréSentation1 Hundertwasser
 
Guia de informatica enfermeria
Guia de informatica enfermeria Guia de informatica enfermeria
Guia de informatica enfermeria
 
Losvirusinformtico
LosvirusinformticoLosvirusinformtico
Losvirusinformtico
 
Trabajo pasado
Trabajo pasadoTrabajo pasado
Trabajo pasado
 
Arquitectura cliente servidor
Arquitectura cliente servidorArquitectura cliente servidor
Arquitectura cliente servidor
 
Vom Nutzen von Mind Maps
Vom Nutzen von Mind MapsVom Nutzen von Mind Maps
Vom Nutzen von Mind Maps
 
Plantronics Unified Communications Trendreport 2009
Plantronics Unified Communications Trendreport 2009Plantronics Unified Communications Trendreport 2009
Plantronics Unified Communications Trendreport 2009
 
Presentación impress de unidad didáctica de lengua jlcl
Presentación impress de unidad didáctica de lengua jlclPresentación impress de unidad didáctica de lengua jlcl
Presentación impress de unidad didáctica de lengua jlcl
 
Social Media in Unternehmen - Chancen und Risiken neuer Kommunikationsformen
Social Media in Unternehmen - Chancen und Risiken neuer KommunikationsformenSocial Media in Unternehmen - Chancen und Risiken neuer Kommunikationsformen
Social Media in Unternehmen - Chancen und Risiken neuer Kommunikationsformen
 
Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...
Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...
Rollen und Rechte, Zugriffskonzept in der Userverwaltung im CRM für Homeoffiv...
 
Software educativo
Software educativoSoftware educativo
Software educativo
 
E-Teaching: Ein Erfahrungsbericht
E-Teaching: Ein ErfahrungsberichtE-Teaching: Ein Erfahrungsbericht
E-Teaching: Ein Erfahrungsbericht
 
Impulsvortrag führung
Impulsvortrag führungImpulsvortrag führung
Impulsvortrag führung
 
Presentación modelo de conumicacion wiki
Presentación modelo de conumicacion wikiPresentación modelo de conumicacion wiki
Presentación modelo de conumicacion wiki
 
Búsqueda en cuiden
Búsqueda en cuidenBúsqueda en cuiden
Búsqueda en cuiden
 
Hotel plaza antigua
Hotel plaza antiguaHotel plaza antigua
Hotel plaza antigua
 
La pedagogía de la investigación acción de un blog blogger spot
La pedagogía de la investigación acción de un blog blogger spotLa pedagogía de la investigación acción de un blog blogger spot
La pedagogía de la investigación acción de un blog blogger spot
 
Enfermero interno residente (EIR)
Enfermero interno residente (EIR)Enfermero interno residente (EIR)
Enfermero interno residente (EIR)
 
01 bloga sortu
01 bloga sortu01 bloga sortu
01 bloga sortu
 

Ähnlich wie Gearman - Distributed Job System

Shell Fu for Developers
Shell Fu for DevelopersShell Fu for Developers
Shell Fu for DevelopersMayflower GmbH
 
FastCGI Process Manager
FastCGI Process ManagerFastCGI Process Manager
FastCGI Process ManagerMayflower GmbH
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthGerhard Lausser
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataGunther Pippèrr
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppetinovex GmbH
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaQAware GmbH
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHPThomas Burgard
 
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...Verein FM Konferenz
 
Open Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMNOpen Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMNcamunda services GmbH
 
Der ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionRalf Eggert
 
Anleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für OpencmsAnleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für OpencmsStefan Hilpp
 
JS Best Practises Debugging und Logging
JS Best Practises Debugging und LoggingJS Best Practises Debugging und Logging
JS Best Practises Debugging und LoggingMayflower GmbH
 
camunda BPM community event Dortmund
camunda BPM community event Dortmundcamunda BPM community event Dortmund
camunda BPM community event Dortmundcamunda services GmbH
 
camunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshowcamunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshowcamunda services GmbH
 
Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Gunther Pippèrr
 
Web-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::MechanizeWeb-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::MechanizeThomas Fahle
 
ScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungHeiko Brenn
 
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und JavaJUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und Javacamunda services GmbH
 

Ähnlich wie Gearman - Distributed Job System (20)

Shell Fu for Developers
Shell Fu for DevelopersShell Fu for Developers
Shell Fu for Developers
 
FastCGI Process Manager
FastCGI Process ManagerFastCGI Process Manager
FastCGI Process Manager
 
camunda BPM @ JUG München
camunda BPM @ JUG Münchencamunda BPM @ JUG München
camunda BPM @ JUG München
 
Monitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_healthMonitoring von SAP mit check_sap_health
Monitoring von SAP mit check_sap_health
 
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import DataIntroduction into Oracle Data Pump 11g/12c - Export and Import Data
Introduction into Oracle Data Pump 11g/12c - Export and Import Data
 
Grundlagen puppet
Grundlagen puppetGrundlagen puppet
Grundlagen puppet
 
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und GrafanaCloud Observability mit Loki, Prometheus, Tempo und Grafana
Cloud Observability mit Loki, Prometheus, Tempo und Grafana
 
High performance mit PHP
High performance mit PHPHigh performance mit PHP
High performance mit PHP
 
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...
FMK2014: Ein Warenwirtschaftssystem, das mit Scannern, Waagen und Mitarbeiter...
 
Open Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMNOpen Source Workflowmanagement mit BPMN und CMMN
Open Source Workflowmanagement mit BPMN und CMMN
 
Der ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 Edition
 
Anleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für OpencmsAnleitung zur Installation von Tomcat für Opencms
Anleitung zur Installation von Tomcat für Opencms
 
JS Best Practises Debugging und Logging
JS Best Practises Debugging und LoggingJS Best Practises Debugging und Logging
JS Best Practises Debugging und Logging
 
camunda BPM community event Dortmund
camunda BPM community event Dortmundcamunda BPM community event Dortmund
camunda BPM community event Dortmund
 
camunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshowcamunda BPM - presented at Oracle vs. camunda Shootout Roadshow
camunda BPM - presented at Oracle vs. camunda Shootout Roadshow
 
Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015Oracle connection manager_cman_doag_sig_security_mai_2015
Oracle connection manager_cman_doag_sig_security_mai_2015
 
Web-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::MechanizeWeb-Automatisierung mit WWW::Mechanize
Web-Automatisierung mit WWW::Mechanize
 
ScriptRunner - Eine Einführung
ScriptRunner - Eine EinführungScriptRunner - Eine Einführung
ScriptRunner - Eine Einführung
 
Logging mit log4net
Logging mit log4netLogging mit log4net
Logging mit log4net
 
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und JavaJUG Luzern: Open Source BPM mit BPMN 2.0 und Java
JUG Luzern: Open Source BPM mit BPMN 2.0 und Java
 

Mehr von Mayflower GmbH

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mayflower GmbH
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftMayflower GmbH
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientMayflower GmbH
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingMayflower GmbH
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...Mayflower GmbH
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyMayflower GmbH
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming MythbustersMayflower GmbH
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im GlückMayflower GmbH
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefernMayflower GmbH
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsMayflower GmbH
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalierenMayflower GmbH
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastMayflower GmbH
 
Mongo DB - Segen oder Fluch
Mongo DB - Segen oder FluchMongo DB - Segen oder Fluch
Mongo DB - Segen oder FluchMayflower GmbH
 

Mehr von Mayflower GmbH (20)

Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
Mit Maintenance umgehen können- Fixt du noch Bugs oder lieferst du schon neue...
 
Why and what is go
Why and what is goWhy and what is go
Why and what is go
 
Agile Anti-Patterns
Agile Anti-PatternsAgile Anti-Patterns
Agile Anti-Patterns
 
Vom Entwickler zur Führungskraft
Vom Entwickler zur FührungskraftVom Entwickler zur Führungskraft
Vom Entwickler zur Führungskraft
 
Produktive teams
Produktive teamsProduktive teams
Produktive teams
 
Salt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native ClientSalt and pepper — native code in the browser Browser using Google native Client
Salt and pepper — native code in the browser Browser using Google native Client
 
Plugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debuggingPlugging holes — javascript memory leak debugging
Plugging holes — javascript memory leak debugging
 
Usability im web
Usability im webUsability im web
Usability im web
 
Rewrites überleben
Rewrites überlebenRewrites überleben
Rewrites überleben
 
JavaScript Security
JavaScript SecurityJavaScript Security
JavaScript Security
 
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
50 mal produktiver - oder warum ich gute Teams brauche und nicht gute Entwick...
 
Responsive Webdesign
Responsive WebdesignResponsive Webdesign
Responsive Webdesign
 
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und AlloyNative Cross-Platform-Apps mit Titanium Mobile und Alloy
Native Cross-Platform-Apps mit Titanium Mobile und Alloy
 
Pair Programming Mythbusters
Pair Programming MythbustersPair Programming Mythbusters
Pair Programming Mythbusters
 
Shoeism - Frau im Glück
Shoeism - Frau im GlückShoeism - Frau im Glück
Shoeism - Frau im Glück
 
Bessere Software schneller liefern
Bessere Software schneller liefernBessere Software schneller liefern
Bessere Software schneller liefern
 
Von 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 SprintsVon 0 auf 100 in 2 Sprints
Von 0 auf 100 in 2 Sprints
 
Piwik anpassen und skalieren
Piwik anpassen und skalierenPiwik anpassen und skalieren
Piwik anpassen und skalieren
 
Agilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce BreakfastAgilitaet im E-Commerce - E-Commerce Breakfast
Agilitaet im E-Commerce - E-Commerce Breakfast
 
Mongo DB - Segen oder Fluch
Mongo DB - Segen oder FluchMongo DB - Segen oder Fluch
Mongo DB - Segen oder Fluch
 

Gearman - Distributed Job System

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