Decentralized Stream Processing over Web-enabled Devices

57
Decentralized Stream Processing over Web-enabled devices Masiar Babazadeh @masiarb Andrea Gallidabino @agallidabino Cesare Pautasso @pautasso University of Lugano (USI) Faculty of Informatics Switzerland [email protected] 1

Transcript of Decentralized Stream Processing over Web-enabled Devices

Page 1: 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

[email protected]

1

Page 2: Decentralized Stream Processing over Web-enabled Devices

2Tessel Arduino

Raspberry PiSmartphones

Page 3: Decentralized Stream Processing over Web-enabled Devices

3

Page 4: Decentralized Stream Processing over Web-enabled Devices

4

Page 5: Decentralized Stream Processing over Web-enabled Devices

4

Page 6: Decentralized Stream Processing over Web-enabled Devices

5 5

Page 7: Decentralized Stream Processing over Web-enabled Devices

6

Page 8: Decentralized Stream Processing over Web-enabled Devices

7

Stream Processing

1

Page 9: Decentralized Stream Processing over Web-enabled Devices

8

Heterogeneous Hardware

2

Page 10: Decentralized Stream Processing over Web-enabled Devices

9

Dynamic Environment

3

Page 11: Decentralized Stream Processing over Web-enabled Devices

10

Web Liquid 1

Page 12: Decentralized Stream Processing over Web-enabled Devices

11

Web 2

Page 13: Decentralized Stream Processing over Web-enabled Devices

12

2Web

Page 14: Decentralized Stream Processing over Web-enabled Devices

13

3Web

Page 15: Decentralized Stream Processing over Web-enabled Devices

Web

14

3

Page 16: Decentralized Stream Processing over Web-enabled Devices

Web

14

3

Page 17: Decentralized Stream Processing over Web-enabled Devices

Web

14

3

Page 18: Decentralized Stream Processing over Web-enabled Devices

15

Consumercheckup.js

Consumerviz.js

Producertemp.js

Consumerfan.js

Filterfilter.js

Web Liquid Streams

Page 19: Decentralized Stream Processing over Web-enabled Devices

16

F

Operator Elasticity

Page 20: Decentralized Stream Processing over Web-enabled Devices

16

F

Operator Elasticity

Page 21: Decentralized Stream Processing over Web-enabled Devices

16

F

Operator Elasticity

Page 22: Decentralized Stream Processing over Web-enabled Devices

16

F

Operator Elasticity

Page 23: Decentralized Stream Processing over Web-enabled Devices

16

F

Operator Elasticity

Page 24: Decentralized Stream Processing over Web-enabled Devices

16

F

Operator Elasticity

Page 25: Decentralized Stream Processing over Web-enabled Devices

16

F

Operator Elasticity

Page 26: Decentralized Stream Processing over Web-enabled Devices

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

Page 27: Decentralized Stream Processing over Web-enabled Devices

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

Page 28: Decentralized Stream Processing over Web-enabled Devices

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

Page 29: Decentralized Stream Processing over Web-enabled Devices

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

Page 30: Decentralized Stream Processing over Web-enabled Devices

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

Page 31: Decentralized Stream Processing over Web-enabled Devices

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

Page 32: Decentralized Stream Processing over Web-enabled Devices

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

Page 33: Decentralized Stream Processing over Web-enabled Devices

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

Page 34: Decentralized Stream Processing over Web-enabled Devices

var k = require(’wls.js’); k.createOperator(function(msg) { if(this.id == msg.id){ if(msg.start){ startFan(); } else {

stopFan(); } }});

19 Consumer

Page 35: Decentralized Stream Processing over Web-enabled Devices

var k = require(’wls.js’); k.createOperator(function(msg) { if(this.id == msg.id){ if(msg.start){ startFan(); } else {

stopFan(); } }});

19 Consumer

Page 36: Decentralized Stream Processing over Web-enabled Devices

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

Page 37: Decentralized Stream Processing over Web-enabled Devices

21

Web Liquid Streams Runtime

Page 38: Decentralized Stream Processing over Web-enabled Devices

22

Node.js

Operator

wls.js Peer (Server)

Receiver Sender

ZeroMQ WebSockets

Web Server Runtime

Page 39: Decentralized Stream Processing over Web-enabled Devices

23

Web Browser

Operator

wls.js Peer (HTML)

Receiver

Sender

WebRTC WebSockets

Dispatcher

Main Thread Web Workers

Web Browser Runtime

Page 40: Decentralized Stream Processing over Web-enabled Devices

24

Page 41: Decentralized Stream Processing over Web-enabled Devices

25

P F C

Negative Filter

Variable Workload

Page 42: Decentralized Stream Processing over Web-enabled Devices

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

Page 43: Decentralized Stream Processing over Web-enabled Devices

27

Variable Workload

Page 44: Decentralized Stream Processing over Web-enabled Devices

28

P F C

Triple DES

Variable Workload

Page 45: Decentralized Stream Processing over Web-enabled Devices

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

Page 46: Decentralized Stream Processing over Web-enabled Devices

30

Variable Workload

Page 47: Decentralized Stream Processing over Web-enabled Devices

31

VS.

Centralised vs. P2P

Page 48: Decentralized Stream Processing over Web-enabled Devices

32

P F C

Prime Numbers

Centralised vs. P2P

Page 49: Decentralized Stream Processing over Web-enabled Devices

33

P F C

Single WLS Peer

Web Server (Ubuntu) 24 cores 2GHz 128GB RAM NodeJS v. 0.10.15

Centralised

Page 50: Decentralized Stream Processing over Web-enabled Devices

34

MacBook Pro (2012) 4 cores 2.3GHz 16GB RAM Chrome v. 37

P CFFFF

Centralised vs.

Page 51: Decentralized Stream Processing over Web-enabled Devices

35

Centralised vs. P2P

Page 52: Decentralized Stream Processing over Web-enabled Devices

36

End-

to-e

nd L

aten

cy (s

ec)

Centralised vs. P2P

Page 53: Decentralized Stream Processing over Web-enabled Devices

37

WEB LIQUID STREAMS

Page 54: Decentralized Stream Processing over Web-enabled Devices

37

WEB LIQUID STREAMS

Page 55: Decentralized Stream Processing over Web-enabled Devices

37

WEB LIQUID STREAMS

Page 56: Decentralized Stream Processing over Web-enabled Devices

37

WEB LIQUID STREAMS

Page 57: Decentralized Stream Processing over Web-enabled Devices

38

Decentralized Stream Processing over Web-enabled devicesMasiar Babazadeh@masiarb

Andrea Gallidabino@agallidabino

Cesare Pautasso@pautasso

University of Lugano Faculty of Informatics Switzerland

[email protected]

38Thank you.