THE CORBA OBJECT GROUP SERVICE: A SERVICE APPROACH TO OBJECT GROUPS IN CORBA

Distributed computing is one of the major trends in the computer industry. As systems become more distributed, they also become more complex and have to deal with new kinds of problems, such as partial crashes and link failures. To answer the growing demand in distributed technologies, several middleware environments have emerged during the last few years. These environments however lack support for \one-to-many" communication primitives; such primitives greatly simplify the development of several types of applications that have requirements for high availability, fault tolerance, parallel processing, or collaborative work. One-to-many interactions can be provided by group communication. It manages groups of objects and provides primitives for sending messages to all members of a group, with various reliability and ordering guarantees. A group constitutes a logical addressing facility: messages can be issued to a group without having to know the number, identity, or location of individual members. The notion of group has proven to be very useful for providing high availability through replication: a set of replicas constitutes a group, but are viewed by clients as a single entity in the system. This thesis aims at studying and proposing solutions to the problem of object group support in object-based middleware environments. It surveys and evaluates di erent approaches to this problem. Based on this evaluation, we propose a system model and an open architecture to add support for object groups to the CORBA middleware environment. In doing so, we provide the application developer with powerful group primitives in the context of a standard object-based environment. This thesis contributes to ongoing standardization e orts that aim to support fault tolerance in CORBA, using entity redundancy. The group architecture proposed in this thesis | the Object Group Service (OGS) | is based on the concept of component integration. It consists of several distinct components that provide various facilities for reliable distributed computing and that are reusable in isolation. Group support is ultimately provided by combining these components. OGS de nes an object-oriented framework of CORBA components for reliable distributed systems. The OGS components include a group membership service, which keeps track of the composition of object groups, a group multicast service, which provides delivery of messages to all group members, a consensus service, which allows several CORBA objects to resolve distributed agreement problems, and a monitoring service, which provides distributed failure detection mechanisms. OGS includes support for dynamic group membership and for group multicast with various reliability and ordering guarantees. It de nes interfaces for active and primary-backup replication. In addition, OGS proposes several execution styles and various levels of transparency. A prototype implementation of OGS has been realized in the context of this thesis. This implementation is available for two commercial ORBs (Orbix and VisiBroker). It relies solely on the CORBA speci cation, and is thus portable to any compliant ORB. Although the main theme of this thesis deals with system architecture, we have developed some original algorithms to implement group support in OGS. We analyze these algorithms and implementation choices in this dissertation, and we evaluate them in terms of e ciency. We also illustrate the use of OGS through example applications.

[1]  Peter Wegner,et al.  Concepts and paradigms of object-oriented programming , 1990, OOPS.

[2]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[3]  Rachid Guerraoui,et al.  Concurrency and distribution in object-oriented programming , 1998, CSUR.

[4]  Andrew P. Black,et al.  Encapsulating Plurality , 1993, ECOOP.

[5]  Xavier Défago,et al.  Semi-passive replication , 1998, Proceedings Seventeenth IEEE Symposium on Reliable Distributed Systems (Cat. No.98CB36281).

[6]  Liwu Li,et al.  The Java Language , 1998 .

[7]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[8]  Robbert van Renesse,et al.  Horus: a flexible group communication system , 1996, CACM.

[9]  Benoît Garbinato,et al.  Modeling Protocols as Objects for Structuring Reliable Distributed Systems , 1997 .

[10]  Silvano Maffeis A fault-tolerant CORBA name server , 1996, Proceedings 15th Symposium on Reliable Distributed Systems.

[11]  Louise E. Moser,et al.  Processor Membership in Asynchronous Distributed Systems , 1994, IEEE Trans. Parallel Distributed Syst..

[12]  Eric C. Cooper Replicated distributed programs , 1985, SOSP 1985.

[13]  Kenneth P. Birman,et al.  The Maestro Approach to Building Reliable Interoperable Distributed Applications with Multiple Execution Styles , 1998, Theory Pract. Object Syst..

[14]  John Cowell The Java Language , 1999 .

[15]  Douglas C. Schmidt,et al.  ASX: An Object-Oriented Framework for Developing Distributed Applications , 1994, C++ Conference.

[16]  Paul D. Ezhilchelvan,et al.  A Characterisation of Faults in Systems , 1986, Symposium on Reliability in Distributed Software and Database Systems.

