presentation - Goal-oriented Environments

cornawakeΛογισμικό & κατασκευή λογ/κού

4 Νοε 2013 (πριν από 3 χρόνια και 8 μήνες)

57 εμφανίσεις

SAN FRANCISCO, CA, USA

Daniele Bonetta


Achille Peternier
Cesare
Pautasso

Walter Binder

http://sosoa.inf.unisi.ch


Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

SOSOA


S
elf
-
O
rganizing
S
ervice
O
riented
A
rchitectures



Exploring novel
,
self
-
adapting approaches
to the
design of SOAs



Overcome limitations
of current
SOAs


p
erformance on modern infrastructures


Multicore


Cloud

CHANGE 2012


San Francisco, CA, USA

2

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

RESTful

Web Services

Client

Client

Client

RESTful

Web
Services





Resource

Resource

Resource

Resource

HTTP

CHANGE 2012


San Francisco, CA, USA


Architectural style:


Client/Server architecture


Stateless interaction


Resources


URIs


Uniform HTTP interface


GET, PUT, POST, DELETE

3

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

HTTP uniform
i
nterface

CHANGE 2012


San Francisco, CA, USA

4

HTTP Verb

Properties

Parallelism

GET

Idempotent, safe,
stateless

Yes

PUT

Idempotent,

side
-
effects

If stateless

DELETE

Idempotent,

side
-
effects

If stateless

POST

side
-
effects

If stateless

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Goal

“Design a new language to
d
evelop and
compose
RESTful

Web Services that
automatically scale

in the
number of
clients

and
cores

using safe
implicit
parallelism


CHANGE 2012


San Francisco, CA, USA

5

S

S framework

RESTful

Web
Services

Multicore server

S language

S compiler

S runtime

RESTful

Web
Services

Multicore server

S language

S compiler

S runtime

RESTful

Web
Services

Multicore server

“Node.js
is a platform built on

Chrome's JavaScript

runtime

for easily building fast,
scalable network
applications
. Node.js uses an
event
-
driven
, non
-
blocking
I/O model that makes it lightweight and efficient,
perfect for
data
-
intensive

real
-
time applications that run across
distributed devices
.”







(source: www.nodejs.org)

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments


Single process


Based on asynchronous event
-
loop and
callbacks






o
n (‘
someEvent
’,
doSomething
(
req
, res))


o
n (‘
somethingElse
’,
function
(
req
, res
) {


// ...

})

CHANGE 2012


San Francisco, CA, USA

10

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments


Asynchronous non
-
blocking I/O



No locks/synchronization




Sequential composition: nested callbacks



Long callbacks problem




Limited support for parallelism


CHANGE 2012


San Francisco, CA, USA

11

S language

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

S design principles


High
-
level architectural abstractions


Based on
services

and
resources


No threads/processes


No synchronization/locks



Simple, clean programming model


Allows blocking function calls


Constructs for parallel I/O


REST/HTTP as part of the language

CHANGE 2012


San Francisco, CA, USA

13

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

S Architecture

S Service

S Resource

S Resource

S Resource

NodeJS

NodeJS

NodeJS

NodeJS

NodeJS

S IPC Communication Framework

Non
-
blocking I/O

S code

Asynchronous

Non
-
blocking

NodeJS

code

CHANGE 2012


San Francisco, CA, USA

14

S language

S runtime

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

S Hello World

res

‘/hello’
on

GET

{


respond

‘World!’

}

Resource

URI

HTTP

method

JavaScript
or S code

CHANGE 2012


San Francisco, CA, USA

15

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

S Hello World

res

‘/hello’
on

GET

{


respond

‘World!’

}

GET

/hello
HTTP/1.1

User
-
Agent: curl

