Orbited Scaling Bi-directional web applications A presentation by Michael Carter

Slides:



Advertisements
Similar presentations
Games, chat, and finance Toward a truly interactive web with Comet, BAM, and HMTP Emil Ong Chief Evangelist.
Advertisements

Testing Web Applications & Services Testing Web Applications & Web Services.
The SMART Way to Migrate Replicated Stateful Services Jacob R. Lorch, Atul Adya, Bill Bolosky, Ronnie Chaiken, John Douceur, Jon Howell Microsoft Research.
Developers: Alexey Rastvortsev, Ilya Kolchinsky Supervisors: Roy Friedman, Alex Kogan.
Web Caching Schemes1 A Survey of Web Caching Schemes for the Internet Jia Wang.
AJAX Presented by: Dickson Fu Dimas Ariawan Niels Andreassen Ryan Dial Jordan Nielson CMPUT 410 University of Alberta 2006.
SEDA: An Architecture for Well-Conditioned, Scalable Internet Services Matt Welsh, David Culler, and Eric Brewer Computer Science Division University of.
Internet Networking Spring 2006 Tutorial 12 Web Caching Protocols ICP, CARP.
Design and Implementation of Alternative Route Against DDOS Jing Yang and Su Li.
DATABASE APPLICATION DEVELOPMENT SAK 3408 The Web and DBMS.
1 Spring Semester 2007, Dept. of Computer Science, Technion Internet Networking recitation #13 Web Caching Protocols ICP, CARP.
Server Architecture Models Operating Systems Hebrew University Spring 2004.
Internet Networking Spring 2002 Tutorial 13 Web Caching Protocols ICP, CARP.
Strategies for Implementing Dynamic Load Sharing.
Proxy Cache Leonid Romanovsky Olga Fomenko Winter 2003 Instructor: Konstantin Sinyuk.
Application Layer  We will learn about protocols by examining popular application-level protocols  HTTP  FTP  SMTP / POP3 / IMAP  Focus on client-server.
Putting the Network to Work
Understanding and Managing WebSphere V5
Christopher M. Pascucci Basic Structural Concepts of.NET Browser – Server Interaction.
Client/Server Architectures
Distributed Data Stores – Facebook Presented by Ben Gooding University of Arkansas – April 21, 2015.
Lightning Talk Fred Rodriguez Aakash Juneja CPSC 473 March 16, 2012.
Network Address Translation (NAT) CS-480b Dick Steflik.
Server Load Balancing. Introduction Why is load balancing of servers needed? If there is only one web server responding to all the incoming HTTP requests.
Research on cloud computing application in the peer-to-peer based video-on-demand systems Speaker : 吳靖緯 MA0G rd International Workshop.
Introduction to AJAX AJAX Keywords: JavaScript and XML
CSCI 6962: Server-side Design and Programming Introduction to AJAX.
Basics of Web Databases With the advent of Web database technology, Web pages are no longer static, but dynamic with connection to a back-end database.
JavaScript, Fourth Edition Chapter 12 Updating Web Pages with AJAX.
Putting What We Learned Into Context – WSGI and Web Frameworks A290/A590, Fall /16/2014.
Node.js - What is Node.js? -
Operating Systems Recitation 9, May 19-20, Iterative server Handle one connection request at a time. Connection requests stored in queue associated.
Prophet Address Allocation for Large Scale MANETs Matt W. Mutka Dept. of Computer Science & Engineering Michigan State University East Lansing, USA IEEE.
Computing Infrastructure for Large Ecommerce Systems -- based on material written by Jacob Lindeman.
1 Geospatial and Business Intelligence Jean-Sébastien Turcotte Executive VP San Francisco - April 2007 Streamlining web mapping applications.
Building Rich Web Applications with Ajax Linda Dailey Paulson IEEE – Computer, October 05 (Vol.38, No.10) Presented by Jingming Zhang.
AJAX Compiled from “AJAX Programming” [Sang Shin] (Asynchronous JavaScript and XML)
Web Architecture Introduction
WHIM Presentation Topic : Comet and Jetty 6 Yu Song April
Moving Web Apps From Synchronous to Asynchronous Processing Jason Carreira Architect, ePlus Systems OpenSymphony member.
Web Technology Introduction AJAXAJAX. AJAX Outline  What is AJAX?  Benefits  Real world examples  How it works  Code review  Samples.
Chat Room App Logan Linn Network Application Design Fall 2010.
SE-2840 Dr. Mark L. Hornick 1 Introduction to Ajax Asynchronous Javascript And XML.
CS 6401 Overlay Networks Outline Overlay networks overview Routing overlays Resilient Overlay Networks Content Distribution Networks.
Node.Js 1. 2 Contents About Node.Js Web requirement latest trends Introduction Simple web server creation in Node.Js Dynamic Web pages Dynamic web page.
BZUPAGES.COM WEB SERVER PRESENTED TO: SIR AHMAD KAREEM.
What is AJAX ? Asynchronous Javascript and XML. Not a stand-alone language or technology. It is a technique that combines a set of known technologies in.
Intro Web Applications Andrew Benson – ScottyLabs – CrashCourse F14.
Web Technology (NCS-504) Prepared By Mr. Abhishek Kesharwani Assistant Professor,UCER Naini,Allahabad.
Netprog: Client/Server Issues1 Issues in Client/Server Programming Refs: Chapter 27.
Web Cache. What is Cache? Cache is the storing of data temporarily to improve performance. Cache exist in a variety of areas such as your CPU, Hard Disk.
Saahithi Chillara Radhika Goyal ECE Fall Senior Design Project.
Keith Telle Lead Software Engineer Bit Wizards Behind the Magic: SignalR Demystified.
Introduction to Node.js® Jitendra Kumar Patel Saturday, January 31, 2015.
Ajax SUBMITTED BY NITIN RAMANI C.S.E 3 rd Y 5 th S R.N CS SUBMITTED TO PRO. PUSHPARAJ PATEL SIR.
Vineel Vutukuri. What is SPA? Why SPA? Pros & Cons When to use SPA?
ArcGIS for Server Security: Advanced
Research of Web Real-Time Communication Based on WebSocket
SFS-HTTP: Securing the Web with Self-Certifying URLs
Hypertext Transfer Protocol
Mobile Navigation Control for Planetary Web Portals Team Members: John Calilung, Miguel Martinez, Frank Navarrete, Kevin Parton, Max Ru, Catherine Suh.
AJAX.
Internet Networking recitation #12
CSE 154 Lecture 22: AJAX.
AJAX Robin Burke ECT 360.
AWS Cloud Computing Masaki.
Issues in Client/Server Programming
JavaScript & jQuery AJAX.
The SMART Way to Migrate Replicated Stateful Services
Presentation transcript:

