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

287 followers
About
Posts

Post has attachment
Hochgrat-Panorama im Winter
Photo
Add a comment...

Post has attachment
Add a comment...

Post has shared content
Add a comment...

Post has attachment
Add a comment...

Post has attachment
Very brief and high-level introduction into different approaches towards concurrent programming (as part of my thesis).
Concurrency Approaches
Concurrency Approaches
benjamin-erb.de
Add a comment...

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.
Add a comment...

Post has attachment
Add a comment...
Wait while more posts are being loaded