Profile cover photo
Profile photo
Benjamin Erb
295 followers -
Research assistant / PhD student @ University of Ulm
Research assistant / PhD student @ University of Ulm

295 followers
About
Benjamin Erb's posts

Post has attachment
Hochgrat-Panorama im Winter
Photo

Post has attachment

Post has shared content

Post has attachment

Post has attachment
Very brief and high-level introduction into different approaches towards concurrent programming (as part of my thesis).

Post has attachment
15 Papers you should read when interested in node.js's background

I currently write my diploma thesis on concurrent programming for scalable web architectures and of course, event-driven approaches such as node.js are an important part of it. Thus, I am digging through literature and the web for interesting reads on event-driven systems. The following list represent some of the major findings that I want to share with other people interested in node.js, it's background and the foundations of event-driven programming for the web. Some items are academic papers, others are web sources; some are rather abstract or high-level, others provide implementation-specific information.

General Introduction to node.js and Concurrency

Stefan Tilkov, Steve Vinoski – Node.js: Using JavaScript to Build High-Performance Network Programs (2010)
Link: http://steve.vinoski.net/pdf/IC-Node.js.pdf
=> High-level introduction to node.js. Start here if you are not yet familiar with node.js.

Herb Sutter – A Fundamental Turn Toward Concurrency in Software (2005)
Link: http://drdobbs.com/architecture-and-design/184405990 => Popular article on the beginning of the multicore era

Dan Kegel – The C10K problem (1999)
Link: http://www.kegel.com/c10k.html
=> Describes the emerging challenge for web servers to handle huge amounts of requests/connections concurrently


Event-driven Programming

Gregor Hohpe – Programming Without a Call Stack (2006)
Link: http://eaipatterns.com/docs/EDA.pdf
=> Although rather focussing on "programming in large", this article gives a detailed overview of the essence of event-driven architectures

Felix von Leitner – Scalable Network Programming (2003)
Link: http://bulk.fefe.de/scalable-networking.pdf
=> A rather low-level presentation on scaling programs based on event-based programmming

Vivek S. Pai et al. – Flash: an efficient and portable web server (1999)
Link: http://www.usenix.org/event/usenix99/full_papers/pai/pai.pdf
=> Contains an overview and comparison of different server architectures, including several event-driven architectures

Nickolai Zeldovich et al. – Multiprocessor Support for Event-Driven Programs (2003)
Link: http://people.csail.mit.edu/nickolai/papers/usenix2003-slides.pdf
=> Illustrates an approach on how to exploit multicore processors for event-driven architectures


Events vs. Threads

Hugh C. Lauer and Roger M. Needham – On the duality of operating system structures (1979)
Link: http://www.sics.se/~adam/pt/duality78.pdf
=> The eldest paper in the list, but still important describing the general duality of threaded and evented programs

John Ousterhout – Why Threads Are A Bad Idea (for most purposes) (1996)
Link: http://www.stanford.edu/class/cs240/readings/threads-bad-usenix96.pdf
=> Threads are mostly bad, events are often better.

Rob von Behren – Why events are a bad idea (for high-concurrency servers) (2003)
Link: http://www.usenix.org/events/hotos03/tech/full_papers/vonbehren/vonbehren.pdf
=> Threads are not bad, but their implementations are.

Edward A. Lee – The Problem with Threads (2006)
Link: http://www.eecs.berkeley.edu/Pubs/TechRpts/2006/EECS-2006-1.pdf
=> Threads are hard to understand and predict, and they are nondeterministic. Coordination languages thus are better

Atul Adya et al. – Cooperative Task Management without Manual Stack Management
Link: http://research.microsoft.com/pubs/74219/USENIX2002.pdf
=> A nice analysis on conflated concepts when comparing event-driven and multithreaded programming


Architectural/Design Patterns

Douglas C. Schmidt – Reactor (1995)
Link: http://www.cs.wustl.edu/~schmidt/PDF/reactor-siemens.pdf
=> Event handling pattern for concurrent request handling based on event loop

Irfan Pyarali et al. – Proactor (1997)
Link: http://www.cs.wustl.edu/~schmidt/PDF/proactor.pdf
=> Asynchronous variant of the reactor pattern

Matt Welsh et al. – SEDA: An Architecture for Well-Conditioned, Scalable Internet Services (2001)
Link: http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf
=> Introduces an architecture based on stages connected through queues for scalable services.


Of course, I'm looking forward to other suggestions as well, so I'd appreciate any comments on that.

Post has attachment
Wait while more posts are being loaded