Hydra is a module that can load-balance between symmetric Dataworks Enterprise sources.

It is used to spread the load of client requests amoungst multiple sources that can all potentially provide the same data. 

It mounts an output source that is a logical combination of 2 or more input sources.  (Hydra is named after the multi-headed beast of greek mythology since its multiple input sources can be likened to the many heads of the mythological beast.)

Hydra is commonly used where the underlying data source suffers has some form of bottle neck associated with obtaining the data, and where this can be aliviated by having multiple handlers to access the data. 

For example, when the number of requests made by the Global Topic Handler becomes very high the Global Topic Server to which it connects may drop updates (with a notification) to prevent buffer over flows.  One solution to this is to run multiple GTHandlers against one or more Global Topic servers each mounting seperate sources.  Hydra may then be used to combine these multiple but logically equivalent sources into one, spreading the requests for GlobalTopic data amoungst each base source.

Hydra Diagram


Hydra has been a standard Dataworks Enterprise component since Dataworks Enterprise release


When the client of the Hydra's out-going source makes a request, the hydra applies the request to one of its available in-coming heads (input sources).  It does this by choosing the 'least-loaded' head calculated on the basis of the number of currently active requests on each head. 

Hydra also supports a single backup head (or input source) to which it will direct requests when, and only when, all other heads are unavailable.  In this situation it will return requests back onto the first normal head that becomes available again.

Hydra can also be configured to place a limit on the maximum number of requests that it will apply to a given head.  If this maximum is reached for all available heads then further requests will be given a RTStale status and will then be queued until such time as a head becomes available that can process the request.


All Configuration is performed using the Hydra.USR file.  For specific details please consult the installed configuration file.


Hydra presents just one outpur source which has the behaviour of the underlying input sources. 
NB All the input sources should all be equally capable of servicing any client request.  

Known Problems

Hydra does not rebalance requests once they are made.  Requests are always applied to the 'least-loaded' head at the time that the request is made and remain on that had until the request is cancelled.


At present Hydra sends a client request to the least-loaded head calculated on the basis of the number of currently active requests on each head.  A forthcoming version will be able to use an alternative, source-specific algorithim by interogating each source for its relative loading factor using a well-known instrument.  

*DISCLAIMER: The changes are only possible proposals and represent neither "work in progress" nor work that is scheduled for a future release. Details of product roadmaps and current development shoudl be directed through the normal reporting channels.