A survey of asynchronous remote procedure calls

A. L. Ananda, B. H. Tay, E. K. Koh
1992 ACM SIGOPS Operating Systems Review  
Remote Procedure Call (RPC) is a popular paradigm for interprocess communication in distributed systems. It is simple, flexible and powerful. However, most of the RPC systems today are synchronous in nature, and hence fail to exploit fully the parallelism inherent in distributed applications. In view of this, various asynchronous RPC systems have been designed and :implemented to achieve higher parallelism while retaining the familiarity and simplicity of synchronous RPC. Asynchronous RPC calls
more » ... do not block the caller (client) and the replies can be received as and when they are needed, thus allowing the client execution to proceed locally in parallel with the caUee (server) invocation. Asynchronous RPC calls can be classified into two types depending on whether the calls return a value. Most asynchronous RPC systems only support calls that do not return a value, and few support both classes. In this paper, an analysis and comparison of various asynchronous RPC systems are presented. Keywords : distributed systems, interprocess communication (IPC), remote procedure call (RPC), synchronous RPC, asynchronous RPC, parallelism, low-latency, high-throughput, transport-independent, intra-machine call. 92 Remote Procedure Call (RPC) is a simple, flexible and powerful interprocess communication (IPC) paradigm for developing distributed applications [Wilbur and Bacarisse 87]. It is a widely used communication mechanism in distributed systems and applications such as Amoeba distributed operating system [Mullender et al. 90], Sprite network operating system [Ousterhout et al. 88], and Andrew File System [Satyanarayanan 90]. Many RPC systems have been built since Nelson's PhD thesis [Nelson 81]. Notable works include Cedar RPC [Birrell and Nelson 84], Sun RPC [Sun 88], NCA/RPC [Dineen et al. 87], and HRPC [Bershad et al. 87]. A survey of some of these works can be found in ['ray and Ananda 90]. However, most of these RPC systems are synchronous in nature, and hence fail to exploit fully the parallelism inherent in distributed applications. This severely limits the kind of interactions the distributed application can have, resulting in lower performance. To achieve concurrency, the user has to resort to other means such as light-weight processes (threads) or the low level inter-machine message-passing mechanism (send~receive). If the host operating system does not support thread as in the case of Unix, costly heavy-weight processes have to be used instead. However, both solutions are not attractive to the users. The first solution is unwieldy, hard to debug, and does not scale well in a large distributed environment. The second solution is much more difficult to use than the RPC mechanism. In view of this, various asynchronous RPC systems have been designed and implemented to achieve higher parallelism while retaining the familiarity and simplicity of synchronous RPC. Asynchronous RPC calls do not block the caller (client) and the replies can be received as and when they are needed, thus allowing the client execution to proceed locally in parallel with the server invocation. This paper is a comparative study of a few distinctive asynchronous RPC mechanisms. The asynchronous RPC mechanisms included in the discussion are Athena Non-blocking RPC, NCA Maybe RPCo Sun Batching RPC, Remote Pipes, Stream (Promises), Future and ASTRA. The comparison is based mainly on the following characteristics of the asynchronous RPC mechanisms" • Support for the receipt of reply message • Transportprotocols • Order of delivery of call and reply messages • Call semantics • Optimization for low-latency or high-throughput
doi:10.1145/142111.142121 fatcat:36w2bgg7zrccplk5rkwhojahiu