Staged event-driven architecture
The staged event-driven architecture (SEDA) refers to an approach to software architecture that decomposes a complex, event-driven application into a set of stages connected by queues.{{cite web
| accessdate = 2023-03-02
| location =
| publisher = University of California at Berkeley
| title = An Architecture for Highly Concurrent, Well-Conditioned Internet Services
| url = http://www.eecs.harvard.edu/~mdw/papers/mdw-phdthesis.pdf
| archive-url = https://web.archive.org/web/20120704004128/http://www.eecs.harvard.edu/~mdw/papers/mdw-phdthesis.pdf
| archive-date = 2012-07-04
| quote = By partitioning an application into a set of stages with explicit queues between them, application designers can focus on the service logic and concurrency management for individual stages, “plugging” them together into a complete service later. Queues decouple the execution of each stage, allowing stages to be developed independently..}} It avoids the high overhead associated with thread-based concurrency models (i.e. locking, unlocking, and polling for locks), 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.
See also
References
{{Reflist}}
Bibliography
{{Refbegin}}
- {{citation
| first1 = Matt
| last1 = Welsh
| first2 = David
| last2 = Culler
| first3 = Eric
| last3 = Brewer
| date = December 2001
| title = "SEDA: an architecture for well-conditioned, scalable internet services" in "SOSP '01 Proceedings of the eighteenth ACM symposium on Operating systems principles"
| edition = 1st
| publisher = Association for Computing Machinery
| pages = 230–243
| isbn = 978-1-58113-389-9
| url = http://portal.acm.org/citation.cfm?id=502057
}}
{{Refend}}
External links
- [http://servicemix.apache.org/ Apache ServiceMix] provides a Java SEDA wrapper, combining it with related message architectures (JMS, JCA & straight-through flow).
- [http://jcyclone.sourceforge.net/ JCyclone]: Java open source implementation of SEDA
- [http://www.mulesoft.com/mule-esb-open-source-esb Mule ESB] is another open-source Java implementation
- [https://web.archive.org/web/20061130052025/http://www.eecs.harvard.edu/%7Emdw/proj/seda/ SEDA: An Architecture for Highly Concurrent Server Applications] describing the PhD thesis by Matt Welsh from Harvard University
- [http://matt-welsh.blogspot.com/2010/07/retrospective-on-seda.html A Retrospective on SEDA] by Matt Welsh, July 26, 2010
{{DEFAULTSORT:Staged Event-Driven Architecture}}