SEDA: An Architecture for Highly Concurrent Server Applications

(Back to


The Staged Event-Driven Architecture (SEDA) is a framework for building scalable, high-performance Internet services that are capable of sustaining enormous variations in load.

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. By performing admission control on each event queue, the service can be well-conditioned to load, preventing resources from being overcommitted when demand exceeds service capacity. SEDA employs dynamic control to automatically tune runtime parameters (such as the scheduling parameters of each stage), as well as to manage load, for example, by performing adaptive load shedding. 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.

License: BSD License, Programming Language: Java


• Adaptive Overload Control for Busy Internet Servers
• An Architecture for Highly Concurrent, Well-Conditioned Internet Services
• Overload Management as a Fundamental Service Design Primitive
• SEDA: An Architecture for Well-Conditioned, Scalable Internet Services
• Virtualization Considered Harmful: OS Design Directions for Well-Conditioned Services
• The Staged Event-Driven Architecture for Highly Concurrent Server Applications
• A Design Framework for Highly Concurrent Systems