iluwatar / java-design-patterns

Design patterns implemented in Java
https://java-design-patterns.com
Other
88.31k stars 26.2k forks source link

Staged Event Driven Architecture (SEDA) #307

Open npathai opened 8 years ago

npathai commented 8 years ago

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.
david415 commented 6 years ago

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

iluwatar commented 1 month ago

Updated task description