© 2010 Mayflower GmbH Video-Tracking mit WebSockets, Node.js, Gearman und Redis Peter Voringer I 25. November 2010
© 2010 Mayflower GmbH
Video-Tracking mit WebSockets, Node.js, Gearman und Redis
Peter Voringer I 25. November 2010
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 2
Architektur - Überblick
Redis
MySQL
Node.js
Apache
Daemon Gearman
Worker
Browser
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 3
I Key-Value Speicher
I Hält Daten im Speicher, Option sie persistent wegzuspeichern
I Ähnlich zu z.B. Memcache
I Unterstützt Listen, Sets und sortierte Sets
I Atomare Operation auch für diese Datentypen
Architektur – Redis
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 4
I Server-Side JavaScript
I Google V8 Engine
I Event-Driven und Non-Blocking
I ECMAScript 5
Architektur – node.js
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 5
I Job-Server
I Flexibel
I Schnell
I Kein Single-Point-of-Failure
Architektur – Gearman
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 6
Architektur – Gearman
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 7
Architektur – Gearman
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 8
Architektur – Teil 1
REDIS
MySQL
Node.js
Apache
Daemon Gearman
Worker
Browser
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 9
I PHP Skript im Apache generiert einen Token
I Schreibt den Token mit zusätzlichen Informationen (MovieID, UserID, …) in die Datenbank
I Schreibt Token mit aktuellem Timestamp in Redis
I Speichert Token in die Tokenliste in Redis
I Liefert HTML/JavaScript mit Token und Adresse des node.js Servers an den Browser aus
Architektur – Teil 1
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 10
Architektur – Teil 1
REDIS
[TOKEN] [TIMESTAMP]
TOKENS [TOKEN][TOKEN][TOKEN]
[TOKEN][TOKEN]
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 11
Architektur – Teil 2
REDIS
MySQL
Node.js
Apache
Daemon Gearman
Worker
Browser
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 12
I Library• baut WebSocket Verbindung auf oder• lädt IFrame vom node.js Server
I Player sendet Events (pause, resume, …) an LibraryI Timer senden
• Update Event, wenn das Video läuft (250ms)• Keep-Alive Event, wenn das Video nicht läuft (60s)
I Library sendet Event• über WebSocket an node.js• per postMessage an das IFrame, welches es per AJAX an
node.js schicktI Close-Event bei onUnload
Architektur – Teil 2
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 13
Architektur – Teil 2
Node.jsBrowser
HTTPServer
WebSocketServer
Player
TimerWebSocket
IFrame
Library
token
id
action
position
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 14
Architektur – Teil 3
REDIS
MySQL
Node.js
Apache
Daemon Gearman
Worker
Browser
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 15
I Node.js updated Timestamp des Tokens
I Fügt Event der Event-Liste zum Token hinzu
Architektur – Teil 3
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 16
Architektur – Teil 1
REDIS
[TOKEN] [TIMESTAMP]
TOKENS[TOKEN]
[TOKEN][TOKEN]
[TOKEN][TOKEN]
[EVENT][TOKEN] [EVENT]
[EVENT][EVENT]
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 17
Architektur – Teil 4
REDIS
MySQL
Node.js
Apache
Daemon Gearman
Worker
Browser
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 18
I Daemon nimmt ersten Token aus der Token-Liste
I Prüft, ob Timestamp des Tokens älter als 2 Minuten
I Sofern der Token• älter ist, erstelle Gearman Job mit Token• jünger ist, füge Token an die Token-Liste hinten an
I Gearman Server leitet Job an einen Worker weiter
Architektur – Teil 4
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 19
Architektur – Teil 5
REDIS
MySQL
Node.js
Apache
Daemon Gearman
Worker
Browser
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 20
I Worker holt und entfernt aus der Datenbank die Zusatzinformationen zum Token
I Worker holt und entfernt Daten zum Token aus Redis
I Berechnet Kennzahlen mittels der Events
I Schreibt Kennzahlen kumuliert in die Datenbank
Architektur – Teil 5
Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 21
Architektur - Skalierbarkeit
REDIS
MySQL
Node.js
Apache
Daemon Gearman
WorkerNode.js
Node.jsREDIS
REDISWorker
Worker
ApacheApache
MySQLMySQL
DaemonDaemon
GearmanGearman
Browser
© 2010 Mayflower GmbH
Peter [email protected]+49 931 35965 1122
Mayflower GmbHPleichertorstr. 297070 Würzburg
Kontakt
Vielen Dank für Ihre Aufmerksamkeit!