ASYNC JOB EXECUTION         MIT SYMFONY2                  ‘Die Welt ist nicht genug’Wolfgang Münder
Browser             Apache PHP          Timeout
Browser          Apache PHP   PHP          Done
PROBLEMSTELLUNG• Hoher   Zeitaufwand (Timeout!)• Hoher   Speicherbedarf• User   braucht Ergebnis nicht sofort
ANFORDERUNGEN• Client-Prozesse• Job-Server        (ggf. mehrere)• Worker       auf mehreren Async-Servern• Konfigurierbar  ...
FRAMEWORK• Job   Queuing System  • Gearman• Alternative: Message   Queue  • ActiveMQ, RabbitMQ, ZeroMQ
CLIENT‘In tödlicher Mission’
CLIENT•   Best practice: GearmanClient abstrahieren    •   Symfony2 Service•   Schlankes Interface    •   Job einstellen  ...
JOB-SERVER  ‘Octopussy’
WORKER‘Stirb an einem anderen Tag’
SYMFONY2 FRISST SPEICHER      Lass es nicht lange leben.
TRENNE WORKER UND JOBS
WORKER COMMAND  ‘Leben und sterben lassen’
WORKER COMMAND• Lebt   ewig (supervisor)• Registriert   sich für Jobtypen (laut config)• Startet   Job Commands (proc_open)...
WORKER COMMAND• Nice   to have • Eigenes   Logfile für Worker • Logging   mit hostname + process_id
JOB COMMAND ‘Man lebt nur zweinmal’
JOB COMMAND• Lebt   nur für einen Job• Vollständig   entkoppelt vom Job-Framework• Änderungen     im Code sofort verfügbar...
JOB COMMAND•   Nice to have    •   Eigenes Logfile pro Jobtyp    •   Logging mit hostname + process_id    •   Generische Fe...
TESTS‘Ein Quantum Trost’
TESTS• Infrastruktur   immer nur bedingt testbar• Test-Client  • Prüft   ob Jobs korrekt eingestellt werden  • Prüft   ob ...
GEARMANJob-Server auf mehreren Servern funktioniert nicht
GEARMANJob-Priorität nicht über Jobtypen hinweg
GEARMANOutput abrufen nur ‘händisch’
FAZIT• Gearman       löst Timeout-Probleme• Generische      Implementierung durch Abstraktion• Gearman       löst das Skal...
Nächste SlideShare
Wird geladen in …5
×

Async Job Execution mit Symfony2

1.364 Aufrufe

Veröffentlicht am

Umfangreiche (Symfony2-) Applikationen machen es oftmals nötig größere BackEnd-Aufgaben asynchron auf mehrere Server zu verteilen. Ich möchte in diesem Vortrag ein generisches und leichtgewichtiges Setup für eine Symfony2 Applikation vorstellen. Als Beispiel ist hier (aus historischen Gründen) Gearman gewählt.

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

  • Gehören Sie zu den Ersten, denen das gefällt!

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

Keine Notizen für die Folie

Async Job Execution mit Symfony2

  1. 1. ASYNC JOB EXECUTION MIT SYMFONY2 ‘Die Welt ist nicht genug’Wolfgang Münder
  2. 2. Browser Apache PHP Timeout
  3. 3. Browser Apache PHP PHP Done
  4. 4. PROBLEMSTELLUNG• Hoher Zeitaufwand (Timeout!)• Hoher Speicherbedarf• User braucht Ergebnis nicht sofort
  5. 5. ANFORDERUNGEN• Client-Prozesse• Job-Server (ggf. mehrere)• Worker auf mehreren Async-Servern• Konfigurierbar • Jobtypen (pro Worker) • Job Priorität • Worker-Instanzen pro Server Image (c) http://gearman.org/
  6. 6. FRAMEWORK• Job Queuing System • Gearman• Alternative: Message Queue • ActiveMQ, RabbitMQ, ZeroMQ
  7. 7. CLIENT‘In tödlicher Mission’
  8. 8. CLIENT• Best practice: GearmanClient abstrahieren • Symfony2 Service• Schlankes Interface • Job einstellen • Job Status abrufen • Job Output abrufen • Überblick über alle Jobs/Jobtypen
  9. 9. JOB-SERVER ‘Octopussy’
  10. 10. WORKER‘Stirb an einem anderen Tag’
  11. 11. SYMFONY2 FRISST SPEICHER Lass es nicht lange leben.
  12. 12. TRENNE WORKER UND JOBS
  13. 13. WORKER COMMAND ‘Leben und sterben lassen’
  14. 14. WORKER COMMAND• Lebt ewig (supervisor)• Registriert sich für Jobtypen (laut config)• Startet Job Commands (proc_open)• Organisiert Kommunikation• Best practice: GearmanWorker, GearmanJob abstrahiert
  15. 15. WORKER COMMAND• Nice to have • Eigenes Logfile für Worker • Logging mit hostname + process_id
  16. 16. JOB COMMAND ‘Man lebt nur zweinmal’
  17. 17. JOB COMMAND• Lebt nur für einen Job• Vollständig entkoppelt vom Job-Framework• Änderungen im Code sofort verfügbar• Eigenes Command pro Jobtyp
  18. 18. JOB COMMAND• Nice to have • Eigenes Logfile pro Jobtyp • Logging mit hostname + process_id • Generische Fehlerbehandlung • E-Mail im Fehlerfall • Xhprof Profiling • Login über serialisierten Token
  19. 19. TESTS‘Ein Quantum Trost’
  20. 20. TESTS• Infrastruktur immer nur bedingt testbar• Test-Client • Prüft ob Jobs korrekt eingestellt werden • Prüft ob Jobs korrekte Argumente erhalten• Job Commands individuell testbar
  21. 21. GEARMANJob-Server auf mehreren Servern funktioniert nicht
  22. 22. GEARMANJob-Priorität nicht über Jobtypen hinweg
  23. 23. GEARMANOutput abrufen nur ‘händisch’
  24. 24. FAZIT• Gearman löst Timeout-Probleme• Generische Implementierung durch Abstraktion• Gearman löst das Skalierungsproblem aber nicht vollständigwolfgang.muender@tngtech.com

×