Decentralized Stream Processing over Web-enabled Devices
-
Upload
masiar-babazadeh -
Category
Science
-
view
330 -
download
1
Transcript of Decentralized Stream Processing over Web-enabled Devices
Decentralized Stream Processing over Web-enabled devicesMasiar Babazadeh@masiarb
Andrea Gallidabino@agallidabino
Cesare Pautasso@pautasso
University of Lugano (USI) Faculty of Informatics Switzerland
1
2Tessel Arduino
Raspberry PiSmartphones
3
4
4
5 5
6
7
Stream Processing
1
8
Heterogeneous Hardware
2
9
Dynamic Environment
3
10
Web Liquid 1
11
Web 2
12
2Web
13
3Web
Web
14
3
Web
14
3
Web
14
3
15
Consumercheckup.js
Consumerviz.js
Producertemp.js
Consumerfan.js
Filterfilter.js
Web Liquid Streams
16
F
Operator Elasticity
16
F
Operator Elasticity
16
F
Operator Elasticity
16
F
Operator Elasticity
16
F
Operator Elasticity
16
F
Operator Elasticity
16
F
Operator Elasticity
17
var k = require('wls.js');setInterval(function(){ getTemperature(
function(temp, sensor_id){ k.send({ "temperature" : temp, "id" : sensor_id,
"ts" : new Date().getTime(), }); } );
}, 1000);
Producer
17
var k = require('wls.js');setInterval(function(){ getTemperature(
function(temp, sensor_id){ k.send({ "temperature" : temp, "id" : sensor_id,
"ts" : new Date().getTime(), }); } );
}, 1000);
Producer
17
var k = require('wls.js');setInterval(function(){ getTemperature(
function(temp, sensor_id){ k.send({ "temperature" : temp, "id" : sensor_id,
"ts" : new Date().getTime(), }); } );
}, 1000);
Producer
17
var k = require('wls.js');setInterval(function(){ getTemperature(
function(temp, sensor_id){ k.send({ "temperature" : temp, "id" : sensor_id,
"ts" : new Date().getTime(), }); } );
}, 1000);
Producer
var k = require(’wls.js’);
k.createOperator(function(msg) { var setpoint = k.db_get("setpoint", temp_data.id);
var threshold = k.db_get("threshold", temp_data.id);
//[...] compute average
if(abs(average - setpoint) > threshold){
k.send({
"start" : true,
"room_id" : temp_data.id
});
}
else //[...]
});
18 Filter
var k = require(’wls.js’);
k.createOperator(function(msg) { var setpoint = k.db_get("setpoint", temp_data.id);
var threshold = k.db_get("threshold", temp_data.id);
//[...] compute average
if(abs(average - setpoint) > threshold){
k.send({
"start" : true,
"room_id" : temp_data.id
});
}
else //[...]
});
18 Filter
var k = require(’wls.js’);
k.createOperator(function(msg) { var setpoint = k.db_get("setpoint", temp_data.id);
var threshold = k.db_get("threshold", temp_data.id);
//[...] compute average
if(abs(average - setpoint) > threshold){
k.send({
"start" : true,
"room_id" : temp_data.id
});
}
else //[...]
});
18 Filter
var k = require(’wls.js’);
k.createOperator(function(msg) { var setpoint = k.db_get("setpoint", temp_data.id);
var threshold = k.db_get("threshold", temp_data.id);
//[...] compute average
if(abs(average - setpoint) > threshold){
k.send({
"start" : true,
"room_id" : temp_data.id
});
}
else //[...]
});
18 Filter
var k = require(’wls.js’); k.createOperator(function(msg) { if(this.id == msg.id){ if(msg.start){ startFan(); } else {
stopFan(); } }});
19 Consumer
var k = require(’wls.js’); k.createOperator(function(msg) { if(this.id == msg.id){ if(msg.start){ startFan(); } else {
stopFan(); } }});
19 Consumer
20
{ topology : { id : “HAS_topology”, operators : [ { id : “producer”, script : “temp.js”,
constraints : [“temperature”], }, …
],bindings : [
{from : “producer”,to : [“filter”, “web_consumer_1”]
},…
]}
}
Producertemp.js
JSON Topology
21
Web Liquid Streams Runtime
22
Node.js
Operator
wls.js Peer (Server)
Receiver Sender
ZeroMQ WebSockets
Web Server Runtime
23
Web Browser
Operator
wls.js Peer (HTML)
Receiver
Sender
WebRTC WebSockets
Dispatcher
Main Thread Web Workers
Web Browser Runtime
24
25
P F C
Negative Filter
Variable Workload
26
Raspberry Pi 1 core 700MHz 256MB RAM NodeJS v.0.10.15
MacBook Pro (2012) 4 cores 2.3GHz 16GB RAM Chrome v. 37
iPhone 5S 1 core 1.3GHz 1 GB RAM Chrome v. 40
Variable Workload
27
Variable Workload
28
P F C
Triple DES
Variable Workload
29
MacBook Pro (2012) 4 cores 2.3GHz 16GB RAM NodeJS v. 0.10.15
Web Server (Ubuntu) 24 cores 2GHz 128GB RAM NodeJS v. 0.10.15
Web Server (Ubuntu) 4 cores 3GHz 8GB RAM NodeJS v. 0.10.15
Variable Workload
30
Variable Workload
31
VS.
Centralised vs. P2P
32
P F C
Prime Numbers
Centralised vs. P2P
33
P F C
Single WLS Peer
Web Server (Ubuntu) 24 cores 2GHz 128GB RAM NodeJS v. 0.10.15
Centralised
34
MacBook Pro (2012) 4 cores 2.3GHz 16GB RAM Chrome v. 37
P CFFFF
Centralised vs.
35
Centralised vs. P2P
36
End-
to-e
nd L
aten
cy (s
ec)
Centralised vs. P2P
37
WEB LIQUID STREAMS
37
WEB LIQUID STREAMS
37
WEB LIQUID STREAMS
37
WEB LIQUID STREAMS
38
Decentralized Stream Processing over Web-enabled devicesMasiar Babazadeh@masiarb
Andrea Gallidabino@agallidabino
Cesare Pautasso@pautasso
University of Lugano Faculty of Informatics Switzerland
38Thank you.