hochskalierendes video tracking

24
© 2010 Mayflower GmbH Video-Tracking mit WebSockets, Node.js, Gearman und Redis Peter Voringer I 25. November 2010

Upload: mayflower-gmbh

Post on 21-Mar-2017

1.405 views

Category:

Technology


0 download

TRANSCRIPT

© 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

Vorführender
Präsentationsnotizen
Letzter Punkt war der Grund für 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

Vorführender
Präsentationsnotizen
Notification vom OS, bei neuer Connection => Sleep Connection braucht lediglich etwas heap-Speicher Kein Thread pro Connection (2mb thread stack pro Connection) Keine Prozess-Deadlocks, da keine Funktion direkten I/O Zugriff macht

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

Titel der Präsentation I Mayflower GmbH I 29. November 2010 I 22

DEMO

Titel der Präsentation I Mayflower GmbH I 29. November 2010 I 23

FRAGEN ?

© 2010 Mayflower GmbH

Peter [email protected]+49 931 35965 1122

Mayflower GmbHPleichertorstr. 297070 Würzburg

Kontakt

Vielen Dank für Ihre Aufmerksamkeit!