The Staged Event-Driven Architecture for Highly-Concurrent Server Applications

We propose a new design for highly-concurrent server applications such as Internet services. This design, the staged event-driven architecture (SEDA), is intended to support massive concurrency demands for a wide range of applications. In SEDA, applications are constructed as a set of event-driven stages separated by queues. This design allows services to be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity. Decomposing services into a set of stages enables modularity and code reuse, as well as the development of debugging tools for complex event-driven applications. We present the SEDA design, as well as Sandstorm, an Internet services platform based on this architecture. We evaluate the use of Sandstorm through two applications: A simple HTTP server benchmark and a packet router for the Gnutella peer-to-peer file sharing network.

[1]  Nikita Borisov,et al.  Querying Large Collections of Music for Similarity , 2000 .

[2]  Ben Y. Zhao,et al.  The Ninja architecture for robust Internet-scale systems and services , 2001, Comput. Networks.

[3]  L. Wald,et al.  The 1999 Southern California Seismic Network Bulletin , 2000 .

[4]  Douglas C. Schmidt,et al.  High performance web servers on windows NT design and performance , 1997 .

[5]  Peter B. Danzig,et al.  A Hierarchical Internet Object Cache , 1996, USENIX ATC.

[6]  赵阳,et al.  在Apache Web Server上实现用户认证 , 2002 .

[7]  Larry L. Peterson,et al.  Making paths explicit in the Scout operating system , 1996, OSDI '96.

[8]  Eddie Kohler,et al.  The Click modular router , 1999, SOSP.

[9]  Emden R. Gansner,et al.  An open graph visualization system and its applications to software engineering , 2000 .

[10]  Mor Harchol-Balter The Case for SRPT Scheduling in Web Servers , 1998 .

[11]  Willy Zwaenepoel,et al.  Flash: An efficient and portable Web server , 1999, USENIX Annual Technical Conference, General Track.

[12]  Leonard Kleinrock,et al.  Queueing Systems: Volume I-Theory , 1975 .

[13]  Jeffrey C. Mogul,et al.  Scalable Kernel Performance for Internet Servers Under Realistic Loads , 1998, USENIX Annual Technical Conference.

[14]  Dawson R. Engler,et al.  Server operating systems , 1996, EW 7.

[15]  Emden R. Gansner,et al.  An open graph visualization system and its applications to software engineering , 2000, Softw. Pract. Exp..

[16]  Timos K. Sellis,et al.  Multiple-query optimization , 1988, TODS.

[17]  S. Wittevrongel,et al.  Queueing Systems , 2019, Introduction to Stochastic Processes and Simulation.

[18]  Michael A. Bender,et al.  Flow and stretch metrics for scheduling continuous job streams , 1998, SODA '98.

[19]  QUTdN QeO,et al.  Random early detection gateways for congestion avoidance , 1993, TNET.

[20]  Larry L. Peterson,et al.  Fbufs: a high-bandwidth cross-domain transfer facility , 1994, SOSP '93.

[21]  Chuck Lever,et al.  Scalable Network I/O in Linux , 2000, USENIX Annual Technical Conference, FREENIX Track.

[22]  B. O. Gallmeister,et al.  POSIX.4 - programming for the real world , 1995 .

[23]  Ben Y. Zhao,et al.  OceanStore: an architecture for global-scale persistent storage , 2000, SIGP.

[24]  Peter Druschel,et al.  A Scalable and Explicit Event Delivery Mechanism for UNIX , 1999, USENIX Annual Technical Conference, General Track.

[25]  David E. Culler,et al.  Scalable, distributed data structures for internet service construction , 2000, OSDI.

[26]  Mor Harchol-Balter,et al.  Connection Scheduling in Web Servers , 1999, USENIX Symposium on Internet Technologies and Systems.

[27]  Larry L. Peterson,et al.  Defending against denial of service attacks in Scout , 1999, OSDI '99.

[28]  Dawson R. Engler,et al.  ASHs: Application-Specific Handlers for High-Performance Messaging , 1996, SIGCOMM.

[29]  Willy Zwaenepoel,et al.  IO-Lite: a unified I/O buffering and caching system , 1999, TOCS.

[30]  David E. Culler,et al.  A Design Framework for Highly Concurrent Systems , 2000 .

[31]  Douglas C. Schmidt,et al.  APPLYING THE PROACTOR PATTERN TO HIGH-PERFORMANCE WEB SERVERS , 1998 .

[32]  Peter Druschel,et al.  Resource containers: a new facility for resource management in server systems , 1999, OSDI '99.