Accept: */*

Host:
your.host

Client

S
Service

HTTP

CHANGE 2012


San Francisco, CA, USA

16

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

S Hello World

res

‘/hello’
on

GET

{


respond

‘World!’

}

Client

S
Service

HTTP/1.1 200 OK

Content
-
Type: text/plain


World!

HTTP

CHANGE 2012


San Francisco, CA, USA

17

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

S Compositions

res

‘/hello1’
on

GET

{


respond

get

‘http://
www.site.com’

}

res

‘/hello2’
on

GET

{


respond

get

‘/hello1’

}

Native HTTP

support

CHANGE 2012


San Francisco, CA, USA

18

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

S Compositions

res

‘/hello1’
on

GET

{


respond

get

‘http://
www.site.com’

}

res

‘/hello2’
on

GET

{


respond

get

‘/hello1’

}

Client

/hello2

/hello1

www.site.com

HTTP

HTTP

HTTP

CHANGE 2012


San Francisco, CA, USA

19

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Parallel

resources

Atomic and
consistent

blocks

S Parallelism

res

‘/
res1’
on

GET

{


//
...


//
CPU
-
bound
blocking
call:


var

a = foo()


respond
a

}



res

‘/res2’
on GET

{


// ...


res

r = ‘http://www.google.ch/search=@’



// I/O bound
operation:


boo =
r.
get
(‘key’)


respond

boo

}

CHANGE 2012


San Francisco, CA, USA

20

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Stateful

services

CHANGE 2012


San Francisco, CA, USA

21

res

‘/
helloState
’ {


state

s = ‘world’


on

GET

{


respond
‘hello’ +

s


}


on PUT
{


s = req.name


}

}

State shared
between
callbacks

Read
-
only
operations

Write
operations

S compiler

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Adaptivity

CHANGE 2012


San Francisco, CA, USA

23

Worker #1

/res

Request handler processor

Client

Client

HTTP

Router

Requests

Responses

HTTP

Client

Client

Client

Client

Worker #n



Parallelism degree
controller (PI)

S
Worker

S
Worker

S
Worker

From other
workers

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

I/O
-
bound operations



Synchronous I/O operations are
desynchronized by the S compiler using
multiple callbacks




CHANGE 2012


San Francisco, CA, USA

24

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Sequential composition

CHANGE 2012


San Francisco, CA, USA

25

res

‘/example’
on GET

{


var

a =
get


www.google.com



var

b

=
get


www.bing.com



var

c =
get


www.yahoo.com



respond

a+b+c

}

S

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Sequential composition

CHANGE 2012


San Francisco, CA, USA

26

S

http.createServer
(
function
(
creq
,
cres
) {


if
(
creq.method

== ‘
GET
’ && creq.url == ‘/
example’) {


var

a
, b, c
= ‘’


startGet
(‘
www.google.com
’,


function
(
req
, res
) {


a =
res.body


startGet
(‘
www.bing.com
’,


function
(
req
, res
) {


b =
res.body


startGet
(‘
www.yahoo.com
’,


function
(
req
, res
) {


c =
res.body


cres.end
(
a+b+c
)


})



})


})


}

})

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Parallel composition

CHANGE 2012


San Francisco, CA, USA

27

S

res

‘/example’
on GET

{


par

{


var

a =
get


www.google.com



var

b

=
get


www.bing.com



var

c =
put


www.site.com/?
d=
’+b


respond

a+c


}

}

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Parallel composition

CHANGE 2012


San Francisco, CA, USA

28

res

‘/example’
on GET

{


par

{


var

a =
get


www.google.com



var

b

=
get


www.bing.com



var

c =
put


www.site.com/?
d=
’+b


respond

a+c


}

}

get

get

v
ar

a=…

v
ar

b=…

v
ar

c=…

put

respond

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Parallel composition

CHANGE 2012


San Francisco, CA, USA

29

http.createServer
(
function
(
req
, res
) {


if
(
creq.method

== ‘
GET
’ && creq.url == ‘/
example’) {


var

G = {}


on

(‘
done1’,
function
(result
) {


G.a

= result; emit(‘done3
’) })


on
(‘
done2’,
function
(result
) {


G.b

= result;


startPut
(‘
www.site.com./d?=
‘ +
G.b
, ‘done4’)


})


on
(‘
done4’,
function
(result) {


G.c

= result;


emit(‘done5’)


})


onAll
([‘done3’,‘done5’],
function
() {


res.end
(
G.a

+
G.c
)


})


startGet
(‘
www.google.com
’, ‘done1’)


startGet
(‘
www.bing.com
’, ‘done2
’)



}

})

S

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Two levels of parallelism

CHANGE 2012


San Francisco, CA, USA

30

Number of Workers

Async

I/O

CPU
-
bound

I/O
-
bound

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Example: Crawler

CHANGE 2012


San Francisco, CA, USA

31

Parallel
recursive
crawling

Result
accumulation

service crawl
{


res

‘/crawl‘
on PUT

{


var

filter = require(‘HTMLparser.js’).filter


res

store = ‘/
store?value
=@’


res

crawl = ‘/
crawl?list
=@’



pfor
(
var

i

in

req.list
) {


var

list = filter(
get

req.list
[
i
])


par

{


store.
put
(list)


crawl.
put
(list)


}


}


}




res

‘/store‘ {


state

s = ‘’


on PUT

{


s +=
req.value


}


on GET

{


respond

s


}


}

}

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Example: Crawler RT

CHANGE 2012


San Francisco, CA, USA

32

L =

[url1, url2, …]

/store

Router

State

/
url

/
url

/
url

Worker #1

Router

/crawl



Worker #n

Worker #2

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Crawler performance

CHANGE 2012


San Francisco, CA, USA

33

24 cores server

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Challenges

CHANGE 2012


San Francisco, CA, USA

34

/res

Router



Worker #1

Worker #n

/res

Router



Worker #1

Worker #n

/res

Router



Worker #1

Worker #n

Monitor and
controller

Monitor and
controller

Monitor and
controller

CPU I/O

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Challenges

CHANGE 2012


San Francisco, CA, USA

35

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Challenges

CHANGE 2012


San Francisco, CA, USA

36

Client

HTTP

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Challenges

CHANGE 2012


San Francisco, CA, USA

37

Client

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Thank you

D. Bonetta,

A. Peternier,

C. Pautasso, W. Binder

S
: a Scripting Language for High
-
Performance RESTful Web
Services

17th
ACM SIGPLAN Symposium on Principles and Practice of Parallel
Programming (PPoPP 2012
), pp. 97
-
106,
New Orleans, LA, USA,
2012

CHANGE 2012


San Francisco, CA, USA

38

S

http
://sosoa.inf.unisi.ch

Computing in Heterogeneous, Autonomous 'N' Goal
-
oriented Environments

Appendix

CHANGE 2012


San Francisco, CA, USA

39