[MUD-Dev] TECH: SEDA: An Architecture for Highly Concurrent Server Applications

Bruce Mitchener bruce at puremagic.com
Mon Sep 10 23:12:42 New Zealand Standard Time 2001

SEDA: An Architecture for Highly Concurrent Server Applications:


>From the web page:

--- begin quote ---
My Ph.D. thesis work is focusing on the development of a robust,
high-performance platform for Internet services, called SEDA. The
goal is to build a system capable of supporting massive concurrency
(on the order of tens of thousands of simultaneous client
connections) and avoid the pitfalls which arise with traditional
thread and event-based approaches.

SEDA is an acronym for staged event-driven architecture, and
decomposes a complex, event-driven application into a set of stages
connected by queues. This design avoids the high overhead associated
with thread-based concurrency models, and decouples event and thread
scheduling from application logic. SEDA enables services to be
well-conditioned to load, preventing resources from being
overcommitted when demand exceeds service capacity. Decomposing
services into a set of stages also enables modularity and code
reuse, as well as the development of debugging tools for complex
event-driven applications.

Our current prototype of a SEDA-based services platform is called
Sandstorm. Sandstorm is implemented entirely in Java and uses the
NBIO package to provide nonblocking I/O support. We have implemented
a number of applications using Sandstorm, including Haboob, a
high-performance Web server that outperforms both Apache and Flash
(which are implemented in C) on a SPECWeb99-like benchmark. Other
applications include a Gnutella packet router and a Web-based email
service. See the SOSP'01 paper on SEDA for more details.
---- end quote ----

The prototype implementation is available from the website under an
open source license.

There are also a number of papers and talks in PDF form regarding
his work.

  - Bruce

MUD-Dev mailing list
MUD-Dev at kanga.nu

More information about the MUD-Dev mailing list