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

Hochskalierendes Video Tracking

Mar 21, 2017

Download

Technology

Mayflower GmbH
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hochskalierendes Video Tracking

© 2010 Mayflower GmbH

Video-Tracking mit WebSockets, Node.js, Gearman und Redis

Peter Voringer I 25. November 2010

Page 2: Hochskalierendes Video Tracking

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

Page 3: Hochskalierendes Video Tracking

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
Page 4: Hochskalierendes Video Tracking

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
Page 5: Hochskalierendes Video Tracking

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

Page 6: Hochskalierendes Video Tracking

Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 6

Architektur – Gearman

Page 7: Hochskalierendes Video Tracking

Video-Tracking mit WebSockets, Node.js, Gearman und Redis I Mayflower GmbH I 29. November 2010 I 7

Architektur – Gearman

Page 8: Hochskalierendes Video Tracking

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

Page 9: Hochskalierendes Video Tracking

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

Page 10: Hochskalierendes Video Tracking

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]

Page 11: Hochskalierendes Video Tracking

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

Page 12: Hochskalierendes Video Tracking

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

Page 13: Hochskalierendes Video Tracking

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

Page 14: Hochskalierendes Video Tracking

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

Page 15: Hochskalierendes Video Tracking

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

Page 16: Hochskalierendes Video Tracking

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]

Page 17: Hochskalierendes Video Tracking

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

Page 18: Hochskalierendes Video Tracking

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

Page 19: Hochskalierendes Video Tracking

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

Page 20: Hochskalierendes Video Tracking

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

Page 21: Hochskalierendes Video Tracking

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

Page 22: Hochskalierendes Video Tracking

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

DEMO

Page 23: Hochskalierendes Video Tracking

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

FRAGEN ?

Page 24: Hochskalierendes Video Tracking

© 2010 Mayflower GmbH

Peter [email protected]+49 931 35965 1122

Mayflower GmbHPleichertorstr. 297070 Würzburg

Kontakt

Vielen Dank für Ihre Aufmerksamkeit!