Decentralized Stream Processing over Web-enabled Devices

Post on 12-Apr-2017

330 views 1 download

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

name.surname@usi.ch

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

name.surname@usi.ch

38Thank you.