What is SEDA (Staged Event Driven Architecture)?

SEDA picture SEDA · Aug 26, 2010 · Viewed 21.5k times · Source

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services

"SEDA is an acronym for staged event-driven architecture, and decomposes a complex, event-driven application into a set of stages connected by queues."

I understand that it's an architecture and that there are many implementations of SEDA (see the Wikipedia article). What is a "stage"? Can someone give a thorough high-level summary of a staged event-driven architecture, and how it differs from traditional (unstaged?) event driven architectures?

Answer

Germán picture Germán · Nov 17, 2011

A Stage is analogous to an "Event". To simplify the idea, think of SEDA as a series of events sending messages between them.

One reason to use this kind of architecture, I think, is that you fragment the logic and can connect it and decouple each event, mainly for high performance services with low latency requirements fits well.

If you use Java TPE, you could monitor the health, throughput, errors, latency of each stage, and quickly find where the performance bottleneck is. And as a nice side effect, with smaller pieces of code, you can easily test them and increment your code coverage (that was my case).

For the record, this is the internal architecture of Cassandra (NoSQL), and Mule ESB (AFAIK).

I recommend reading the original paper (sorry, duplicate link):

Here is a framework I've created to model SEDA for Java EE: http://code.google.com/p/seide/