[17]  Benoît Garbinato Protocol objects and patterns for structuring reliable distributed systems , 1998 .

[18]  Willy Zwaenepoel,et al.  Distributed process groups in the V Kernel , 1985, TOCS.

[19]  Matti Aarno Hiltunen,et al.  Configurable fault-tolerant distributed services , 1996 .

[20]  Nancy A. Lynch,et al.  Impossibility of distributed consensus with one faulty process , 1983, PODS '83.

[21]  David Powell Distributed Fault-Tolerance , 1991 .

[22]  Rachid Guerraoui,et al.  Replicating objects using the CORBA Event Service? , 1997, Proceedings of the Sixth IEEE Computer Society Workshop on Future Trends of Distributed Computing Systems.

[23]  Kenneth P. Birman,et al.  The ISIS project: real experience with a fault tolerant programming system , 1990, EW 4.

[24]  Robbert van Renesse,et al.  Reliable Distributed Computing with the Isis Toolkit , 1994 .

[25]  Bjarne Stroustrup,et al.  The Annotated C++ Reference Manual , 1990 .

[26]  Dimitri Konstantas Object Oriented Interoperability , 1993, ECOOP.

[27]  Rachid Guerraoui,et al.  Transaction Model vs. Virtual Synchrony Model: Bridging the Gap , 1994, Dagstuhl Seminar on Distributed Systems.

[28]  C SchmidtDouglas,et al.  Measuring and Optimizing CORBA Latency and Scalability Over High-Speed Networks , 1998 .

[29]  P. Felber,et al.  Group Programming: an Object-Oriented Approach , 1995 .

[30]  Rachid Guerraoui,et al.  Distributed Programming in GARF , 1993, ECOOP Workshop.

[31]  Sam Toueg,et al.  The weakest failure detector for solving consensus , 1996, JACM.

[32]  Marc Shapiro,et al.  Structure and Encapsulation in Distributed Systems: The Proxy Principle , 1986, ICDCS.

[33]  Andrew S. Tanenbaum,et al.  Group communication in the Amoeba distributed operating system , 1991, [1991] Proceedings. 11th International Conference on Distributed Computing Systems.

[34]  Rachid Guerraoui,et al.  Right Abstractions on Adequate Frameworks for Building Adaptable Distributed Applications , 1997 .

[35]  Mark Garland Hayden,et al.  The Ensemble System , 1998 .

[36]  Max Mühlhäuser Special Issues in Object-Oriented Programming , 1997 .

[37]  Rachid Guerraoui,et al.  Evaluating CORBA portability: the case of an object group service , 1998, Proceedings Second International Enterprise Distributed Object Computing (Cat. No.98EX244).

[38]  Yvon Gourhant An object-oriented approach for replication management , 1992, [1992 Proceedings] Second Workshop on the Management of Replicated Data.

[39]  Kenneth P. Birman,et al.  Building Secure and Reliable Network Applications , 1996 .

[40]  Yair Amir,et al.  Transis: a communication subsystem for high availability , 1992, [1992] Digest of Papers. FTCS-22: The Twenty-Second International Symposium on Fault-Tolerant Computing.

[41]  Louise E. Moser,et al.  Totem: a fault-tolerant multicast group communication system , 1996, CACM.

[42]  Rachid Guerraoui,et al.  Filtering duplicated invocations using symmetric proxies , 1995, Proceedings of International Workshop on Object Orientation in Operating Systems.

[43]  David Powell,et al.  Distributed fault tolerance: lessons from Delta-4 , 1994, IEEE Micro.

[44]  Louise E. Moser,et al.  The Totem single-ring ordering and membership protocol , 1995, TOCS.

[45]  Santosh K. Shrivastava,et al.  Structuring Fault-Tolerant Object Systems for Modularity in a Distributed Environment , 1994, IEEE Trans. Parallel Distributed Syst..

[46]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[47]  Ralph Johnson,et al.  A framework for network protocol software , 1995, OOPSLA.

[48]  Richard D. Schlichting,et al.  Fail-stop processors: an approach to designing fault-tolerant computing systems , 1983, TOCS.

[49]  Roy H. Campbell,et al.  Proxies, application interfaces, and distributed systems , 1992, [1992] Proceedings of the Second International Workshop on Object Orientation in Operating Systems.

