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.
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 has been a standard Dataworks Enterprise component since Dataworks Enterprise release 1.0.0.137.
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.
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.