Download presentation
Presentation is loading. Please wait.
Published byAdele Barker Modified over 9 years ago
1
SAN FRANCISCO, CA, USA Daniele Bonetta Achille Peternier Cesare Pautasso Walter Binder http://sosoa.inf.unisi.ch
2
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsSOSOA Self-Organizing Service Oriented Architectures Exploring novel, self-adapting approaches to the design of SOAs Overcome limitations of current SOAs performance on modern infrastructures Multicore Cloud CHANGE 2012 – San Francisco, CA, USA 2
3
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments RESTful Web Services ClientClientClientClient ClientClient Resource Resource Resource Resource HTTPHTTP HTTPHTTP HTTPHTTP CHANGE 2012 – San Francisco, CA, USA Architectural style: Client/Server architecture Stateless interaction Resources URIs Uniform HTTP interface GET, PUT, POST, DELETE 3
4
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments HTTP uniform interface CHANGE 2012 – San Francisco, CA, USA 4 HTTP Verb PropertiesParallelism GET Idempotent, safe, stateless Yes PUT Idempotent, side-effects If stateless DELETE Idempotent, side-effects If stateless POSTside-effectsIf stateless
5
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsGoal “Design a new language to develop 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
6
S framework RESTful Web Services Multicore server
7
S language S compiler S runtime RESTful Web Services Multicore server
8
S language S compiler S runtime RESTful Web Services Multicore server
9
“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)
10
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments Single process Based on asynchronous event-loop and callbacks on (‘someEvent’, doSomething(req, res)) on (‘somethingElse’, function(req, res) { //... }) CHANGE 2012 – San Francisco, CA, USA 10
11
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
12
S language
13
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
14
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments S Architecture S Service S Resource NodeJSNodeJSNodeJSNodeJSNodeJSNodeJSNodeJSNodeJSNodeJSNodeJS 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
15
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments S Hello World res ‘/hello’ on GET { respond ‘World!’ } Resource URI HTTP method HTTP method JavaScript or S code CHANGE 2012 – San Francisco, CA, USA 15
16
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 HTTPHTTP CHANGE 2012 – San Francisco, CA, USA 16
17
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments S Hello World res ‘/hello’ on GET { respond ‘World!’ } ClientClient S Service HTTP/1.1 200 OK Content-Type: text/plain World! HTTPHTTP CHANGE 2012 – San Francisco, CA, USA 17
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’ } Native HTTP support Native HTTP support CHANGE 2012 – San Francisco, CA, USA 18
19
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 CHANGE 2012 – San Francisco, CA, USA 19
20
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments Parallel resources Parallel resources Atomic and consistent blocks 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
21
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
22
S compiler
23
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsAdaptivity CHANGE 2012 – San Francisco, CA, USA 23 Worker #1 /res Request handler processor Client HTTPHTTP Router Requests Responses HTTPHTTP Client Worker #n … Parallelism degree controller (PI) HTTPHTTP S Worker From other workers HTTPHTTP
24
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
25
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
26
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) }) } })
27
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 }
28
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 var a=… var b=… var c=… put respond
29
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
30
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
31
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 }
32
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 Worker #1 Router /crawl … Worker #n Worker #2
33
Computing in Heterogeneous, Autonomous 'N' Goal-oriented Environments Crawler performance CHANGE 2012 – San Francisco, CA, USA 33 24 cores server
34
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsChallenges 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 CPU I/O
35
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsChallenges CHANGE 2012 – San Francisco, CA, USA 35
36
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsChallenges CHANGE 2012 – San Francisco, CA, USA 36 Client HTTPHTTP
37
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsChallenges CHANGE 2012 – San Francisco, CA, USA 37 Client
38
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
39
Computing in Heterogeneous, Autonomous 'N' Goal-oriented EnvironmentsAppendix CHANGE 2012 – San Francisco, CA, USA 39
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.