jakub mrowiec (grand parade poland) - monumentum case study
TRANSCRIPT
StartLab #6Real-time web apps
MomentumCase Study
wydajnosc aplikacji WYZWANIA
~ 5032
10
operacji na sekunde dla jednego dostawcy
dostawcow w POC
sporty w POC
potencjalnie obslugiwanych
ilu dostawcow tyle kanalowWYZWANIA
szybkie wyszukiwanie danychWYZWANIA
cacheEvent.aquire({id: eventId}, function(err, event) {var teamName = '';if (event !== null) {
var runners = event.model.runners;if (typeof runners[team] !== 'undefined') {
teamName = runners[team].name;}
}
// ...
try {dispose(cacheElementPeriod);
} catch(errror) {// ...
}});
latwosc rozszerzalnosciWYZWANIA
nowy dostawcanowy sport
wieksza dokladnosc meczów WYZWANIA
zwiększona ilosc incydentówdokladniejsze opisanie stanu meczu
NASZE ROZWIĄZANIE
NASZE ROZWIAZANIE redis
More than just a key value datastore
70 000 req/sec publish/subscribe
NASZE ROZWIAZANIE mikroserwisy
NASZE ROZWIAZANIE mikroserwisy
HTTP ENDPOINT(dane via POST)
DATA PARSER
MOMENTUM(calculator)
STATISTICS(calculator)
MAPPER
MARKETS
NASZE ROZWIAZANIE mikroserwisy
HTTP ENDPOINT(dane via POST)
DATA
STORE PER EVENT
PUBLISH NEW DATA
STORE RAW DATA
NASZE ROZWIAZANIE mikroserwisy
DATA PARSER
TENNIS FOOTBALL
Djokovic vs Nadal Barcelona vs Arsenal
Score: 2:0Extra: 6:3, 6:4
Score: 5:1
Sun Rain
All England Tennis and Croquet Club
Wembley
Set wygrany Goal
NASZE ROZWIAZANIE mikroserwisy
MOMENTUM(calculator)
require(‘strategy.js’);
NASZE ROZWIAZANIE mikroserwisy
STATISTICS(processor)
STATISTICS PROCESSOR
EVENT DATA
(IN)MATCH STATS
(OUT)
NASZE ROZWIAZANIE mikroserwisy
MARKETS
MARKETS (PROCESSOR/SELECTOR)
var tasks = [‘SelectMarket'];
var taskFactory = {};for (var i = 0; i < tasks.length; i++) {
var taskName = tasks[i];var task = require('./tasks/' + taskName + '.js');taskFactory[taskName] = task;
}
NASZE ROZWIAZANIE mikroserwisy
MAPPER
ARSENAL
VS
BARCELONA
8732482
673273
football-event-192-932598
001336505
4623238
TCP
PODSUMOWANIE
Redis – szybki zapis/odczyt
PODSUMOWANIE
Redis – publish/subscribe
PODSUMOWANIE
Mikroserwisy – latwa skalowalnosc
PODSUMOWANIE
Javascript – modulowosc
PODSUMOWANIE
Javascript – uniwersalnosc (http/socket)
PODSUMOWANIE
Javascript – szybkosc/async