SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
<technologies-web/> 
<metaname="author"content="Pierre-Emmanuel Altieri, Clément Casu, Oussama Ezzayer, Raphaël Kiffer">
Menu du jour
27/05/2009 
Ryan Dahl 
0.1.33
Ils y croient
2011 
Tim Fox 
2.1.4
Ils y croient
The C10k Problem 
Le c10k […] est un code numérique utilisé pour exprimer la limitation que la plupart des serveurs ont en termes de connexions réseaux. 
http://fr.wikipedia.org/wiki/C10k_problem
«Origins» 
Reactor 
Vérification 
Événement 
Exécution 
Callback 
Requête Web ou callback 
Choix de l’événement 
Exécution de l’événement 
Lancement de callback avec données
Programmation événementielle 
boucle principale 
Event Loop
Programmation événementielle 
fs =require('fs'); 
vardata =fs.readFileSync('file.txt') 
// Leflot d’exécution est bloqué jusqu’à la fin de l’exécution 
console.log(data) 
fs =require('fs'); 
fs.readFile('file.txt', function(error, data) { 
// Exécutionà la fin de l’opérationconsole.log(data) 
});
Avant/Après 
Serveur 
Thread 
Thread 
Thread 
Thread 
Requête 
Requête 
Requête 
Requête
Avant/Après 
Serveur 
Thread 
Requête 
Requête 
Requête 
Requête
Avant/Après
Reactive Programming 
Responsive 
Élastique 
Event-driven 
Scalable 
Réactif en terme d’UI 
Réactif aux erreurs 
Réactif aux événements 
Réactif à la charge
Bootstrap 
varvertx =require('vertx'); 
vertx.createHttpServer() 
.requestHandler(function(req){ 
varfile =req.path()==='/'? 'index.html': req.path(); 
req.response.sendFile('app/'+file); 
}).listen(8080); 
console.log('Server is running'); 
$ node server.js 
varhttp =require('http'); 
http.createServer(function(req, res){ 
res.writeHead(200, { 
'Content-Type': 'text/plain‘ 
}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); 
console.log('Server is running'); 
$ vertxrun server.js
Bootstrap 
$ node server.js 
varhttp =require('http'); 
http.createServer(function(req, res){ 
res.writeHead(200, { 
'Content-Type': 'text/plain‘ 
}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); 
console.log('Server is running'); 
$ vertxrun Server.java 
publicclassServer extendsVerticle { 
publicvoidstart(){ 
vertx.createHttpServer().requestHandler( 
newHandler<HttpServerRequest>(){ 
publicvoidhandle(HttpServerRequest req){ 
Stringfile =req.path().equals("/")? "index.html": req.path(); 
req.response().sendFile("app/"+file); 
} 
}).listen(8080); 
} 
}
Bootstrap 
$ node server.js 
varhttp =require('http'); 
http.createServer(function(req, res){ 
res.writeHead(200, { 
'Content-Type': 'text/plain‘ 
}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); 
console.log('Server is running'); 
$ vertxrun server.rb 
require"vertx" 
Vertx::HttpServer.new.request_handler do |req| 
file =req.uri =="/"?"index.html": req.uri 
req.response.send_file "webroot/#{file}" 
end.listen(8080)
Bootstrap 
$ node server.js 
varhttp =require('http'); 
http.createServer(function(req, res){ 
res.writeHead(200, { 
'Content-Type': 'text/plain‘ 
}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); 
console.log('Server is running'); 
$ vertxrun Server.groovy 
vertx.createHttpServer().requestHandler {req -> 
def file =req.uri =="/"? "index.html": req.uri 
req.response.sendFile "app/$file" 
}.listen(8080)
Bootstrap 
$ node server.js 
varhttp =require('http'); 
http.createServer(function(req, res){ 
res.writeHead(200, { 
'Content-Type': 'text/plain‘ 
}); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); 
console.log('Server is running'); 
$ vertxrun server.py 
importvertx 
server =vertx.create_http_server() 
@server.request_handler 
def request_handler(req): 
file ="index.html"ifreq.uri =="/"elsereq.uri 
req.response.send_file("app/%s"%file) 
server.listen(8080)
Versus 
Environnement 
Modules 
npm 
Verticles 
Event Bus 
Shared Data 
1 process 
Workflow
Et les performances ? 
0 
200 
400 
600 
800 
1000 
1200 
1400 
1600 
1800 
2000 
Ajout JSON 
Hello World 
Concatenation String 
Fibo(30) recursif 
NodeJS (tr/s) 
Vert.X (tr/s) 
NodeJS (mem) 
Vert.X (mem)
Merci !

Contenu connexe

Tendances

Comprendre les scripts shell auto-extractible
Comprendre les scripts shell auto-extractibleComprendre les scripts shell auto-extractible
Comprendre les scripts shell auto-extractibleThierry Gayet
 
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016Nicolas Ledez
 
اسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونیاسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونیMohammad Reza Kamalifard
 
Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Frank Denis
 
Luigi Paris.py meetup presentation
Luigi Paris.py meetup presentationLuigi Paris.py meetup presentation
Luigi Paris.py meetup presentationJonàs Bru Monserrat
 
08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)Noël
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...Guillaume MOCQUET
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCDamien Seguy
 
EBIZNEXT-RIAK
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAKebiznext
 
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops) Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops) Joël Séguillon
 
Zabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertZabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertLook a box
 
RSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive StreamsRSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive StreamsVMware Tanzu
 

Tendances (20)

Synthese
SyntheseSynthese
Synthese
 
Comprendre les scripts shell auto-extractible
Comprendre les scripts shell auto-extractibleComprendre les scripts shell auto-extractible
Comprendre les scripts shell auto-extractible
 
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016
Retour d'XP de saltstack chez Cozy Cloud - web2day 15 juin 2016
 
اسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونیاسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونی
اسلاید اول جلسه اول دوره پاییز کلاس پایتون برای هکرهای قانونی
 
Meet-Up SQLI Lyon 09-2015 - Varnish
Meet-Up SQLI Lyon 09-2015 - VarnishMeet-Up SQLI Lyon 09-2015 - Varnish
Meet-Up SQLI Lyon 09-2015 - Varnish
 
Atmosphere Framework
Atmosphere FrameworkAtmosphere Framework
Atmosphere Framework
 
DNS
DNSDNS
DNS
 
Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2) Redis - (nosqlfr meetup #2)
Redis - (nosqlfr meetup #2)
 
Luigi Paris.py meetup presentation
Luigi Paris.py meetup presentationLuigi Paris.py meetup presentation
Luigi Paris.py meetup presentation
 
Python + ansible = ♥
Python + ansible = ♥Python + ansible = ♥
Python + ansible = ♥
 
Java Nio 2
Java Nio 2Java Nio 2
Java Nio 2
 
08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)08 04 mise en place d'un serveur mandataire (proxy)
08 04 mise en place d'un serveur mandataire (proxy)
 
Squid
SquidSquid
Squid
 
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
[Sildes] plateforme centralisée d’analyse des logs des frontaux http en temps...
 
Tout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFCTout sur PHP 7.3 et ses RFC
Tout sur PHP 7.3 et ses RFC
 
EBIZNEXT-RIAK
EBIZNEXT-RIAKEBIZNEXT-RIAK
EBIZNEXT-RIAK
 
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops) Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
Terraform OpenStack : Mise en pratique sur infrastructure OVH (Rennes devops)
 
Zabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvertZabbix, garder un oeil toujours ouvert
Zabbix, garder un oeil toujours ouvert
 
RSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive StreamsRSocket un protocole réseau pour les Reactive Streams
RSocket un protocole réseau pour les Reactive Streams
 
Salt stack
Salt stackSalt stack
Salt stack
 

En vedette

Vertx – reactive toolkit
Vertx – reactive toolkitVertx – reactive toolkit
Vertx – reactive toolkitAvi Saidian
 
Netty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/ConnectivityNetty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/ConnectivityC4Media
 
Vertx for worlddomination
Vertx for worlddominationVertx for worlddomination
Vertx for worlddominationcodepitbull
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMMassimiliano Dessì
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchIdriss Neumann
 
Vert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingVert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingAlex Derkach
 
Guide routard intelligence économique 2014
Guide routard intelligence économique 2014Guide routard intelligence économique 2014
Guide routard intelligence économique 2014polenumerique33
 
Postales Del Viaje
Postales Del ViajePostales Del Viaje
Postales Del Viajerio rio
 
Tendencias emergentes ii[1]
Tendencias emergentes ii[1]Tendencias emergentes ii[1]
Tendencias emergentes ii[1]Lur Gozoa
 
Tout commence avec les corps de Paul auster
Tout commence avec les corps de Paul austerTout commence avec les corps de Paul auster
Tout commence avec les corps de Paul austerGemmaNadalS
 
Composition d'audience de VoitureAuMaroc - A LIRE -
Composition d'audience de VoitureAuMaroc - A LIRE -Composition d'audience de VoitureAuMaroc - A LIRE -
Composition d'audience de VoitureAuMaroc - A LIRE -Alexandre Allanic
 
Chroniques Ressources Entreprises _mars2014 - juin 2014
Chroniques Ressources Entreprises _mars2014 - juin 2014Chroniques Ressources Entreprises _mars2014 - juin 2014
Chroniques Ressources Entreprises _mars2014 - juin 2014Ressources Entreprises
 
Central Córdoba - UnióN
Central Córdoba - UnióNCentral Córdoba - UnióN
Central Córdoba - UnióNarhandball
 
ns2 projects chennai
ns2 projects chennains2 projects chennai
ns2 projects chennaiE2MATRIX
 

En vedette (20)

Devoxx France 2014 - REST facile vert.x et Groovy
Devoxx France 2014 - REST facile vert.x et GroovyDevoxx France 2014 - REST facile vert.x et Groovy
Devoxx France 2014 - REST facile vert.x et Groovy
 
Vertx – reactive toolkit
Vertx – reactive toolkitVertx – reactive toolkit
Vertx – reactive toolkit
 
Netty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/ConnectivityNetty @Apple: Large Scale Deployment/Connectivity
Netty @Apple: Large Scale Deployment/Connectivity
 
Vertx for worlddomination
Vertx for worlddominationVertx for worlddomination
Vertx for worlddomination
 
Vert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVMVert.X like Node.js but polyglot and reactive on JVM
Vert.X like Node.js but polyglot and reactive on JVM
 
Bbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic searchBbl microservices avec vert.x cdi elastic search
Bbl microservices avec vert.x cdi elastic search
 
Vert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingVert.x – The problem of real-time data binding
Vert.x – The problem of real-time data binding
 
Presen20081
Presen20081Presen20081
Presen20081
 
A mediter
A mediterA mediter
A mediter
 
Guide routard intelligence économique 2014
Guide routard intelligence économique 2014Guide routard intelligence économique 2014
Guide routard intelligence économique 2014
 
Postales Del Viaje
Postales Del ViajePostales Del Viaje
Postales Del Viaje
 
Tendencias emergentes ii[1]
Tendencias emergentes ii[1]Tendencias emergentes ii[1]
Tendencias emergentes ii[1]
 
Tout commence avec les corps de Paul auster
Tout commence avec les corps de Paul austerTout commence avec les corps de Paul auster
Tout commence avec les corps de Paul auster
 
Ppt impots
Ppt impotsPpt impots
Ppt impots
 
Composition d'audience de VoitureAuMaroc - A LIRE -
Composition d'audience de VoitureAuMaroc - A LIRE -Composition d'audience de VoitureAuMaroc - A LIRE -
Composition d'audience de VoitureAuMaroc - A LIRE -
 
Mercator Ocean newsletter 08
Mercator Ocean newsletter 08Mercator Ocean newsletter 08
Mercator Ocean newsletter 08
 
Chroniques Ressources Entreprises _mars2014 - juin 2014
Chroniques Ressources Entreprises _mars2014 - juin 2014Chroniques Ressources Entreprises _mars2014 - juin 2014
Chroniques Ressources Entreprises _mars2014 - juin 2014
 
Sesión 9
Sesión 9Sesión 9
Sesión 9
 
Central Córdoba - UnióN
Central Córdoba - UnióNCentral Córdoba - UnióN
Central Córdoba - UnióN
 
ns2 projects chennai
ns2 projects chennains2 projects chennai
ns2 projects chennai
 

Similaire à nodejs vs vertx

ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursHoracio Gonzalez
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applicationsgoldoraf
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanMicrosoft
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615JUG Toulouse
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09Claude Coulombe
 
Solution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptSolution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptRaphaël Semeteys
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introOlivier Mallassi
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejsnaholyr
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?GreenIvory
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsDenis Voituron
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Bruno Bonnin
 
Importer des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshop
Importer des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshopImporter des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshop
Importer des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshopNuxeo
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPjulien pauli
 
Programmation web asynchrone avec Tornado
Programmation web asynchrone avec TornadoProgrammation web asynchrone avec Tornado
Programmation web asynchrone avec TornadoRonan Amicel
 

Similaire à nodejs vs vertx (20)

ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - CoursENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
ENIB cours CAI Web - Séance 3 - JSP/Servlet - Cours
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
HTML5 en projet
HTML5 en projetHTML5 en projet
HTML5 en projet
 
Apache Open SSL
Apache Open SSLApache Open SSL
Apache Open SSL
 
Découverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet SpartanDécouverte du moteur de rendu du projet Spartan
Découverte du moteur de rendu du projet Spartan
 
Vert.x
Vert.xVert.x
Vert.x
 
REST JUG Toulouse 20100615
REST JUG Toulouse 20100615REST JUG Toulouse 20100615
REST JUG Toulouse 20100615
 
Ajax GTI780 & MTI780 ETS A09
Ajax  GTI780 & MTI780  ETS  A09Ajax  GTI780 & MTI780  ETS  A09
Ajax GTI780 & MTI780 ETS A09
 
Solution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScriptSolution Linux 2009 - JavaScript
Solution Linux 2009 - JavaScript
 
Support Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFISupport Web Services SOAP et RESTful Mr YOUSSFI
Support Web Services SOAP et RESTful Mr YOUSSFI
 
Vert.x 3
Vert.x 3Vert.x 3
Vert.x 3
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Réu technodejs
Réu technodejsRéu technodejs
Réu technodejs
 
Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?Flex, une techno RIA incontournable pour les futures app web ?
Flex, une techno RIA incontournable pour les futures app web ?
 
Procédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénientsProcédures CLR pour SQL Server : avantages et inconvénients
Procédures CLR pour SQL Server : avantages et inconvénients
 
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
Guide (un tout petit peu) pratique (et totalement subjectif) du stream proces...
 
Importer des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshop
Importer des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshopImporter des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshop
Importer des données dans Nuxeo Platform - Nuxeo Tour 2014 - workshop
 
Communications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHPCommunications Réseaux et HTTP avec PHP
Communications Réseaux et HTTP avec PHP
 
Programmation web asynchrone avec Tornado
Programmation web asynchrone avec TornadoProgrammation web asynchrone avec Tornado
Programmation web asynchrone avec Tornado
 
Support JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.YoussfiSupport JEE Servlet Jsp MVC M.Youssfi
Support JEE Servlet Jsp MVC M.Youssfi
 

Plus de Quentin Apruzzese

Analytics : Google Advanced Analytics vs Omniture
Analytics : Google Advanced Analytics vs OmnitureAnalytics : Google Advanced Analytics vs Omniture
Analytics : Google Advanced Analytics vs OmnitureQuentin Apruzzese
 
Solution Analytics : Oracle Advanced Analytics
Solution Analytics : Oracle Advanced AnalyticsSolution Analytics : Oracle Advanced Analytics
Solution Analytics : Oracle Advanced AnalyticsQuentin Apruzzese
 
Solution Analytics : KISS metrics
Solution Analytics : KISS metricsSolution Analytics : KISS metrics
Solution Analytics : KISS metricsQuentin Apruzzese
 
Solution Analytics : Kameleoon
Solution Analytics : KameleoonSolution Analytics : Kameleoon
Solution Analytics : KameleoonQuentin Apruzzese
 
Solution Analytics : Google Analytics
Solution Analytics : Google AnalyticsSolution Analytics : Google Analytics
Solution Analytics : Google AnalyticsQuentin Apruzzese
 
Solution Analytics : AT Internet
Solution Analytics : AT InternetSolution Analytics : AT Internet
Solution Analytics : AT InternetQuentin Apruzzese
 
Solution analytics : Adobe Omniture
Solution analytics : Adobe OmnitureSolution analytics : Adobe Omniture
Solution analytics : Adobe OmnitureQuentin Apruzzese
 
Solution analytics : acquia lift
Solution analytics : acquia liftSolution analytics : acquia lift
Solution analytics : acquia liftQuentin Apruzzese
 
Comparaison de plateformes Cloud
Comparaison de plateformes CloudComparaison de plateformes Cloud
Comparaison de plateformes CloudQuentin Apruzzese
 
Les systèmes de base de donnée
Les systèmes de base de donnéeLes systèmes de base de donnée
Les systèmes de base de donnéeQuentin Apruzzese
 

Plus de Quentin Apruzzese (15)

Analytics : Google Advanced Analytics vs Omniture
Analytics : Google Advanced Analytics vs OmnitureAnalytics : Google Advanced Analytics vs Omniture
Analytics : Google Advanced Analytics vs Omniture
 
Solution Analytics : Oracle Advanced Analytics
Solution Analytics : Oracle Advanced AnalyticsSolution Analytics : Oracle Advanced Analytics
Solution Analytics : Oracle Advanced Analytics
 
Solution Analytics : KISS metrics
Solution Analytics : KISS metricsSolution Analytics : KISS metrics
Solution Analytics : KISS metrics
 
Solution Analytics : Kameleoon
Solution Analytics : KameleoonSolution Analytics : Kameleoon
Solution Analytics : Kameleoon
 
Solution Analytics : Google Analytics
Solution Analytics : Google AnalyticsSolution Analytics : Google Analytics
Solution Analytics : Google Analytics
 
Solution Analytics : AT Internet
Solution Analytics : AT InternetSolution Analytics : AT Internet
Solution Analytics : AT Internet
 
Solution analytics : Adobe Omniture
Solution analytics : Adobe OmnitureSolution analytics : Adobe Omniture
Solution analytics : Adobe Omniture
 
Solution analytics : acquia lift
Solution analytics : acquia liftSolution analytics : acquia lift
Solution analytics : acquia lift
 
Comparatif analytics
Comparatif analyticsComparatif analytics
Comparatif analytics
 
Comparatif CMS
Comparatif CMSComparatif CMS
Comparatif CMS
 
Cms & e commerce
Cms & e commerceCms & e commerce
Cms & e commerce
 
Numergy vs Cloudwatt
Numergy vs CloudwattNumergy vs Cloudwatt
Numergy vs Cloudwatt
 
Aruba vs Rackspace
Aruba vs RackspaceAruba vs Rackspace
Aruba vs Rackspace
 
Comparaison de plateformes Cloud
Comparaison de plateformes CloudComparaison de plateformes Cloud
Comparaison de plateformes Cloud
 
Les systèmes de base de donnée
Les systèmes de base de donnéeLes systèmes de base de donnée
Les systèmes de base de donnée
 

nodejs vs vertx

  • 1. <technologies-web/> <metaname="author"content="Pierre-Emmanuel Altieri, Clément Casu, Oussama Ezzayer, Raphaël Kiffer">
  • 5. 2011 Tim Fox 2.1.4
  • 7. The C10k Problem Le c10k […] est un code numérique utilisé pour exprimer la limitation que la plupart des serveurs ont en termes de connexions réseaux. http://fr.wikipedia.org/wiki/C10k_problem
  • 8. «Origins» Reactor Vérification Événement Exécution Callback Requête Web ou callback Choix de l’événement Exécution de l’événement Lancement de callback avec données
  • 10. Programmation événementielle fs =require('fs'); vardata =fs.readFileSync('file.txt') // Leflot d’exécution est bloqué jusqu’à la fin de l’exécution console.log(data) fs =require('fs'); fs.readFile('file.txt', function(error, data) { // Exécutionà la fin de l’opérationconsole.log(data) });
  • 11. Avant/Après Serveur Thread Thread Thread Thread Requête Requête Requête Requête
  • 12. Avant/Après Serveur Thread Requête Requête Requête Requête
  • 14. Reactive Programming Responsive Élastique Event-driven Scalable Réactif en terme d’UI Réactif aux erreurs Réactif aux événements Réactif à la charge
  • 15. Bootstrap varvertx =require('vertx'); vertx.createHttpServer() .requestHandler(function(req){ varfile =req.path()==='/'? 'index.html': req.path(); req.response.sendFile('app/'+file); }).listen(8080); console.log('Server is running'); $ node server.js varhttp =require('http'); http.createServer(function(req, res){ res.writeHead(200, { 'Content-Type': 'text/plain‘ }); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server is running'); $ vertxrun server.js
  • 16. Bootstrap $ node server.js varhttp =require('http'); http.createServer(function(req, res){ res.writeHead(200, { 'Content-Type': 'text/plain‘ }); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server is running'); $ vertxrun Server.java publicclassServer extendsVerticle { publicvoidstart(){ vertx.createHttpServer().requestHandler( newHandler<HttpServerRequest>(){ publicvoidhandle(HttpServerRequest req){ Stringfile =req.path().equals("/")? "index.html": req.path(); req.response().sendFile("app/"+file); } }).listen(8080); } }
  • 17. Bootstrap $ node server.js varhttp =require('http'); http.createServer(function(req, res){ res.writeHead(200, { 'Content-Type': 'text/plain‘ }); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server is running'); $ vertxrun server.rb require"vertx" Vertx::HttpServer.new.request_handler do |req| file =req.uri =="/"?"index.html": req.uri req.response.send_file "webroot/#{file}" end.listen(8080)
  • 18. Bootstrap $ node server.js varhttp =require('http'); http.createServer(function(req, res){ res.writeHead(200, { 'Content-Type': 'text/plain‘ }); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server is running'); $ vertxrun Server.groovy vertx.createHttpServer().requestHandler {req -> def file =req.uri =="/"? "index.html": req.uri req.response.sendFile "app/$file" }.listen(8080)
  • 19. Bootstrap $ node server.js varhttp =require('http'); http.createServer(function(req, res){ res.writeHead(200, { 'Content-Type': 'text/plain‘ }); res.end('Hello Worldn'); }).listen(1337, '127.0.0.1'); console.log('Server is running'); $ vertxrun server.py importvertx server =vertx.create_http_server() @server.request_handler def request_handler(req): file ="index.html"ifreq.uri =="/"elsereq.uri req.response.send_file("app/%s"%file) server.listen(8080)
  • 20. Versus Environnement Modules npm Verticles Event Bus Shared Data 1 process Workflow
  • 21. Et les performances ? 0 200 400 600 800 1000 1200 1400 1600 1800 2000 Ajout JSON Hello World Concatenation String Fibo(30) recursif NodeJS (tr/s) Vert.X (tr/s) NodeJS (mem) Vert.X (mem)