SlideShare une entreprise Scribd logo
1  sur  57
Writing highly scalable WebSocket using the Atmosphere Framework ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Who is Wordnik
Who I am ,[object Object],Creator of Grizzly Framework
Who I am Creator of Grizzly Framework Significant contributor of GlassFish ,[object Object]
Who I am Creator of Grizzly Framework Significant contributor of GlassFish Creator of the AsyncHttpClient ,[object Object]
Who I am Creator of Grizzly Framework Significant contributor of GlassFish Creator of Atmosphere Creator of the AsyncHttpClient ,[object Object]
Who I am Creator of Grizzly Framework Significant contributor of GlassFish Creator of Atmosphere Creator of the AsyncHttpClient ,[object Object],Tomcat,  Apache Digester, Sitebricks, Jersey, Aether/Maven, etc.
The Atmosphere Framework A Portable Comet Framework
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin  Support available WebSocket Native API
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin  Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc.
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin  Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc.  Supported/Integrated by almost all major frameworks and javascript library
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10)
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API Decide the best transport, negociate it with the server
Java Landscape Jetty 7.0: First to Support WebSocket
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!!
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you crazy enough to rewrite your entire app?
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you  crazy  enough to rewrite your entire app? Really want to use  proprietary  solution like ?
How? Integrate with  all  framework? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check Atmosphere provides a uniform API and hides the underlying transport details (async I/O included)
Concepts Upgrade/Suspend
Concepts Upgrade/Suspend Broadcast
Concepts Upgrade/Suspend Broadcast Resume
Concepts Upgrade/Suspend Broadcast Resume Client choose the best technique  (ws or comet) Async I/O (Input/Output Stream)
Concepts Upgrade/Suspend Broadcast Resume Cloud enabled (zzzzzz) Async I/O (Input/Output Stream) Survive Proxy Cloud Enabled
Zzzzzzzzz Enough Bla Bla Bla, let ’s do Scala!
API Atmosphere Handler
API Jersey to the rescue! (@ and Prog API) Atmosphere Handler
API Atmosphere Handler WebSocket Protocol Jersey to the rescue! (@ and Prog API)
API Atmosphere Handler WebSocket Protocol Servlet API Jersey to the rescue! (@ and Prog API)
The Demo Jetty 8 Tomcat 6 Redis Chrome Redis CLI Safari WebSocket WebSocket FAIL -> Streaming Broadcaster Broadcaster
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],2005- AtmosphereHandler http://is.gd/hH3AaH
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],1999 – Servlet API http://is.gd/GcnG0A
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],2007 – REST API http://is.gd/Df9Uvm
2011 – WebSocket API http://is.gd/SEa4AK
2011 – Client API http://is.gd/9jumKt
SwaggerSocket Protocol HTTP/REST Over WebSocket
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests Fully ASYNCHRONOUS
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Request Fully ASYNCHRONOUS ,[object Object],[object Object],[object Object]
SwaggerSocket Protocol WebServer Atmosphere WebSocket WebSocket Protocol Jersey REST Resource
[object Object],Benchmark
[object Object],[object Object],[object Object],[object Object],[object Object],Conclusion

Contenu connexe

Tendances

Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaJames Falkner
 
0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web servicesIlya Grigorik
 
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comRuby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comIlya Grigorik
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsSergi Almar i Graupera
 
Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011David Troy
 
GWT Web Socket and data serialization
GWT Web Socket and data serializationGWT Web Socket and data serialization
GWT Web Socket and data serializationGWTcon
 
Ruby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and MonitoringRuby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and MonitoringIlya Grigorik
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocketMing-Ying Wu
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkFabio Tiriticco
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisFastly
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsNaresh Chintalcheru
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCLFastly
 
Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikIlya Grigorik
 
Using Websockets with Play!
Using Websockets with Play!Using Websockets with Play!
Using Websockets with Play!Andrew Conner
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparisonHiroshi Nakamura
 
Implementing Comet using PHP
Implementing Comet using PHPImplementing Comet using PHP
Implementing Comet using PHPKing Foo
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARSNAVER D2
 
A Heart Rate Validating Admission Webhook
A Heart Rate Validating Admission WebhookA Heart Rate Validating Admission Webhook
A Heart Rate Validating Admission WebhookTom Gallacher
 

Tendances (20)

Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
 
0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services
 
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comRuby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSockets
 
Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011
 
GWT Web Socket and data serialization
GWT Web Socket and data serializationGWT Web Socket and data serialization
GWT Web Socket and data serialization
 
Ruby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and MonitoringRuby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and Monitoring
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocket
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using Websockets
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya Grigorik
 
Using Websockets with Play!
Using Websockets with Play!Using Websockets with Play!
Using Websockets with Play!
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparison
 
Implementing Comet using PHP
Implementing Comet using PHPImplementing Comet using PHP
Implementing Comet using PHP
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
 
A Heart Rate Validating Admission Webhook
A Heart Rate Validating Admission WebhookA Heart Rate Validating Admission Webhook
A Heart Rate Validating Admission Webhook
 
Websockets and SockJS, Real time chatting
Websockets and SockJS, Real time chattingWebsockets and SockJS, Real time chatting
Websockets and SockJS, Real time chatting
 

En vedette

Riak Search - Erlang Factory London 2010
Riak Search - Erlang Factory London 2010Riak Search - Erlang Factory London 2010
Riak Search - Erlang Factory London 2010Rusty Klophaus
 
Hyperdex - A closer look
Hyperdex - A closer lookHyperdex - A closer look
Hyperdex - A closer lookDECK36
 
Chloe and the Realtime Web
Chloe and the Realtime WebChloe and the Realtime Web
Chloe and the Realtime WebTrotter Cashion
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013dotCloud
 
Blazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programsBlazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programspalvaro
 
ElasticSearch - index server used as a document database
ElasticSearch - index server used as a document databaseElasticSearch - index server used as a document database
ElasticSearch - index server used as a document databaseRobert Lujo
 
(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)Pavlo Baron
 
Complex Legacy System Archiving/Data Retention with MongoDB and Xquery
Complex Legacy System Archiving/Data Retention with MongoDB and XqueryComplex Legacy System Archiving/Data Retention with MongoDB and Xquery
Complex Legacy System Archiving/Data Retention with MongoDB and XqueryDATAVERSITY
 
Spring Cleaning for Your Smartphone
Spring Cleaning for Your SmartphoneSpring Cleaning for Your Smartphone
Spring Cleaning for Your SmartphoneLookout
 
Web-Oriented Architecture (WOA)
Web-Oriented Architecture (WOA)Web-Oriented Architecture (WOA)
Web-Oriented Architecture (WOA)thetechnicalweb
 
Scalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDBScalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDBWilliam Candillon
 
Interoperability With RabbitMq
Interoperability With RabbitMqInteroperability With RabbitMq
Interoperability With RabbitMqAlvaro Videla
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsSpike Brehm
 
Erlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web WisdomErlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web Wisdomguest3933de
 
Shrinking the Haystack" using Solr and OpenNLP
Shrinking the Haystack" using Solr and OpenNLPShrinking the Haystack" using Solr and OpenNLP
Shrinking the Haystack" using Solr and OpenNLPlucenerevolution
 
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...C4Media
 
AST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptAST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptIngvar Stepanyan
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputPaolo Negri
 

En vedette (20)

Riak Search - Erlang Factory London 2010
Riak Search - Erlang Factory London 2010Riak Search - Erlang Factory London 2010
Riak Search - Erlang Factory London 2010
 
Brunch With Coffee
Brunch With CoffeeBrunch With Coffee
Brunch With Coffee
 
Hyperdex - A closer look
Hyperdex - A closer lookHyperdex - A closer look
Hyperdex - A closer look
 
Chloe and the Realtime Web
Chloe and the Realtime WebChloe and the Realtime Web
Chloe and the Realtime Web
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
Blazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programsBlazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programs
 
ElasticSearch - index server used as a document database
ElasticSearch - index server used as a document databaseElasticSearch - index server used as a document database
ElasticSearch - index server used as a document database
 
(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)
 
Complex Legacy System Archiving/Data Retention with MongoDB and Xquery
Complex Legacy System Archiving/Data Retention with MongoDB and XqueryComplex Legacy System Archiving/Data Retention with MongoDB and Xquery
Complex Legacy System Archiving/Data Retention with MongoDB and Xquery
 
Spring Cleaning for Your Smartphone
Spring Cleaning for Your SmartphoneSpring Cleaning for Your Smartphone
Spring Cleaning for Your Smartphone
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
Web-Oriented Architecture (WOA)
Web-Oriented Architecture (WOA)Web-Oriented Architecture (WOA)
Web-Oriented Architecture (WOA)
 
Scalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDBScalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDB
 
Interoperability With RabbitMq
Interoperability With RabbitMqInteroperability With RabbitMq
Interoperability With RabbitMq
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
 
Erlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web WisdomErlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web Wisdom
 
Shrinking the Haystack" using Solr and OpenNLP
Shrinking the Haystack" using Solr and OpenNLPShrinking the Haystack" using Solr and OpenNLP
Shrinking the Haystack" using Solr and OpenNLP
 
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
 
