Distributed System Assingment
Distributed System Assingment
Abstract
We propose an extension oI Remote Procedure Call (RPC) semantics to a multicast
environment and discuss a Java implementation thereoI. The implementation
consists oI a reliable, FIFO multicast provider, Iive interchangeable Total Order
Broad cast algorithms, and an RPC client and server that make use oI these
technologies. I demonstrate that the implementation works correctly. Throughout
the paper, we discuss Iuture work that could be done on this project.
INTRODUCTION
Remote Procedure Calls (RPC) |1| is a convenient paradigm to use when
programming a distributed system. A well-designed RPC implementation like
Java`s RMI is transparent to the programmer that is, remote procedure calls are
made with identical syntax to local procedure calls |4|. This brings the ease oI
programming oI shared memory multiprocessing systems to inexpensive multi
computer clusters built with commercial oII-the-shelI components.
Instead oI explicitly passing messages between processes, the programmer simply
sets the RPC mechanism up and perIorms method calls on objects. Threads can
thus be moved to other computers without aIIecting method invocation semantics.
This allows the programmer to Iocus on the higher level task oI writing a correct
program rather than worry about the explicit memory management required in
distributed memory multi processors. Point-to-point RPC between a client and a
server system is mostly a solved problem |1|, but RPC in a multicast environment
is still an active Iield oI research. RPC has been criticized Ior being inherently
point-to-point |3|, but we believe that the ability oI a client system to execute an
RPC call on many servers in parallel would be useIul in many situations. For
example, a master processor could send soItware updates or remote administration
commands to a network oI mobile devices with little eIIort on the part oI the
programmer. Thinking bigger, a network oI mobile devices could be treated as a
'grid, bringing massively parallel computing power to any client within wireless
range. Such a network could be scaled up or down without requiring any changes
to client programs oI the grid. This paper demonstrates an implementation oI
multicast RPC in Java. Because it is written entirely in soItware without any
modiIication to the language or compiler, our implementation does not have the
transparency oI Java RMI. However, it would be straightIorward to integrate this
code into the Java runtime system as an extension to RMI, providing more
transparency.
Literature Review
Multicast communication protocols
Multicast communication protocols have been an area oI active research Ior some
time.
Multicast typically extends message passing with some notion oI distributed,
addressable process or object groups. Many protocols and implementations exist.
The Iocus oI most implementations is on providing reliability through replication.
Perhaps the most diIIicult aspect oI providing multicast is choosing an appropriate
semantics, that is, how the ordering and delivery oI messages is coordinated by
receiving objects. It is generally accepted that no single model is appropriate Ior all
applications. Multicast provides a level oI indirection over message passing, but
most implementations require that participating objects are explicitly aware oI the
communication model. This typically means that application components are
programmed with implicit knowledge oI the multicast semantics and can be
diIIicult to reuse in a diIIerent communications environment