System Support for Programming Object-Oriented Dependable Applications in Partitionable Systems (Ph.D. Thesis)
Alberto Montresor · 2000
Distributed computing is one of the major trends in the computer industry. The growing interest in distributed applications, driven primarily by the popularization of the Internet, results in new challenges for software developers. As systems become more distributed, they also become more complex and more difficult to design. In order to deal with this complexity, new middleware systems for supporting the development of distributed applications are required. The last few years have seen the emergence of several programming environments that greatly simplify the development of distributed applications. Among them, notable examples are CORBA and Java Remote Method Invocation (RMI). In order to abstract the complexity of the system and to promote modularity and reusability, these middleware platforms are based on object-oriented concepts like abstraction, encapsulation, inheritanceand polymorphism, and enable client/server interactions among distributed objects. Existing object-oriented middleware environments focus their attention on improving portability, interoperability and reusability of distributed software components and applications. Unfortunately, none of them provides an adequate support for the development of dependable applications in the presence of partial failures. The main problem is the lack of one-to-many interaction primitives allowing clients to reliably invoke the same method on several objects at once. In an effort to fill this void, the object group paradigm has been proposed. In this paradigm, functions of a distributed service are replicated among a collection of logically related server objects gathered together in an object group. A group constitutes a logical addressing facility: clients transparently interact with object groups by remotely invoking methods on them, as if they were single, non-replicated remote objects. In this thesis, we presents the design and the implementation of Jgroup, an extension of the Java distributed object model based on the group communication paradigm. Differently from other group-oriented extensions of existing distributed object models, Jgroup is expressly aimed at supporting the development of reliable and high-available distributed applications in partitionable environments. Jgroup enables the creation of groups of remote objects that cooperate towards some common goal using a partitionable group communication service. Remote object groups simulate the behavior of standard remote objects by implementing a set of remote interfaces and by enabling clients to remotely invoke the methods defined in these interfaces through the standard Java RMI mechanism. For the first time, communication among servers forming a group is based on group method invocations as well, offering a completely object-oriented framework for programmers. Finally, Jgroup is completed by a state merging service, which simplifies the development of state merging protocols needed to re-establish a consistent state after th