State of the real-time web with Django
|
|
- Tyrone Price
- 5 years ago
- Views:
Transcription
1 State of the real-time web with Django Aymeric Augustin DjangoCon US - September 5th,
2 What are we talking about? 2
3 Real-time 1. Systems responding within deadlines 2. Simulations running at wall clock time 3. Processing events without perceivable delay 3
4 Real-time web The real-time web is a set of technologies and practices that enable users to receive information as soon as it is published by its authors, rather than requiring that they or their software check a source periodically for updates. 4
5 Use cases Chat Games VoIP Notifications Collaboration Live data Social feeds All these use cases require servers to push events to clients. 5
6 Problem Client Server GET / HTTP/1.1 HTTP/ OK??? information published! The request-response model doesn t allow servers to push events to clients. 6
7 From hacks to protocols 7
8 Early solutions Java applets (1996) Not quite the web Pushlets (2000) Call back from Java applications into DHTML Comet (2006) Long-lived HTTP connections to reduce latency A revolution in browser-based user interfaces 8
9 HTTP long polling Server keeps the request on hold and only sends a response when there is an event to deliver Client resends a request after each response Client request response request response request Server event event 9
10 HTTP streaming Server sends a series of events in a single HTTP response Client Server request response... Chunked EOF-terminated Client processes each incoming event response... response... event event 10
11 Chunked response HTTP/ OK Content-Type: text/plain Transfer-Encoding: chunked 25 This is the data in the first chunk Client Server request response... event response... 1C and this is the second one 0 response... event 11
12 RFC 6202 The authors acknowledge that both the HTTP long polling and HTTP streaming mechanisms stretch the original semantic of HTTP and that the HTTP protocol was not designed for bidirectional communication. 12
13 Server-sent events HTTP stream of events Format: text/ event-stream JavaScript API: EventSource interface and events : The data field is mandatory. data: This is the first message. : event and id are optional. event: message data: This is another message data: over several lines. event: flash data: This is a flash event! id:
14 Server-sent events 14
15 WebSocket Provides bidirectional communication in the context of the existing HTTP infrastructure RFC 6455 (supersedes hybi-xx and hixie-xx) Opening handshake to upgrade from HTTP Framing protocol and closing handshake Provisions for extensions and subprotocols JavaScript API: WebSocket interface and events
16 WebSocket > GET /endpoint HTTP/1.1 > Host: ws.example.com > Connection: Upgrade > Upgrade: websocket > Sec-WebSocket-Key: dghlihnhbxbszsbub25jzq== > Sec-WebSocket-Version: 13 < HTTP/ Switching Protocols < Connection: Upgrade < Upgrade: websocket < Sec-WebSocket-Accept: s3pplmbitxaq9kygzzhzrbk+xoo= 16
17 WebSocket > ec a0 1e 0c 81 f9 75 # TEXT [ M A S K ] m Y k < 81 0a c 6c 6f 20 6d 59 6b 21 # TEXT H e l l o m Y k! < e8 # CLOSE 1005 > a 29 aa # CLOSE [ M A S K ]
18 WebSocket (2009) 18
19 Transport frameworks Socket.IO SockJS LightStreamer (proprietary) 19
20 Let s try it! 20
21 An example of long polling Events Any source Web page JS Redis PUBLISH GET Long polling Pub/Sub Redis Redis SUBSCRIBE Application Django 21
22 Helpers # demo/models.py (1/2) import redis CHANNEL = 'demo' def send_message(message): client = redis.strictredis() message = message.encode('utf-8') return client.publish(channel, message) 22
23 Helpers # demo/models.py (2/2) def recv_message(): client = redis.strictredis() pubsub = client.pubsub() pubsub.subscribe(channel) for event in pubsub.listen(): if event['type'] == 'message': message = event['data'].decode('utf-8') break pubsub.unsubscribe() return message 23
24 Publisher # demo/send_msg.py #!/usr/bin/env python import sys from demo.models import send_message message = " ".join(sys.argv[1:]) num = send_message(message) if num == 1: log = "Sent to one subscriber" else: log = "Sent to {} subscribers".format(num) print("{}: {}".format(log, message)) 24
25 Subscriber # demo/views.py from django.http import HttpResponse from demo.models import recv_message def long_polling_endpoint(request): message = recv_message() return HttpResponse(message.encode('utf-8'), content_type='text/plain; charset=utf-8') 25
26 HTML # demo/templates/demo/long_polling.html <!DOCTYPE html>{% load static %} <html> <head> <title>long polling demo</title> </head> <body> <ul><!-- messages will be inserted here --></ul> <script src="//ajax.googleapis.com/ajax/libs/ jquery/2.0.3/jquery.min.js"></script> <script src="{% static 'demo/long_polling.js' %}"></script> </body> </html> 26
27 JavaScript # demo/static/demo/long_polling.js $(function () { function show_next_message() { $('<li><i>loading </i></li>').appendto($('ul')).load('endpoint/', show_next_message); } show_next_message(); }); 27
28 28 Demo
29 29 Demo
30 Deployment % gunicorn --timeout 10 --workers 2 dcus13rt.wsgi [68271] [INFO] Starting gunicorn 17.5 [68271] [INFO] Listening at: [68271] [INFO] Using worker: sync [68274] [INFO] Booting worker with pid: [68275] [INFO] Booting worker with pid: % ab -c 20 -n 20 \ Benchmarking (be patient)... % PYTHONPATH=. demo/send_msg.py spam Sent to 2 subscribers: spam 30
31 Deployment % ab -c 20 -n 20 \ Server Software: gunicorn/17.5 Server Hostname: Server Port: 8000 Document Path: Document Length: /long_polling/endpoint/ 4 bytes Concurrency Level: 20 Time taken for tests: seconds Complete requests: 20 Failed requests: 18 (Connect: 0, Receive: 0, Length: 18, Exceptions: 0) 31
32 Let s try again? 32
33 An example of WebSocket Events Any source Web page JS Redis PUBLISH WebSocket Pub/Sub Redis Redis SUBSCRIBE Real time Tulip 33
34 Subscriber # demo/handlers.py import tulip from demo.models import def simple_endpoint(websocket, uri): # Doesn't work! recv_message isn't a coroutine. message = yield from recv_message() websocket.send(message) 34
35 Subscriber # demo/handlers.py (1/2) import tulip import websockets from demo.models import recv_message subscribers = def endpoint(websocket, uri): global subscribers subscribers.add(websocket) yield from websocket.recv() subscribers.remove(websocket) 35
36 Subscriber # demo/handlers.py (2/2) def relay_messages(): while True: message = recv_message() for websocket in subscribers: if websocket.open: websocket.send(message) if name == ' main ': websockets.serve(endpoint, 'localhost', 7999) loop = tulip.get_event_loop() loop.run_in_executor(none, relay_messages) loop.run_forever() 36
37 HTML # demo/templates/demo/websocket.html <!DOCTYPE html>{% load static %} <html> <head> <title>websocket demo</title> </head> <body> <ul><!-- messages will be inserted here --></ul> <script src="//ajax.googleapis.com/ajax/libs/ jquery/2.0.3/jquery.min.js"></script> <script src="{% static 'demo/websocket.js' %}"></ script> </body> </html> 37
38 JavaScript # demo/static/demo/websocket.js $(function () { var ws = new WebSocket("ws://localhost:7999/"); ws.onmessage = function (event) { $('<li>' + event.data + '</li>').appendto($('ul')); } }); 38
39 By the way
40 Deployment with gevent % gunicorn --timeout 10 --workers 2 \ --worker-class gevent dcus13rt.wsgi [68261] [INFO] Starting gunicorn 17.5 [68261] [INFO] Listening at: [68261] [INFO] Using worker: gevent [68264] [INFO] Booting worker with pid: [68265] [INFO] Booting worker with pid: % ab -c 20 -n 20 \ Benchmarking (be patient)... % PYTHONPATH=. demo/send_msg.py spam Sent to 20 subscribers: spam 40
41 Deployment with gevent % ab -c 20 -n 20 \ Server Software: gunicorn/17.5 Server Hostname: Server Port: 8000 Document Path: Document Length: /long_polling/endpoint/ 4 bytes Concurrency Level: 20 Time taken for tests: seconds Complete requests: 20 Failed requests: 0 41
42 42 Asynchronous I/O
43 Execution model Based on an event loop Handle many socket connections in a single thread epoll (Linux), kqueue (BSD), IOCP (Windows) More efficient than one thread per connection Suitable for network programming 43
44 Programming model Based on explicit cooperative multi-threading Callbacks Coroutines In Python: yield (from) Suitable for concurrent applications 44
45 The sad truth Converting [a synchronous operation] to asynchronous requires modifying every point that calls it to yield control appropriately. 45
46 What about gevent? It modifies every function that performs I/O by monkey-patching the standard library so you don t have to change your own code. You get the benefits of the execution model for free! But you lose the benefits of the programming model. 46
47 Major Python frameworks gevent is a coroutine-based networking library Twisted is an event-driven networking engine Tornado is a web framework and asynchronous networking library 47
48 PEP 3156 Pluggable event loop API for interoperability Callbacks, transports, protocols, futures High-level scheduler based on coroutines Suspend execution with yield from... Reference implementation code-named Tulip Effort led by Guido van Rossum himself 48
49 49 It s too complicated!
50 django-c10k-demo Define WebSocket Wire them in URLconfs Use runserver in dev and gunicorn in prod Tulip under the hood Real-time made easy! 50
51 django-c10k-demo from c10ktools.http import def worker(ws): #... initial synchronization (not shown)... while True: msg = yield from ws.recv() if msg is None: break step, row, col, state = msg.split() for subscriber in subscribers[row][col]: if subscriber.open: subscriber.send(msg) for row, col in subscriptions: subscribers[row][col].remove(ws) 51
52 That was a lie. Markus Raetz, Silhouette (1993).
53 Django isn t asynchronous # Synchronous cache access def sync(request, key): value = cache.get(key) return HttpResponse(value) # Asynchronous cache def async(ws): value = yield from cache.get(key) ws.send(value) 53
54 Django isn t asynchronous # Synchronous ORM access def sync(request, user_id): user = User.objects.get(id=int(user_id)) bio_html = user.bio.html return HttpResponse(bio_html) # Asynchronous ORM def async(ws): user_id = yield from ws.recv() user = yield from User.objects.get(id=int(user_id)) bio_html = #??? no yield from attribute access! ws.send(bio_html) 54
55 Several lies, actually. Piotr Kowalski, Identité 4 (1993).
56 HTTP!= real-time Execution threads vs. events Programming preemptive vs. cooperative Protocol request / response vs. message streams Scalability stateless vs. stateful Workload CPU vs. I/O bound 56
57 Key learnings PEP 3156 will improve support and resources for asynchronous I/O in Python 3.4. Django isn t designed for explicit cooperative multi-threading and that s unlikely to change. Robust client and server stacks are emerging as well as deployment best-practices. Simplified development setups are possible at the cost of losing parity with production. 57
58 95% use case? Charles Ross, Brûlures solaires, 1993 (detail).
59 We re still learning. Charles Ross, Brûlures solaires, 1993.
60 Thank you! Questions? Photos were taken by the author at the Château d Oiron, France, on June 22 nd. 60 The Curios & Mirabilia exhibition is a modern tribute to the cabinet of curiosities gathered by Claude Gouffier circa 1550.
IERG 4080 Building Scalable Internet-based Services
Department of Information Engineering, CUHK MScIE 2 nd Semester, 2015/16 IERG 4080 Building Scalable Internet-based Services Lecture 9 Web Sockets for Real-time Communications Lecturer: Albert C. M. Au
More informationEnabling Full-Duplex Communications in APEX
Enabling Full-Duplex Communications in APEX Me Curt Workman - workmancw@ldschurch.org Education University of Utah Work Micron Electronics Evans&Sutherland The Church of Jesus Christ of Latter-Day Saints
More informationCOMET, HTML5 WEBSOCKETS OVERVIEW OF WEB BASED SERVER PUSH TECHNOLOGIES. Comet HTML5 WebSockets. Peter R. Egli INDIGOO.COM. indigoo.com. 1/18 Rev. 2.
COMET, HTML5 WEBSOCKETS OVERVIEW OF WEB BASED SERVER PUSH TECHNOLOGIES Peter R. Egli INDIGOO.COM 1/18 Contents 1. Server push technologies 2. HTML5 server events 3. WebSockets 4. Reverse HTTP 5. HTML5
More informationComet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios
Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Simone Bordet sbordet@intalio.com 1 Agenda What are Comet web applications? Impacts of Comet web applications WebSocket
More informationModule 6 Node.js and Socket.IO
Module 6 Node.js and Socket.IO Module 6 Contains 2 components Individual Assignment and Group Assignment Both are due on Wednesday November 15 th Read the WIKI before starting Portions of today s slides
More informationBuilding a Real-time Notification System
Building a Real-time Notification System September 2015, Geneva Author: Jorge Vicente Cantero Supervisor: Jiri Kuncar CERN openlab Summer Student Report 2015 Project Specification Configurable Notification
More informationDjango on Gevent. asynchronous i/o in a synchronous world. Tuesday, September 4, 12
Django on Gevent asynchronous i/o in a synchronous world About Me 5 years professionally as web developer 4 years using Django 2 years at Lawrence Journal-World (birthplace of Django) Tech obsessions
More informationNODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js
NODE.JS SERVER SIDE JAVASCRIPT Introduc)on Node.js Node.js was created by Ryan Dahl starting in 2009. For more information visit: http://www.nodejs.org 1 What about Node.js? 1. JavaScript used in client-side
More informationCSC443: Web Programming 2
CSC443: Web Programming Lecture 20: Web Sockets Haidar M. Harmanani HTML5 WebSocket Standardized by IETF in 2011. Supported by most major browsers including Google Chrome, Internet Explorer, Firefox, Safari
More informationKaazing Gateway: An Open Source
Kaazing Gateway: An Open Source HTML 5 Websocket Server Speaker Jonas Jacobi Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Agenda Real-Time Web? Why Do I Care? Scalability and Performance Concerns
More informationGuido van Rossum 9th LASER summer school, Sept. 2012
Guido van Rossum guido@python.org 9th LASER summer school, Sept. 2012 Async I/O is as old as computers But programmers prefer synchronous I/O Easier to understand Easier to write code for Fewer chances
More informationEduardo
Eduardo Silva @edsiper eduardo@treasure-data.com About Me Eduardo Silva Github & Twitter Personal Blog @edsiper http://edsiper.linuxchile.cl Treasure Data Open Source Engineer Fluentd / Fluent Bit http://github.com/fluent
More informationKaazing. Connect. Everything. WebSocket The Web Communication Revolution
Kaazing. Connect. Everything. WebSocket The Web Communication Revolution 1 Copyright 2011 Kaazing Corporation Speaker Bio John Fallows Co-Founder: Kaazing, At the Heart of the Living Web Co-Author: Pro
More informationConcurrent Python. Cody Soyland Austin Web Python User Group - Feb 28, Thursday, February 28, 13
Concurrent Python Cody Soyland Austin Web Python User Group - Feb 28, 2013 Getting started Notes on codysoyland.com Install gevent 1.0 (release candidate) Load my ipython Notebooks The Real-time Web Technologies
More informationWeb Sockets and SignalR Building the Real Time Web
Web Sockets and SignalR Building the Real Time Web DDD South West Saturday 26th May 2012 Chris Alcock Agenda Introduction What is Real Time? Interactive? Web Sockets Who What When How? Examples (Client
More informationLightstreamer. The Streaming-Ajax Revolution. Product Insight
Lightstreamer The Streaming-Ajax Revolution Product Insight 1 Agenda Paradigms for the Real-Time Web (four models explained) Requirements for a Good Comet Solution Introduction to Lightstreamer Lightstreamer
More information1999 Stackless Python 2004 Greenlet 2006 Eventlet 2009 Gevent 0.x (libevent) 2011 Gevent 1.0dev (libev, c-ares)
Denis Bilenko 1999 Stackless Python 2004 Greenlet 2006 Eventlet 2009 Gevent 0.x (libevent) 2011 Gevent 1.0dev (libev, c-ares) Replaced libevent with libev Replaced libevent-dns with c-ares Event loop is
More informationProgramming WebSockets. Sean Sullivan OSCON July 22, 2010
Programming WebSockets Sean Sullivan OSCON July 22, 2010 About me Web application developers HTML 5! improved JavaScript implementations! WebSockets! WebSockets? WebSockets a technology that enables
More informationHTTP, WebSocket, SPDY, HTTP/2.0
HTTP, WebSocket, SPDY, HTTP/2.0 Evolution of Web Protocols Thomas Becker tbecker@intalio.com 1 Intalio Intalio Jetty Services, Training and Support for Jetty and CometD Intalio BPMS Business Process Management
More informationKaazing Gateway. Open Source HTML 5 Web Socket Server
Kaazing Gateway Open Source HTML 5 Web Socket Server Speaker John Fallows Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Participant: HTML 5 Community Agenda Networking Review HTML 5 Communication
More informationIntroduction to Asynchronous Programming Fall 2014
CS168 Computer Networks Fonseca Introduction to Asynchronous Programming Fall 2014 Contents 1 Introduction 1 2 The Models 1 3 The Motivation 3 4 Event-Driven Programming 4 5 select() to the rescue 5 1
More informationFIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE
FIREFLY ARCHITECTURE: CO-BROWSING AT SCALE FOR THE ENTERPRISE Table of Contents Introduction... 2 Architecture Overview... 2 Supported Browser Versions and Technologies... 3 Firewalls and Login Sessions...
More informationRKN 2015 Application Layer Short Summary
RKN 2015 Application Layer Short Summary HTTP standard version now: 1.1 (former 1.0 HTTP /2.0 in draft form, already used HTTP Requests Headers and body counterpart: answer Safe methods (requests): GET,
More informationZero Latency HTTP The comet Technique
Zero Latency HTTP The comet Technique Filip Hanik SpringSource Inc Keystone, Colorado, 2008 Slide 1 Who am I bla bla fhanik@apache.org Tomcat Committer / ASF member Co-designed the Comet implementation
More informationAWS Lambda: Event-driven Code in the Cloud
AWS Lambda: Event-driven Code in the Cloud Dean Bryen, Solutions Architect AWS Andrew Wheat, Senior Software Engineer - BBC April 15, 2015 London, UK 2015, Amazon Web Services, Inc. or its affiliates.
More informationTutorial 8 Build resilient, responsive and scalable web applications with SocketPro
Tutorial 8 Build resilient, responsive and scalable web applications with SocketPro Contents: Introduction SocketPro ways for resilient, responsive and scalable web applications Vertical scalability o
More informationAchieving Scalability and High Availability for clustered Web Services using Apache Synapse. Ruwan Linton WSO2 Inc.
Achieving Scalability and High Availability for clustered Web Services using Apache Synapse Ruwan Linton [ruwan@apache.org] WSO2 Inc. Contents Introduction Apache Synapse Web services clustering Scalability/Availability
More informationLecture 18. WebSocket
Lecture 18. WebSocket 1. What is WebSocket? 2. Why WebSocket? 3. WebSocket protocols 4. WebSocket client side 5. WebSocket on server side 1. Case study, WebSocket on nose.js 2. Case study, WebSocket on
More informationRailsConf Europe 2008 Juggernaut Realtime Rails. Alex MacCaw and Stuart Eccles
RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles RailsConf Europe 2008 Juggernaut Realtime Rails Alex MacCaw and Stuart Eccles http://www.madebymany.co.uk/ server push HTTP
More informationHTML5 - INTERVIEW QUESTIONS
HTML5 - INTERVIEW QUESTIONS http://www.tutorialspoint.com/html5/html5_interview_questions.htm Copyright tutorialspoint.com Dear readers, these HTML5 Interview Questions have been designed specially to
More informationSend me up to 5 good questions in your opinion, I ll use top ones Via direct message at slack. Can be a group effort. Try to add some explanation.
Notes Midterm reminder Second midterm next week (04/03), regular class time 20 points, more questions than midterm 1 non-comprehensive exam: no need to study modules before midterm 1 Online testing like
More informationsockjs-tornado documentation
sockjs-tornado documentation Release 0.2 Serge S. Koval April 02, 2015 Contents 1 Topics 3 1.1 Statistics................................................. 3 1.2 Frequently Asked Questions.......................................
More informationNirvana A Technical Introduction
Nirvana A Technical Introduction Cyril PODER, ingénieur avant-vente June 18, 2013 2 Agenda Product Overview Client Delivery Modes Realm Features Management and Administration Clustering & HA Scalability
More informationWhy I still develop synchronous web in the asyncio era. April 7th, 2017 Giovanni Barillari - pycon otto - Firenze, Italy
Why I still develop synchronous web in the asyncio era April 7th, 2017 Giovanni Barillari - pycon otto - Firenze, Italy Who am I? I m Gio! pronounced as Joe trust me, I m a physicist :) code principally
More informationKeep Learning with Oracle University
Keep Learning with Oracle University Classroom Training Learning SubscripFon Live Virtual Class Training On Demand Cloud Technology ApplicaFons Industries educa7on.oracle.com 3 Session Surveys Help us
More informationINTERNET ENGINEERING. HTTP Protocol. Sadegh Aliakbary
INTERNET ENGINEERING HTTP Protocol Sadegh Aliakbary Agenda HTTP Protocol HTTP Methods HTTP Request and Response State in HTTP Internet Engineering 2 HTTP HTTP Hyper-Text Transfer Protocol (HTTP) The fundamental
More informationSpeed up Your Web Applications with HTML5 WebSockets. Yakov Fain, Farata Systems, USA
Speed up Your Web Applications with HTML5 WebSockets Yakov Fain, Farata Systems, USA The Plan - HTTP request-response - Demo - Server-Sent Events - Demo - WebSocket - Demo What Do You See? HTTP Hacks
More informationController/server communication
Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication
More informationReactive Microservices Architecture on AWS
Reactive Microservices Architecture on AWS Sascha Möllering Solutions Architect, @sascha242, Amazon Web Services Germany GmbH Why are we here today? https://secure.flickr.com/photos/mgifford/4525333972
More informationMigratoryData Server Architecture Guide. Version 5.0 November 13, 2018
MigratoryData Server Architecture Guide Version 5.0 November 13, 2018 Copyright Information Copyright c 2007-2018 Migratory Data Systems. ALL RIGHTS RESERVED. THIS DOCUMENT IS PROVIDED AS IS WITHOUT WARRANTY
More informationLab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service
Lab 4: create a Facebook Messenger bot and connect it to the Watson Conversation service Overview In this lab, you'll create advanced Node-RED flows that: Connect the Watson Conversation service to Facebook
More informationBuilding next-gen Web Apps with WebSocket. Copyright Kaazing Corporation. All rights reserved.
Building next-gen Web Apps with WebSocket Copyright 2011 - Kaazing Corporation. All rights reserved. Who am I? Graham Gear Solution Architect, with Kaazing, purveyors of HTML5 enabling tech Based in London,
More informationThe Future of the Web: HTML 5, WebSockets, Comet and Server Sent Events
The Future of the Web: HTML 5, WebSockets, Comet and Server Sent Events Sidda Eraiah Director of Management Services Kaazing Corporation Agenda Web Applications, where are they going? Real time data for
More informationBrad Drysdale. HTML5 WebSockets - the Web Communication revolution, making the impossible, possible. Main sponsor
Main sponsor HTML5 WebSockets - the Web Communication revolution, making the impossible, possible Brad Drysdale Picasso Matejko + Canale1o Malczewski + Chelmonski State of Scala Venkat Subramaniam Don't
More informationAT&T Smart Cities With M2X & Flow Designer
AT&T Smart Cities With M2X & Flow Designer Introduction... 2 FASTEST Way to Get Started... 5 Getting Started use Socket.io... 6 Getting Started Get Data / Polling... 9 Add a New M2X Device and Create your
More informationSocket programming. Complement for the programming assignment INFO-0010
Socket programming Complement for the programming assignment INFO-0010 Outline Socket definition Briefing on the Socket API A simple example in Java Multi-threading and Synchronization Example : HTTP protocol
More informationInternet Connectivity with
Internet Connectivity with Introduction The purpose of this workshop is to help you g et acquainted with the basics of internet connectivity by leveraging ARM mbed tools. If you are not already familiar
More informationHigh performance and scalable architectures
High performance and scalable architectures A practical introduction to CQRS and Axon Framework Allard Buijze allard.buijze@trifork.nl Allard Buijze Software Architect at Trifork Organizers of GOTO & QCON
More informationFUSE Ajax Tutorial. 07/06 Version 1.2
07/06 Version 1.2 This is a tutorial for a real world example of a stock portfolio publisher using Ajax and Apache ActiveMQ (AMQ). This demonstration uses features of Ajax to show multiple interactive
More informationDistributed Architectures & Microservices. CS 475, Spring 2018 Concurrent & Distributed Systems
Distributed Architectures & Microservices CS 475, Spring 2018 Concurrent & Distributed Systems GFS Architecture GFS Summary Limitations: Master is a huge bottleneck Recovery of master is slow Lots of success
More informationLECTURE 15. Web Servers
LECTURE 15 Web Servers DEPLOYMENT So, we ve created a little web application which can let users search for information about a country they may be visiting. The steps we ve taken so far: 1. Writing the
More informationController/server communication
Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication
More informationIEMS 5722 Mobile Network Programming and Distributed Server Architecture
Department of Information Engineering, CUHK MScIE 2 nd Semester, 2016/17 IEMS 5722 Mobile Network Programming and Distributed Server Architecture Lecture 9 Asynchronous Tasks & Message Queues Lecturer:
More informationModule 3 Web Component
Module 3 Component Model Objectives Describe the role of web components in a Java EE application Define the HTTP request-response model Compare Java servlets and JSP components Describe the basic session
More informationSTARCOUNTER. Technical Overview
STARCOUNTER Technical Overview Summary 3 Introduction 4 Scope 5 Audience 5 Prerequisite Knowledge 5 Virtual Machine Database Management System 6 Weaver 7 Shared Memory 8 Atomicity 8 Consistency 9 Isolation
More informationCodewords: A Massively Multiplayer Board Game built with Angular
Codewords: A Massively Multiplayer Board Game built with Angular Hi! I m Mike. 2 Hi! I m Mike. I like board games. 3 A LOT 4 In late 2017 I wanted to.. Learn Angular 4 + WebSockets See how Django Channels
More informationOracle Coherence and WebLogic 12c Delivering Real Time Push at Scale Steve Millidge
Oracle Coherence and WebLogic 12c Delivering Real Time Push at Scale Steve Millidge About Me Founder of C2B2 Leading Independent Middleware Experts Non-functional Experts Vendor Neutral Red Hat (JBoss),
More informationIEMS 5722 Mobile Network Programming and Distributed Server Architecture
Department of Information Engineering, CUHK MScIE 2 nd Semester, 2016/17 IEMS 5722 Mobile Network Programming and Distributed Server Architecture Lecture 10 Web Sockets for Real-time Communications Lecturer:
More informationApplication Protocols and HTTP
Application Protocols and HTTP 14-740: Fundamentals of Computer Networks Bill Nace Material from Computer Networking: A Top Down Approach, 6 th edition. J.F. Kurose and K.W. Ross Administrivia Lab #0 due
More informationTango - Icalepcs 2009 ESRF
Tango - Icalepcs 2009 ESRF TANGO collaboration and kernel status Brief introduction What's new since Icalepcs 2009 New projects Re-thinking the Tango event system E Taurel - Icalepcs 2011 2 What is Tango?
More informationIERG 4080 Building Scalable Internet-based Services
Department of Information Engineering, CUHK Term 1, 2016/17 IERG 4080 Building Scalable Internet-based Services Lecture 7 Asynchronous Tasks and Message Queues Lecturer: Albert C. M. Au Yeung 20 th & 21
More informationMake your application real-time with PubSubHubbub. Brett Slatkin May 19th, 2010
Make your application real-time with PubSubHubbub Brett Slatkin May 19th, 2010 View live notes and ask questions about this session on Google Wave http://tinyurl.com/push-io2010 Me http://onebigfluke.com
More informationReST 2000 Roy Fielding W3C
Outline What is ReST? Constraints in ReST REST Architecture Components Features of ReST applications Example of requests in REST & SOAP Complex REST request REST Server response Real REST examples REST
More informationCS 498RK FALL RESTFUL APIs
CS 498RK FALL 2017 RESTFUL APIs Designing Restful Apis blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Resources
More informationReal Time Apps Using SignalR
Real Time Apps Using SignalR Anurag Choudhry Solution Architect,Banking Technology Group,Tata Consultancy Services,New Delhi, India Anshu Premchand Lead, Presales & Solutions,Banking Technology Group,Tata
More informationECE 650 Systems Programming & Engineering. Spring 2018
ECE 650 Systems Programming & Engineering Spring 2018 Programming with Network Sockets Tyler Bletsch Duke University Slides are adapted from Brian Rogers (Duke) Sockets We ve looked at shared memory vs.
More informationJava vs JavaScript. For Enterprise Web Applications. Chris Bailey IBM Runtime Technologies IBM Corporation
Java vs JavaScript For Enterprise Web Applications Chris Bailey IBM Runtime Technologies 1 What Languages do you use? 120 Percentage of Audience 100 80 60 40 20 0 Java 2 JavaScript Both What Runtimes do
More informationWebsocket file transfer example
Websocket file transfer example The Problem: Low Latency Client-Server and Server-Client Connections. The Problem: Low Latency Client-Server and Server-Client Connections. // File has seen in the webkit
More informationReal-Time Embedded User Interfaces
Real-Time Embedded User Interfaces Justin Ireland August 2010 Introduction Modern appliances and electronic devices are becoming increasingly sophisticated. Advanced feature sets require advanced configuration
More informationCorey Clark PhD Daniel Montgomery
Corey Clark PhD Daniel Montgomery Web Dev Platform Cross Platform Cross Browser WebGL HTML5 Web Socket Web Worker Hardware Acceleration Optimized Communication Channel Parallel Processing JaHOVA OS Kernel
More informationXignite CloudStreaming overview
Xignite CloudStreaming overview Objectives Terminology Zero footprint Easy to implement Open standards Sample code Simple javascript implementation Handling patch messages Including error handling Using
More informationInteractive Websites: Comet and DWR. Joe Walker, SitePen
Interactive Websites: Comet and DWR Joe Walker, SitePen Agenda: Comet 101 The Ultimate Hack Passing the Pain DWR 101 Demos What is Comet? What is Comet? Long lived HTTP connections Low latency data For
More informationThe realtime web: HTTP/1.1 to WebSocket, SPDY and beyond. Guillermo QCon. November 2012.
The realtime web: HTTP/1.1 to WebSocket, SPDY and beyond Guillermo Rauch @ QCon. November 2012. Guillermo. CTO and co-founder at LearnBoost. Creator of socket.io and engine.io. @rauchg on twitter http://devthought.com
More informationthis presentation code is on https://github.com/gabrielelana/node-examples
this presentation code is on https://github.com/gabrielelana/node-examples gabriele lana gabriele.lana@cleancode.it twitter: @gabrielelana this presentation code is on https://github.com/gabrielelana/node-examples
More informationJava Enterprise Edition
Java Enterprise Edition The Big Problem Enterprise Architecture: Critical, large-scale systems Performance Millions of requests per day Concurrency Thousands of users Transactions Large amounts of data
More informationTomcatCon London 2017 Clustering Mark Thomas
TomcatCon London 2017 Clustering Mark Thomas Agenda Reverse Proxies Load-balancing Clustering Reverse Proxies bz.apache.org httpd instance Reverse Proxy Bugzilla (main) bz.apache.org/bugzilla httpd instance
More informationCHAPTER 3 - PROCESS CONCEPT
CHAPTER 3 - PROCESS CONCEPT 1 OBJECTIVES Introduce a process a program in execution basis of all computation Describe features of processes: scheduling, creation, termination, communication Explore interprocess
More informationBackend Development. SWE 432, Fall Web Application Development
Backend Development SWE 432, Fall 2018 Web Application Development Review: Async Programming Example 1 second each Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy bar Go get a candy
More informationNotes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title
Notes Ask course content questions on Slack (is651-spring-2018.slack.com) Contact me by email to add you to Slack Make sure you checked Additional Links at homework page before you ask In-class discussion
More informationReal Time Rack. Konstantin Haase
Real Time Rack Konstantin Haase La verdadera pregunta es... Quién es el mejor fútbolista? Explora! Por cierto... Come again? streaming server push decide what to s while streaming, not upfront
More informationJS Event Loop, Promises, Async Await etc. Slava Kim
JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????
More informationCopyright 2013, Oracle and/or its affiliates. All rights reserved. CON-7777, JMS and WebSocket for Lightweight and Efficient Messaging
1 JMS and WebSocket for Lightweight and Efficient Messaging Ed Bratt Senior Development Manager, Oracle Amy Kang Consulting Member Technical Staff, Oracle Safe Harbor Statement please note The following
More informationStratumGS Documentation
StratumGS Documentation Release 0.1.0 Dave Korhumel May 14, 2016 Contents 1 Documentation 3 1.1 Design.................................................. 3 1.2 Guides..................................................
More informationPushyDB. Jeff Chan, Kenny Lam, Nils Molina, Oliver Song {jeffchan, kennylam, molina,
PushyDB Jeff Chan, Kenny Lam, Nils Molina, Oliver Song {jeffchan, kennylam, molina, osong}@mit.edu https://github.com/jeffchan/6.824 1. Abstract PushyDB provides a more fully featured database that exposes
More informationModern Web Application Development. Sam Hogarth
Modern Web Application Development Sam Hogarth Some History Early Web Applications Server-side scripting only e.g. PHP/ASP Basic client-side scripts JavaScript/JScript/VBScript Major differences in browser
More informationREALTIME WEB APPLICATIONS WITH ORACLE APEX
REALTIME WEB APPLICATIONS WITH ORACLE APEX DOAG Conference 2012 Johannes Mangold Senior Consultant, Trivadis AG BASEL BERN LAUSANNE ZÜRICH DÜSSELDORF FRANKFURT A.M. FREIBURG I.BR. HAMBURG MÜNCHEN STUTTGART
More informationREST Easy with Infrared360
REST Easy with Infrared360 A discussion on HTTP-based RESTful Web Services and how to use them in Infrared360 What is REST? REST stands for Representational State Transfer, which is an architectural style
More informationReal-time video chat XPage application using websocket and WebRTC technologies AD-1077
Real-time video chat XPage application using websocket and WebRTC technologies AD-1077 Dr Csaba Kiss 02/03/2016 LA-UR-16-20047 Credentials Over 25 years experience in molecular biology Began Xpage application
More informationHigh Level Interoperability Testing
High Level Interoperability Testing For the Web of Things Dave Raggett F-Interop is an international project supported by the European Union s Horizon 2020 programme under Grant Agreement
More informationScience-as-a-Service
Science-as-a-Service The iplant Foundation Rion Dooley Edwin Skidmore Dan Stanzione Steve Terry Matthew Vaughn Outline Why, why, why! When duct tape isn t enough Building an API for the web Core services
More informationAdvanced Flask Patterns
Advanced Flask Patterns PyCon Russia 2013 a presentation by Armin Ronacher @mitsuhiko -1 Who am I? That's me Armin Ronacher @mitsuhiko Creator of Flask/Werkzeug/Jinja2 0 Focus & Caveats Interrupt me Assumes
More informationZombie Apocalypse Workshop
Zombie Apocalypse Workshop Building Serverless Microservices Danilo Poccia @danilop Paolo Latella @LatellaPaolo September 22 nd, 2016 2015, Amazon Web Services, Inc. or its Affiliates. All rights reserved.
More informationPutting A Spark in Web Apps
Putting A Spark in Web Apps Apache Big Data, Seville ES, 2016 David Fallside Intro Web app development has moved from Java etc to Node.js and JavaScript JS environment relatively simple and very rich,
More informationDISQUS. Continuous Deployment Everything. David
DISQUS Continuous Deployment Everything David Cramer @zeeg Continuous Deployment Shipping new code as soon as it s ready (It s really just super awesome buildbots) Workflow Commit (master) Integration
More informationDATA COMMUNICATOIN NETWORKING
DATA COMMUNICATOIN NETWORKING Instructor: Ouldooz Baghban Karimi Course Book: Computer Networking, A Top-Down Approach By: Kurose, Ross Introduction Course Overview Basics of Computer Networks Internet
More informationWhat the Bayeux? Filip Hanik. SpringSource Inc Keystone, Colorado, Slide 1
What the Bayeux? Filip Hanik SpringSource Inc Keystone, Colorado, 2008 Slide 1 Who is Filip Apache Tomcat committer ASF Member Part of the servlet expert group SpringSource Inc employee What we will cover
More informationIEMS 5780 / IERG 4080 Building and Deploying Scalable Machine Learning Services
IEMS 5780 / IERG 4080 Building and Deploying Scalable Machine Learning Services Lecture 11 - Asynchronous Tasks and Message Queues Albert Au Yeung 22nd November, 2018 1 / 53 Asynchronous Tasks 2 / 53 Client
More informationAWS Lambda. 1.1 What is AWS Lambda?
Objectives Key objectives of this chapter Lambda Functions Use cases The programming model Lambda blueprints AWS Lambda 1.1 What is AWS Lambda? AWS Lambda lets you run your code written in a number of
More informationØMQ and PyØMQ. Simple and Fast Messaging. Brian Granger SciPy 2010
ØMQ and PyØMQ Simple and Fast Messaging Brian Granger SciPy 2010 Message passing Message = binary data, csv, structured data, Python objects, files, XML, JSON, video frames, audio streams, etc. Passing
More informationInternet Engineering Task Force (IETF) Request for Comments: 8441 Updates: 6455 September 2018 Category: Standards Track ISSN:
Internet Engineering Task Force (IETF) P. McManus Request for Comments: 8441 Mozilla Updates: 6455 September 2018 Category: Standards Track ISSN: 2070-1721 Abstract Bootstrapping WebSockets with HTTP/2
More information