[50]  Louise E. Moser,et al.  The Totem multiple-ring ordering and topology maintenance protocol , 1998, TOCS.

[51]  Doug Lea,et al.  Concurrent Programming In Java , 1996 .

[52]  Rachid Guerraoui,et al.  Programming Fault-Tolerant Applications Using Two Orthogonal Object Levels , 1993 .

[53]  Roger Sessions COM and DCOM - Microsoft's vision for distributed objects , 1997 .

[54]  Kenneth P. Birman,et al.  The ISIS Project: Real Experience with a Fault Tolerant Programming System , 1991, ACM SIGOPS Oper. Syst. Rev..

[55]  Bradford Nichols,et al.  Pthreads programming - a POSIX standard for better multiprocessing , 1996 .

[56]  Eric C. Cooper Replicated procedure call , 1984, PODC '84.

[57]  Rachid Guerraoui,et al.  Towards Reliable CORBA: Integration vs. Service Approach , 1997 .

[58]  Rachid Guerraoui,et al.  The design of a CORBA group communication service , 1996, Proceedings 15th Symposium on Reliable Distributed Systems.

[59]  Hermann Kopetz,et al.  Fault tolerance, principles and practice , 1990 .

[60]  Rachid Guerraoui,et al.  System support for object groups , 1998, OOPSLA '98.

[61]  Robert J. Stroud,et al.  Implementing fault tolerant applications using reflective object-oriented programming , 1995, Twenty-Fifth International Symposium on Fault-Tolerant Computing. Digest of Papers.

[62]  Kenneth P. Birman,et al.  Reliable communication in the presence of failures , 1987, TOCS.

[63]  Maurice Herlihy,et al.  Linearizability: a correctness condition for concurrent objects , 1990, TOPL.

[64]  Santosh K. Shrivastava,et al.  Object Replication in Arjuna , 1994 .

[65]  Rachid Guerraoui,et al.  Protocol Classes for Designing Reliable Distributed Environments , 1996, ECOOP.

[66]  Rachid Guerraoui,et al.  Consensus service: a modular approach for building agreement protocols in distributed systems , 1996, Proceedings of Annual Symposium on Fault Tolerant Computing.

[67]  Aniruddha S. Gokhale,et al.  Measuring and Optimizing CORBA Latency and Scalability Over High-Speed Networks , 1998, IEEE Trans. Computers.

[68]  Priya Narasimhan,et al.  Replica consistency of CORBA objects in partitionable distributed systems , 1997, Distributed Syst. Eng..

[69]  André Schiper,et al.  Consensus: The Big Misunderstanding , 1997 .

[70]  Rachid Guerraoui,et al.  The Implementation of a CORBA Object Group Service , 1998, Theory Pract. Object Syst..

[71]  Eric Jul,et al.  Separation of Distribution and Objects , 1993, ECOOP Workshop.

[72]  Rachid Guerraoui,et al.  Reliability with CORBA Event Channels , 1997, COOTS.

[73]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[74]  J. von Neumann,et al.  Probabilistic Logic and the Synthesis of Reliable Organisms from Unreliable Components , 1956 .

[75]  Andrew Birrell,et al.  Implementing remote procedure calls , 1984, TOCS.

[76]  Sam Toueg,et al.  Unreliable failure detectors for reliable distributed systems , 1996, JACM.

[77]  Michael K. Reiter,et al.  The Rampart Toolkit for Building High-Integrity Services , 1994, Dagstuhl Seminar on Distributed Systems.

[78]  Christoph Peter Malloth,et al.  Conception and implementation of a toolkit for building fault-tolerant distributed applications in large scale networks , 1996 .

[79]  Priya Narasimhan,et al.  Consistent Object Replication in the external System , 1998, Theory Pract. Object Syst..

[80]  Roy Friedman,et al.  A framework for protocol composition in Horus , 1995, PODC '95.

[81]  Eric C. Cooper Replicated distributed programs , 1985, SOSP '85.

[82]  Kenneth P. Birman,et al.  The process group approach to reliable distributed computing , 1992, CACM.

[83]  Louise E. Moser,et al.  Broadcast Protocols for Distributed Systems , 1990, IEEE Trans. Parallel Distributed Syst..

[84]  André Schiper Early consensus in an asynchronous system with a weak failure detector , 1997, Distributed Computing.