java-design-patterns icon indicating copy to clipboard operation
java-design-patterns copied to clipboard

Staged Event Driven Architecture (SEDA)

Open npathai opened this issue 9 years ago • 3 comments
trafficstars

Description

The Staged Event-Driven Architecture (SEDA) is a design pattern used to manage the complexity of highly concurrent systems. It divides the processing of events into a series of stages connected by queues, allowing for more manageable concurrency and better isolation of different parts of the system. Each stage can be thought of as a pipeline segment that processes events and then hands them off to the next stage. This pattern improves scalability, fault tolerance, and performance.

Main Elements of the Pattern:

  1. Stages: Individual units of processing that handle specific tasks. Each stage is isolated from others and communicates through events.
  2. Event Queues: Buffers that connect stages, allowing asynchronous communication between them. These queues help decouple the stages, improving system resilience.
  3. Thread Pools: Each stage can have its own thread pool to process events concurrently, providing fine-grained control over resource allocation.
  4. Event Flow Control: Mechanisms to regulate the flow of events through the stages, preventing bottlenecks and ensuring smooth operation.

References

Acceptance Criteria

  1. Implement the basic structure of the SEDA pattern, including stages, event queues, and thread pools.
  2. Demonstrate a simple use case that showcases how events flow through multiple stages.
  3. Ensure the implementation adheres to the project contribution guidelines, including proper documentation and unit tests.

npathai avatar Nov 30 '15 07:11 npathai

SEDA is totally different from other event driven models. i recommend reading the SEDA paper.

david415 avatar Apr 25 '18 13:04 david415

Updated task description

iluwatar avatar May 30 '24 04:05 iluwatar