OpenRDS is a Java clustering framework conceived for making requisition-based distributed systems easy to develop and manage.

It has been designed for extreme simplicity on client code, allowing an application to run a “hello world” with just 2 lines of code.

Embedding OpenRDS into an existing application is as simple as wrapping the code that needs to be clustered in a “Requisition” class (somewhat similar to a “Runnable” class) and calling “mainNode.processRequisition(new MyRequisition())”.

See the “features” and “documentation” for more information.


OpenRDS is licensed under the GNU LESSER GENERAL PUBLIC LICENSE (LGPL). This means that you can use with any commercial or non-commercial application.


OpenRDS 1.1-beta released! (2006-10-04)

Changes from version 1.0-beta:

User guide documentation has been finally released with this version.

Improved load-balance algorithm for requisitions without any factor.

Bug fixes:

[1558043] Process node takes a long time to reconect after crash.
[1562880] Node does not connect when IPv6 is enabled.
[1570257] Dynamic class download: missing class results in error.

New features:

[1558061] Allow listeners to be added before registering node.
[1552054] Implement detection of clock and memory on linux.
[1552050] Implement better generic process node.
[1552052] Add support for automatic updates. 

API Changes:

Added class "net.sf.openrds.tools.Version" which holds version information on runtime.

Added class "net.sf.openrds.tools.ClusterNode" which is part of feature #[1552050].

Added class "net.sf.openrds.Requisition" (turned public).

Added method "NodeFactory.createProcessNode()", which is part of feature #[1558061].

Added method "NodeFactory.startMainNode()" without any parameter.

Added method "RegistryHandler.getInetAddress()", to retrieve the interface OpenRDS is using.

OpenRDS 1.0-beta released! (2006-08-24)

Changes from version 0.4:

This is the first beta-tests release of OpenRDS.
Fixed handling of "ProcessingException" when the process node was started on the same JVM of the requisitor thread.
Added protection against "out-of-memory" errors that could kill main dispatcher thread.
Fully refactored the algorithm that determines the best node to process a requisition.
(Major changes of the refactor): 
- Load balance has been finally fixed for requisitions that defines both clock and memory factors; 
- Overall speed has been improved; 
- Code for load balance has been reduced in about 30% (smaller class file); 
- Algorithm now consider nodes' processing factor even if the requisition does not define any; 
- Removed a busy wait when all nodes have exceeded their limits. 
Many more junits have been added to ensure proper load-balance behaviour.

News archive

You can see all news in the sourceforge news archive page.