Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is SEDA (Staged Event Driven Architecture)?

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?

like image 931
SEDA Avatar asked Aug 25 '10 22:08

SEDA


People also ask

What is Seda architecture in mule?

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.

What is event-driven architecture means?

An event-driven architecture uses events to trigger and communicate between decoupled services and is common in modern applications built with microservices. An event is a change in state, or an update, like an item being placed in a shopping cart on an e-commerce website.

What is staged event?

1.1Planned, organized, or arranged in advance (often of an event or situation intended to seem otherwise) 'they have suggested that the entire episode was a staged event'

What is event-driven architecture example?

An Event-Driven Architecture for data and applications is a modern design approach centered around data that describes “events” (i.e., something that just happened). Examples of events include the taking of a measurement, the pressing of a button, or the swiping of a credit card.


1 Answers

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):

  • https://github.com/mdwelsh/mdwelsh.github.io/blob/master/papers/seda-sosp01.pdf

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

like image 121
Germán Avatar answered Sep 23 '22 10:09

Germán