{"title":"Replicated invocations in wide-area systems","authors":"A. Bakker, M. Steen, A. Tanenbaum","doi":"10.1145/319195.319215","DOIUrl":null,"url":null,"abstract":"In many object-oriented distributed systems a client invokes a method of a distributed object through a call on a local proxy of that object. If a client is replicated, such a call may possibly be done by several of its replicas. Consequently, what is conceptually a single method invocation may result in several identical calls on the same object. Such an invocation is said to be replicated, the individual calls are referred to as the copies of the invocation. The problems associated with replicated invocations are well known [3][4]. However, existing solutions depend on global coordination, or, for example, assume group communication is fast and efficient, so that they can be applied only in local-area networks. In this paper we present the problems associated with replicated invocations in the context of wide-area systems and present a new solution to these problems. Our solution allows massively and widely replicated objects to efficiently call other massively and widely replicated objects using replicated invocations. Our solution is scalable in the sense that it uses local communication whenever possible, requires no complete knowledge of group memberships and puts only a small load on replicas of the called object. For the moment we limit ourselves to a single replicated object making replicated invocations on a single replicated object. We assume that both calling and called object use active replication [6]. Nodes in the system are assumed to be fail-stop. Only state-modifying operations (write methods) are carried out by all replicas. Read methods are sent to a single (nearby) replica. For this purpose each proxy is (implicitly) connected to the nearest replica of the object it represents. Write methods modify only the (volatile) state variables of the object; we assume they have no other side effects. Write methods are guaranteed to be carried out by each replica in the same global order. The remainder of the paper is organized as follows. Section 2 describes the problems introduces by replicated invocations in a wide-area context. Section 3 gives an overview of our solution as it would operate in the absence of node failures. Section 4 describes the fault tolerance of the solution. Section 5 discusses related work and we finish by presenting conclusions and future work.","PeriodicalId":335784,"journal":{"name":"Proceedings of the 8th ACM SIGOPS European workshop on Support for composing distributed applications","volume":"14 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1998-09-07","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"4","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 8th ACM SIGOPS European workshop on Support for composing distributed applications","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/319195.319215","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 4
Abstract
In many object-oriented distributed systems a client invokes a method of a distributed object through a call on a local proxy of that object. If a client is replicated, such a call may possibly be done by several of its replicas. Consequently, what is conceptually a single method invocation may result in several identical calls on the same object. Such an invocation is said to be replicated, the individual calls are referred to as the copies of the invocation. The problems associated with replicated invocations are well known [3][4]. However, existing solutions depend on global coordination, or, for example, assume group communication is fast and efficient, so that they can be applied only in local-area networks. In this paper we present the problems associated with replicated invocations in the context of wide-area systems and present a new solution to these problems. Our solution allows massively and widely replicated objects to efficiently call other massively and widely replicated objects using replicated invocations. Our solution is scalable in the sense that it uses local communication whenever possible, requires no complete knowledge of group memberships and puts only a small load on replicas of the called object. For the moment we limit ourselves to a single replicated object making replicated invocations on a single replicated object. We assume that both calling and called object use active replication [6]. Nodes in the system are assumed to be fail-stop. Only state-modifying operations (write methods) are carried out by all replicas. Read methods are sent to a single (nearby) replica. For this purpose each proxy is (implicitly) connected to the nearest replica of the object it represents. Write methods modify only the (volatile) state variables of the object; we assume they have no other side effects. Write methods are guaranteed to be carried out by each replica in the same global order. The remainder of the paper is organized as follows. Section 2 describes the problems introduces by replicated invocations in a wide-area context. Section 3 gives an overview of our solution as it would operate in the absence of node failures. Section 4 describes the fault tolerance of the solution. Section 5 discusses related work and we finish by presenting conclusions and future work.