Staged event-driven architecture
Encyclopedia
The staged event-driven architecture (SEDA) refers to an approach to software design that decomposes a complex, event-driven application
into a set of stages connected by queues. It avoids the high overhead associated with thread
-based concurrency model
s, 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 (like 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.
Computer program
A computer program is a sequence of instructions written to perform a specified task with a computer. A computer requires programs to function, typically executing the program's instructions in a central processor. The program has an executable form that the computer can use directly to execute...
into a set of stages connected by queues. It avoids the high overhead associated with thread
Thread (computer science)
In computer science, a thread of execution is the smallest unit of processing that can be scheduled by an operating system. The implementation of threads and processes differs from one operating system to another, but in most cases, a thread is contained inside a process...
-based concurrency model
Concurrency (computer science)
In computer science, concurrency is a property of systems in which several computations are executing simultaneously, and potentially interacting with each other...
s, 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 (like performing adaptive load shedding). Decomposing services into a set of stages also enables modularity and code reuse
Code reuse
Code reuse, also called software reuse, is the use of existing software, or software knowledge, to build new software.-Overview:Ad hoc code reuse has been practiced from the earliest days of programming. Programmers have always reused sections of code, templates, functions, and procedures...
, as well as the development of debugging tools for complex event-driven applications.
External links
- Apache ServiceMix provides a Java SEDA wrapper, combining it with related message architectures (JMSJava Message ServiceThe Java Message Service API is a Java Message Oriented Middleware API for sending messages between two or more clients. JMS is a part of the Java Platform, Enterprise Edition, and is defined by a specification developed under the Java Community Process as JSR 914...
, JCAJava EE Connector ArchitectureJava EE Connector Architecture is a Java-based technology solution for connecting application servers and enterprise information systems as part of enterprise application integration solutions. While JDBC is specifically used to connect Java EE applications to databases, JCA is a more generic...
& straight-through flow). - Criticism about how SEDA premises (threads are expensive) are no longer valid
- JCyclone: Java open source implementation of SEDA
- Mule ESB is another open-source Java implementation
- SEDA: An Architecture for Highly Concurrent Server Applications describing the PhD thesis by Matt Welsh from Harvard University
- A Retrospective on SEDA by Matt Welsh, July 26, 2010