What is JCyclone  
JCyclone is a Staged Event-Driven Architecture (SEDA) based implementation made in Java.

- Stages as Robust Building Block -

A JCyclone application consists of a network of stages connected by event queues. A stage is a self-contained application component. It's the basic building block of JCyclone applications. A stage is composed mainly of an incoming event queue, a thread pool and a programmer supplied event handler.

Event handlers provide core application logic. They communicate by enqueuing events onto another stages by obtaining a handle to that stage's event queue. Queues are natural control boundaries; they provide modularity, isolation and independent load management.

- Dynamic Resource Control -

The stage's scheduling and resource monitoring is managed by JCyclone resource controllers. A resource controller observes runtime characteristics of a stage and adjusts allocation and scheduling parameters to meet performance targets. This shield the programmer from the complexity of performance tuning and keep each stage withing its operating regime.

JCyclone implements two kind of controllers: batching controller and thread pool controller. The former adjusts the number of threads executing withing the stage and the later adjusts the number of events processed by each iteration of the event handler. Processing many events at once increases throughput but can decrease response time, so controllers tries to trade of these effects.

"An important aspect of dynamic control in SEDA is that it allows the application to adapt to changing conditions despite the particular algorithms used by the underlying operating system. In some sense, SEDA's controllers are naive about the resource management policies of the OS." - Matt Welsh

- Adaptive Overload Management -

JCyclone uses feedback-driven admission control that actively observes and adapts the system' behavior under load. Each stage in a JCyclone application has an associated admission controller that guards access to the event queue of that stage. This controller operate primarily by adapting the rate at which each stage in the system accepts events, signaling overload to upstream stages through queue rejections.

Overload control make it relatively straightforward to ensure that a JCyclone application will behave well under excessive demand.

- Summary -

JCyclone is an application framework that offers very high performance by supporting massive concurrency and providing robust behavior under heavy load. It hides the concurrency concerns from the programmer and provide a clear logical division of work within the application that encourage modular development practices. In short, JCyclone achieves robustness, modularity, concurrency and scalability.

SourceForge.net Logo