Projects‎ > ‎


Raindrop is an Open Source implementation of the Staged Event Driven Architecture (SEDA) which was proposed by Matt Welsh in his Ph.D thesis: An Architecture for Highly Concurrent, Well-Conditioned Internet Services.

It provides a framework within which Internet scale systems can handle highly variable loads with consistent or well defined behaviour. The key concept focuses on breaking an application into a set of Stages, each of which is responsible for a certain aspects of the applications behaviour. Stages communicate with each other by placing Events onto named Queues.

The Raindrop runtime is responsible for removing the queued items and passing them into the correct Stage Handler. By allowing the runtime to control the execution of tasks it has much greater control over the internal threading model. As load on the system increases, latency through the system increases. This is in direct contrast to normal threaded applications where the thread per connection model means that as the load increases so does the number of threads in the system. This eventually leads to high levels of context switching and performance drops markedly. A SEDA application ensures that the number of threads within the application is bounded and can therefore remove the context switching problem.