AST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptAST - the only true tool for building JavaScript
AST - the only true tool for building JavaScript
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput
 

Similaire à Writing highly scalable WebSocket using the Atmosphere Framework and Scala

Clojure and the Web
Clojure and the WebClojure and the Web
Clojure and the Webnickmbailey
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Matt Raible
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UGProject Zero
 
1 java servlets and jsp
1   java servlets and jsp1   java servlets and jsp
1 java servlets and jspAnkit Minocha
 
Understanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. CastroUnderstanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. CastroMohammad Tayseer
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureMark McGranaghan
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScriptOleg Podsechin
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletFahmi Jafar
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversTatsuhiko Miyagawa
 
Using eZ Platform in an API Era
Using eZ Platform in an API EraUsing eZ Platform in an API Era
Using eZ Platform in an API EraeZ Systems
 
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected BusinessWSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected BusinessWSO2
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST APIstephenbhadran
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Matt Raible
 

Similaire à Writing highly scalable WebSocket using the Atmosphere Framework and Scala (20)

Clojure and the Web
Clojure and the WebClojure and the Web
Clojure and the Web
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UG
 
1 java servlets and jsp
1   java servlets and jsp1   java servlets and jsp
1 java servlets and jsp
 
Understanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. CastroUnderstanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. Castro
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic Clojure
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
Servlet
Servlet Servlet
Servlet
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java Servlet
 
Java servlets
Java servletsJava servlets
Java servlets
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
Sun Web Server Brief
Sun Web Server BriefSun Web Server Brief
Sun Web Server Brief
 
Servlets
ServletsServlets
Servlets
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
 
Using eZ Platform in an API Era
Using eZ Platform in an API EraUsing eZ Platform in an API Era
Using eZ Platform in an API Era
 
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected BusinessWSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
 
WSO2 AppDev platform
WSO2 AppDev platformWSO2 AppDev platform
WSO2 AppDev platform
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST API
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
 
Servlet by Rj
Servlet by RjServlet by Rj
Servlet by Rj
 

Dernier

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 

Dernier (20)

Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 

Writing highly scalable WebSocket using the Atmosphere Framework and Scala

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. The Atmosphere Framework A Portable Comet Framework
  • 9. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0
  • 10. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin
  • 11. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin Support available WebSocket Native API
  • 12. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc.
  • 13. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc. Supported/Integrated by almost all major frameworks and javascript library
  • 14. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side
  • 15. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10)
  • 16. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API
  • 17. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API Decide the best transport, negociate it with the server
  • 18. Java Landscape Jetty 7.0: First to Support WebSocket
  • 19. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility
  • 20. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change
  • 21. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support
  • 22. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes
  • 23. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz
  • 24. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!!
  • 25. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you crazy enough to rewrite your entire app?
  • 26. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you crazy enough to rewrite your entire app? Really want to use proprietary solution like ?
  • 27. How? Integrate with all framework? Check!
  • 28. How? Integrate with all framework? Check! Want Servlet API? Check!
  • 29. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check!
  • 30. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check!
  • 31. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check!
  • 32. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check
  • 33. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check Atmosphere provides a uniform API and hides the underlying transport details (async I/O included)
  • 37. Concepts Upgrade/Suspend Broadcast Resume Client choose the best technique (ws or comet) Async I/O (Input/Output Stream)
  • 38. Concepts Upgrade/Suspend Broadcast Resume Cloud enabled (zzzzzz) Async I/O (Input/Output Stream) Survive Proxy Cloud Enabled
  • 39. Zzzzzzzzz Enough Bla Bla Bla, let ’s do Scala!
  • 41. API Jersey to the rescue! (@ and Prog API) Atmosphere Handler
  • 42. API Atmosphere Handler WebSocket Protocol Jersey to the rescue! (@ and Prog API)
  • 43. API Atmosphere Handler WebSocket Protocol Servlet API Jersey to the rescue! (@ and Prog API)
  • 44. The Demo Jetty 8 Tomcat 6 Redis Chrome Redis CLI Safari WebSocket WebSocket FAIL -> Streaming Broadcaster Broadcaster
  • 45.
  • 46.
  • 47.
  • 48. 2011 – WebSocket API http://is.gd/SEa4AK
  • 49. 2011 – Client API http://is.gd/9jumKt
  • 51. SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol
  • 52. SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests
  • 53. SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests Fully ASYNCHRONOUS
  • 54.
  • 55. SwaggerSocket Protocol WebServer Atmosphere WebSocket WebSocket Protocol Jersey REST Resource
  • 56.
  • 57.