Orbited Scaling Bi-directional web applications A presentation by Michael Carter

Classic Web Navigation ● Browser Submits Request to server  GET /project.html HTTP/1.1 ● Server responds  HTTP/ OK  Content-length: 25  Hello! This is my project.

Ajax ● XMLHttpRequest  Behind the scenes  Javascript  Asynchronous ● Allows for incremental updates without navigation

Problem ● HTTP Pull model up until now ● What about the other direction? ● No server initiated transfers allowed ● Consider a chat application

A First Solution: Polling ● Browser makes Ajax requests every 0.5 seconds ● Server returns all events since last request ● Simulates bi-directional flow ● Allows us to make a chat application

Polling Problems ● High Latency  500 ms immediate overhead  Plus latency between the server and browser  And latency from the event originator and the server ● Heavy Load  2/req sec per user  1000 users = 2000 req / sec  Well beyond the capacity of most dynamic web applications

A Better Solution: Comet ● Browser makes a request for an event ● The Server accepts the request but does not respond ● Later, when an event occurs, the server sends data via the original request ● The Browser processes the data, then waits for more data

Comet Advantages ● Eliminates Latency overhead of polling ● Allows for true bi-directional flow ● Not difficult to implement in javascript

Comet Problems ● Web Servers can't handle comet + concurrency  Requests are expected to be short lived  Most servers are thread based  Each request goes to its own thread  So generally 1000 users can be handled with just threads.  Now connections are long lasting and sit idle  So threads can handle users

Comet Problems ● Scaling  Comet is relatively straightforward if you have a single server node  But if your capacity exceeds one node, you must add another  Classically, server nodes can be treated identically  But now its unclear which user is connected to which server, waiting for events

Comet Problems ● Integration  Difficult to add comet to your applications  Must access low-level web server apis  Must keep track of state somehow  Most web servers make this clumsy at best, and sometimes nearly impossible

Orbited: Solving Comet's problems ● Orbited is  separate, runs alongside the web server  Event-based. It can handle thousands of concurrent requests due to the lack of threads.  Simplistic. Keeps track of minimal state  Scalable. Due to the simplicity it is easy to scale Orbited nodes

A Round Trip (an Orbit) ● Our Browser asks Orbited for an event ● Orbited accepts the requests but doesn't reply ● Browser asks the server to encode some music ● The server responds with 'Ok. Will notify you later.' ● The server finishes its tasks ● The server connects to Orbited and tells it to respond to the user ● Orbited answers the request from long ago: 'All done!'

Orbited: Chat app ● Two functions  Join 'User Michael has joined'  Msg 'Michael: hello'

Orbited Client API ● To send a msg to a user, simply call  orbit.event(user, session, location, msg) ● Or to send a msg to multiple users call  orbit.event(recipients, msg)

Scaling Orbited ● Client uses a hash function to map users to nodes ● Javascript uses the same hash function ● The nodes are oblivious – they share no state ● To scale, simply add more nodes and update the hash function ● Scales Linearly

Orbited Caveats ● Due to Browser security, comet pages and content pages must have the same host name originator. ● Therefore you must do complex DNS server manipulations ● Orbited includes a development mode where it acts as a proxy to the web application server so you can avoid the DNS configuration ● Some firewalls shutdown idle HTTP connections after 60 seconds. So a new connection must constantly be remade.

Further Research ● Additional transports ● Triangular Routing  Allows dynamic load balancing  Eliminates Proxy overhead  No need for complex dns configuration ● More complete javascript support

Conclusion ● Orbited is fast ● Orbited is scalable ● Orbited is easy to integrate ● Orbited is a very feasible solution to the comet problem