Département d'informatique, Institut d'informatique fondamentale IIF (Laboratoire de systèmes répartis LSR)

Étude de l'invocation entre objets dupliqués dans un système réparti tolérant aux fautes

Mazouni, Karim Riad ; Schiper, André (Dir.)

Thèse Ecole polytechnique fédérale de Lausanne EPFL : 1996 ; no 1578.

Ajouter à la liste personnelle
    Summary
    This dissertation studies the problems to solve in order to use the invocation paradigm to express replicated object communication in fault-tolerant distributed systems. The ultimate goal is to define abstractions which achieve replication encapsulation, ie which give the illusion that replication is an internal property of objects. Thus, object communication could be always expressed using the invocation paradigm, whether objects are replicated or not. Background The invocation paradigm defines a "request-reply" communication model which matches exactly the client-server model. The latter is generally used to express service interactions in distributed systems. For this reason, the object-oriented approach is well suited to the design of distributed system services. A service can be implemented as a set of objects, located on remote computers (or nodes). Service fault-tolerance is achieved by replicating the objects which implement the service. Most of the previous works about replicated objects consider only server object replication. This study is more general: both client and server can be replicated. Furthermore, replication policies of objects can be different. Four replication policies had been studied: active replication, passive replication, semi-active replication, and coordinator-cohort replication. Replication encapsulation Replication encapsulation means both plurality encapsulation and replication policy encapsulation. Plurality encapsulation consists in hiding from other objects, that a replicated object is actually a set of replicas located on several nodes. Replication policy encapsulation consists in hiding from other objects, the communication protocol to use in order to interact with object replicas without breaking their consistency. The symmetric invocation model Most of the related works are based on an asymmetric invocation model. In this model, the invocation reply follows exactly the reverse of the request communication path. The asymmetric invocation model can not be used to achieve replication encapsulation of client objects. This dissertation proposes a symmetric invocation model which solves this problem. The symmetric invocation model considers the request transmission and the reply transmission as two instances of the same problem: the transmission of a message to a replicated object. Both the analysis of the replication encapsulation problem and the symmetric invocation model were used to define a specification of replicated object invocation. This specification is a set of generic formal properties based on parameters which values depend on replication policies. The properties include object failure semantics which is expressed using the group paradigm and the view-synchronous communication paradigm. Every replicated object is built using an object group which membership changes whenever object replicas fail or restart. The N2M invocation service The main result of this study is the design1 of N2M, an invocation service which supports replicated objects. Objects using N2M are called application objects whereas objects implementing N2M are called communication objects. Communication objects take care of every aspect related to application object replication. Thus, replicated application objects communicate using regular invocations, just as if they were not replicated. There are actually two kinds of communication objects: encapsulators and mailers. Each replicated application object is built using an encapsulator group. Each application object replica is associated with a private encapsulator which acts as an invocation filter for this replica. To communicate with a replicated application object O, every object must interact with O's local mailer. On every node, a replicated application object is represented by a mailer which is responsible for transmitting requests and replies to the application object replicas. The originality of this model is its symmetry: there are both mailers of the server on the client nodes, and mailers of the client on the server nodes. This symmetry is directly inherited from the symmetric invocation model. Each replication policy is implemented using an encapsulator class and a mailer class. These classes replicate objects according to a specific replication policy, while respecting the invocation paradigm. In other words, communication object classes achieve replication encapsulation. The GARF-v2 programming environment The N2M service has been implemented in the context of the GARF project2. The GARF project aimed to provide a programming environment which faciltates the design of fault-tolerant distributed applications. The environment prototype was implemented in Smalltalk. It is based on the group communication layer provided by ISIS toolkit. --------------------------------------- 1this logo refers to the n to m expression which usually names the interaction between n client replicas and m server replicas. 2GARF is the french acronym for automatic generation of fault-tolerant applications.
    Résumé
    Cette thèse étudie les problèmes à résoudre afin de pouvoir utiliser la notion d'invocation, pour exprimer la communication entre des objets dupliqués, dans le contexte d'un système réparti tolérant aux fautes. L'objectif de cette étude est de définir des abstractions permettant d'encapsuler la duplication, c.-à-d. de voir la duplication comme une caractéristique interne d'un objet. Ainsi, la communication avec un objet (dupliqué ou non) se ferait toujours avec la même paradigme: l'invocation. Contexte Une invocation est une interaction de type "requête-réponse". Ce mode d'interactions correspond exactement au modèle client-serveur qui exprime la communication entre les services d'un système réparti. Pour cette raison, l'approche orientée-objets s'avère particulièrement adaptée à la conception d'un système reparti. Dès lors, un service peut être réalisé à l'aide d'un ou plusieurs objets, répartis sur des ordinateurs (ou noeuds) distincts. La mise en oeuvre de la tolérance aux fautes d'un service consiste alors à dupliquer les objets réalisant ce service. La plupart des travaux portant sur les objets dupliqués ne considèrent que la duplication d'objets-serveurs. L'étude menée au cours de cette thèse se veut plus générale: les objets dupliqués peuvent être à la fois clients et serveurs. En outre, les stratégies de duplication des objets peuvent être différentes. Quatre stratégies de duplication sont étudiées: la duplication active, la duplication passive, la duplication semi-active, et la duplication coordinateur-cohorte. Encapsulation de la duplication Encapsuler la duplication consiste à encapsuler la pluralité et à encapsuler les stratégies de duplication. Encapsuler la pluralité consiste à cacher, aux autres objets du système, qu'un objet dupliqué est constitué par un ensemble de copies réparties sur plusieurs noeuds. Encapsuler les stratégies de duplication consiste à cacher, aux autres objets du système, le protocole qu'il faut utiliser pour communiquer avec les copies d'un objet dupliqué, afin que ces copies restent cohérentes. Modélisation symétrique de l'invocation La plupart des travaux décrits dans la littérature s'appuient sur une modélisation asymétrique de l'invocation entre objets dupliqués. Cette modélisation considère que la réponse est toujours transmise en suivant exactement le chemin inverse de la requête. Le principal inconvénient de cette modélisation est qu'elle ne permet pas de réaliser l'encapsulation de la duplication d'un objet client. Cette étude propose donc une alternative, appelée modélisation symétrique, qui ne présente pas cet inconvénient. La modélisation symétrique considère la transmission de la requête et la transmission de la réponse comme deux instances du même problème: la transmission d'un message à un objet dupliqué. L'analyse des problèmes liés à l'encapsulation de la duplication et la modélisation symétrique ont permis de construire une spécification de l'invocation entre objets dupliqués. Cette spécification est constituée par un ensemble de propriétes paramétrées par les stratégies de duplication des objets participant à l'invocation. Ces propriétes intègrent notamment la sémantique choisie pour exprimer les informations sur les défaillances. Cette sémantique correspond à l'abstraction de groupe augmentée de la communication vue-synchrone. Chaque objet dupliqué est modélisé à l'aide d'un groupe d'objets dont la composition varie en fonction des défaillances/redémarrages des copies. Le service d'invocation N2M Les résultats de cette étude ont conduit à la conception d'un service d'invocation pour objets dupliqués, appelé N2M (par référence à l'expression anglaise n to m caractérisant la communication entre n copies d'un client et m copies d'un serveur). Les objets utilisant le service N2M sont appelés objets application, par opposition aux objets communication qui réalisent le service N2M. Les objets communication prennent en charge tous les aspects relatifs à la duplication des objets application. Par conséquent, les objets application dupliqués communiquent à l'aide d'invocations, comme s'ils n'étaient pas dupliqués. Pour construire cette abstraction, le service N2M définit deux catégories d'objets communication: les encapsulateurs et les messagers. Un objet application dupliqué est construit à partir d'un groupe d'encapsulateurs. à chaque copie de l'objet application dupliqué est associé un encapsulateur chargé de filtrer les invocations entrant ou sortant de la copie. Pour communiquer avec un objet application dupliqué O, un objet doit s'adresser au messager local de O. Sur chaque noeud, un objet application dupliqué est représenté par un messager chargé de transmettre les requêtes et les réponses vers les copies de l'objet application dupliqué, via leurs encapsulateurs respectifs. L'originalité de cemodèle réside dans sa symétrie: au cours d'une invocation, il y a des messagers du serveur sur les noeuds des copies du client, et des messagers du client sur les noeuds des copies du serveur. Cette symétrie découle directement de la modélisation symétrique de l'invocation. Une stratégie de duplication est mise en oeuvre à l'aide d'une classe d'encapsulateurs et d'une classe de messagers. Ces classes permettent de dupliquer des objets selon la stratégie considérée tout en respectant le schéma de communication défini par la notion d'invocation. En d'autres termes, les classes d'objets communication (i.e. encapsulateurs et messagers) réalisent l'encapsulation de la duplication. L'environnement GARF-v2 Le service N2M a été mis en oeuvre dans le contexte du projet GARF (Génération Automatique d'applications Résistantes aux Fautes). L'objectif du projet GARF était la réalisation d'un environnement de programmation visant à faciliter le développement d'applications réparties tolérantes aux fautes. Le prototype de l'environnement a été réalisé en Smalltalk et il se base sur le logiciel ISIS pour les communications de groupe.