Webanalytics Software scheitert an einigen Faktoren: zu teuer, zu schwer, zu langsam. Hier stellen wir einen Ansatz vor, wie Videotracking funktionieren kann. Wann dürfen wir dies für Sie tun?
2. 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
3. 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
4. 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
5. 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
8. 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
9. 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
10. 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]
11. 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
12. 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 Library
I 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 schickt
I Close-Event bei onUnload
Architektur – Teil 2
13. Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 13
Architektur – Teil 2
Node.jsBrowser
HTTP
Server
WebSocket
Server
Player
Timer
WebSocket
IFrame
Library
token
id
action
position
14. 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
15. 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
16. 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]
17. 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
18. 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
19. 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
20. 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
21. 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
Worker
Node.js
Node.js
REDIS
REDIS
Worker
Worker
Apache
Apache
MySQL
MySQL
Daemon
Daemon
Gearman
Gearman
Browser