This paper presents the design and implementation of the GARF system, an objectoriented platform that helps programming fault-tolerant distributed applications in a modular way. The originality of GARF is to separate a distributed object into several objects, the complexity of distribution and fault-tolerance being encapsulated in reusable classes. The use of those classes by the GARF system is based on a run-time mechanism of invocation redirection, where most other systems use inheritance, a compile-time mechanism. Our runtime, which supports the GARF object model, is written in Smalltalk. It is presented in detail, as well as the reusable classes that support fault-tolerance. Fault-tolerant objects are implemented using groups of replicated objects. Our Dependable Object Toolkit provides group management facilities at the object level. Object groups are built on top of the Isis toolkit, which provides group management facilities at the Unix process level. Our mapping of object groups on process groups and our interfacing of Smalltalk and Isis are detailed. Performance analysis and a rst evaluation of our prototype are also presented.
This paper draws several observations from our experiences in building support for object groups. These observations actually go beyond our experiences and may apply to many other developments of object based distributed systems.Our first experience aimed at building support for Smalltalk object replication using the Isis process group toolkit.It was quite easy to achieve group transparency but we were confronted with a strong mismatch between the rigidity of the process group model and the flexible nature of object interactions.Consequently, we decided to build our own object oriented protocol framework, specifically dedicated to support object groups (instead of using a process group toolkit).We built our framework in such a way that basic distributed protocols, such as failure detection and multicasts, are considered as first class entities, directly accessible to the programmers. To achieve flexible and dynamic protocol composition, we had to go beyond inheritance and objectify distributed algorithms.Our second experience consisted in building a CORBA service aimed at managing group of objects written on different languages and running on different platforms. This experience revealed a mismatch between the asynchrony of group protocols and the synchrony of standard CORBA interaction mechanisms, which limited the portability of our CORBA object group service. We restricted the impact of this mismatch by encapsulating asynchrony issues inside a specific messaging sub-service.We dissect the cost of object group transparency in our various implementations, and we point out the recurrent sources of overheads, namely message indirection, marshaling/unmarshaling and strong consistency.
Invocation is the communication paradigm of objects. It is asymmetric by definition: the invoker initiates the invocation whereas the invokee reacts to it.A proxy is a local representative of the invokee on the invoker's machine. Like the invocation, the proxy notion is asymmetric. However, when replicated objects are considered, there is a need for symmetric proxies: a regular proxy plus an invoker proxy on the inuokee's machine.This paper shows that symmetric proxies are needed to implement pre-filtering of duplicated invocations. I t defines both the duplicated invocation problem and the pre-filtering approach as an efficient solution. The paper presents an object model based on symmetr i c proxies. Finally, the implementation of the model in the GARF system is presented as well as similar works in the litterature.
GARF is an object-oriented tool that supports the design and programming of reliable distributed applications. GARF lies at an intermediate level between applications and process group communication systems. It enables a developer to rst program an application in a centralized environment, then to distribute it and increase its reliability by replicating its critical components over several machines. Using a built-in library of distributed abstractions, the developer can choose a replication strategy for each component of the application.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
hi@scite.ai
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.