Monday, September 29, 2008

SEDA: An Architecture for Well-Conditioned, Scalable Internet Services, Welsh, Culler, & Brewer

SEDA, staged event-driven architecture, is a software architecture designed to support high concurrency Internet services and simplify the constructing of such; it is also meant to have dynamic resource management and support for applications to adapt to changing load conditions. It manages all these through the use of pipelined event stages and dynamic resource controllers. Each stage is represented as an event handler and contains an event queue and thread pool; the number of threads active in a stage is controlled dynamically by the thread pool controller, and the batch controller automates the number of events handled within a stage.

The paper discusses two applications designed after SEDA, the high-performance HTTP-server Haboob and the packet-router Gnutella. Haboob is shown to perform comparably to Apache and Flash in terms of throughput and fairness and with a goal of higher-average/lower-variance response time. It was interesting to see the differing thoughts of the Capriccio and SEDA authors on thread v.s. event-based systems; the Capriccio authors brought up the complaint that event-based systems like SEDA are much less intuitive to program than thread-based ones, but the SEDA authors claim that their system is in the middle-ground of thread and event-based and hence is ideal.

No comments: