Download Jgroup/ARM 3.0.1 (2.2Mb)
Download Jgroup/ARM 3.0.1 with JINI extensions (4.4Mb)
Jgroup is an integration of group technology with distributed objects. Jgroup supports a programming paradigm called object groups that enables development of reliable and highly-available services based on replication. Clients interact with an object group implementing some distributed service through an external group method invocation (EGMI) facility. Jgroup hides the fact that services may be implemented as object groups rather than single objects so that clients using them through EGMI need not be reprogrammed. Servers making up the group object, on the other hand, coordinate their actions so as to achieve global consistency of the state distributed among them through an internal group method invocation (IGMI) facility. Strong guarantees provided by Jgroup for both EGMI and IGMI in the presence of failures and recoveries (including partitioning and merging of the communication network) greatly simplify the task of application developers.
Jgroup has been heavily influenced by our previous work on partitionable group communication formulated in terms of processes interacting through multicast messages. In particular, the properties guaranteed for IGMI closely resemble what is known as view synchrony semantics for group communication. One of the innovations of Jgroup is the integration of EGMI semantics with those of IGMI without requiring clients to become full fledged members of the server object group. This is a fundamental requirement for scalability since the number of potential clients of a service may be extremely large while a modest number of replicas is typically sufficient to achieve the desired levels of reliability and availability for the server object group. Yet another novelty of Jgroup rests in the fact that a single paradigm --- group method invocation --- governs both client-to-server and server-to-server interactions.
Jgroup is based on the Java distributed object model and is implemented entirely in Java.
Most object group systems, including Jgroup, do not include mechanisms for distributing replicas to hosts or for recovering from replica failures. Yet, these mechanisms are essential for satisfying application dependability requirements such as maintaining a fixed redundancy level. ARM is a replication management facility we have built on top of Jgroup to simplify implementation of application-specific replication policies. A replication policy describe the quality of service mechanisms used by an application group, such as replication style and recovery strategy. ARM provides a simple interface through which a management client can install and remove object groups within the distributed system. After its installation, an object group becomes an autonomous entity requiring no user interaction, unless manual removal of the group is desired. In other words, ARM handles both replica distribution, according to an extensible distribution scheme, as well as replica recovery, based on a group-specific policy. This allows the creation of object groups with varying dependability requirements and recovery needs. ARM includes a correlation mechanism to collect and interpret failure notifications from the underlying group communication system. This information is used to trigger group-specific recovery actions in order to reestablish system dependability properties after failures. The properties of our framework as described above lead to what we call autonomous replication management.