Wednesday, March 18, 2009

SEDA Architecture

SEDA stands for Staged Event Driven Architecture. Some of the design goals of SEDA are massive concurrency, self tuning of resources, simplified construction of services and also providing introspection. The fundamental unit in SEDA is a 'Stage'. Stage is an independent software entity that is supported by an event handler, thread pool and request queue.

A Complext software is divided into a number of independent components - 'Stage' with request queues connecting these stages. Each Stage is free to configure and tune its own threadpool. Each stage has an event handler that takes the requests from the request queue and carries out the appropriate action and finally delivers the request to the next request queue in the software structure.

This model is seen to perform better than 'Thread per request' model as well as 'Bounded thread pool' model. This also provides a very good opportunity to implement self tuning resource management mechanism.

Reference:
http://www.eecs.harvard.edu/~mdw/papers/seda-sosp01.pdf

No comments: