7-RPC - Leonardo Mostarda
Download
Report
Transcript 7-RPC - Leonardo Mostarda
Distributed Systems – Remote
Procedure Calls
Prof. Leonardo Mostarda
University of Camerino
Prof. Leonardo Mostarda-- Camerino,
1
Last Lecture
Client anatomy
Server Anatomy
Iterative and concurrent servers
Stateful and stateless servers
Server cluster organisation
Distributed servers and IPv6
Outline
OSI model
Middleware definition
Types of Communication
Remote Procedure Calls
Learning outcomes
Understand the OSI model
Understand and discuss different
types of communication
Understand and discuss the RPC
Understand and discuss the main
challenges when we need to
implement the RPC
Layered Protocols (1)
Due to the absence of shared memory all communication in
distributed systems is based on sending and receiving (low level)
messages.
Agreements are needed at a variety of levels on how information is
to be expressed and processed.
OSI provides a reference model to describe protocols
Layered Protocols (2)
A typical message as it appears on the network.
Middleware Protocols
Middleware is an application
that logically lives (mostly) in
the application layer, but which
contains many general-purpose
protocols.
Middleware general services
Authentication, authorisation
distributed commit protocols,
fault tollerance
A middleware supports highlevel communication services
(transparency)
Types of Communication
Various alternatives in communication can be offered by a
middleware
Persistent – the middleware stores the message until is delivered to the
receiver (e.g., email)
Transient – a message is stored by the communication system only as
long as the sending and receiving application are executing (e.g., transport
level communication)
Besides being persistent or transient, communication can also be
asynchronous or synchronous.
Conventional Procedure Call
Send and receive do not conceal communication at all
In 1984 Birrell and Nelson allowed programs to call
procedures located on other machines
Suppose that A calls a procedure on machine B
The calling process on A is suspended
Execution of the called procedure takes place on B
No message passing at all is visible to the programmer.
This is known as Remote Procedure Call (RPC).
Some problems need to be faced
The calling and called procedures run on different machines,
They execute in different address spaces,
Parameters and results must be passed (different hardware/software)
Conventional Procedure Call
To understand RPC we need to
fully
understand
how
a
conventional
(i.e.,
single
machine) procedure call works.
E.g. count = read(fd,buf,nbytes)
fd is an int (the file), buf is an
array and nbytes an int (how
many bytes to read)
Parameters can be call-byvalue or call-by-reference
nbytes is by value while buf by
reference
Client and Server Stubs
In RPC the calling procedure should not be aware that the
called procedure is executing on a different machine.
When I read from the local file system the read routine is
extracted from the library. It is a short procedure, which calls an
equivalent read system call.
In RPC a different version of read (client stub) is put into the
library. This sends a message instead of getting data from the local
OS.
At the server side the message is passed to a server stub that
transforms requests into local procedure calls
The server stub will replay the result back to the client stub
Remote Procedure Calls (1)
A remote procedure call occurs in the following
steps:
1. The client procedure calls the client stub in the normal way.
2. The client stub builds a message and calls the local
operating system.
3. The client’s OS sends the message to the remote OS.
4. The remote OS gives the message to the server stub.
5. The server stub unpacks the parameters and calls the
server.
Continued …
Remote Procedure Calls (2)
A remote procedure call occurs in the following
steps (continued):
6. The server does the work and returns the result to the stub.
7. The server stub packs it in a message and calls its local OS.
8. The server’s OS sends the message to the client’s OS.
9. The client’s OS gives the message to the client stub.
10.The stub unpacks the result and returns to the client.
Passing Value Parameters (1)
The function of the client stub is to take the parameters, pack them
into a message, and send them to the server stub (i.e.,
marshaling).
Several problems need to be faced
different data representation
EBCDIC character code and ASCII code
one's complement versus two's complement
endianness
Passing Value Parameters (2)
endianness:
(a) The messages on the Pentium, i.e., 5 and Jill
(b) The messages after receipt on the SPARC.
(c) The messages after being inverted (the string did not need
to be inverted).
Parameter Specification and Stub Generation
How are pointers, or in general, references passed?
A pointer is meaningful only within the address space of
the process in which it is being used.
What is the solution?
If we have an array then the client stub must copy the
values of the array and pass them to the server stub
The server stub processes the array and sends back the
modified array to the client stub.
The reference can be related to a complicated data
structure
Parameter Specification and Stub Generation
Hiding a remote procedure call requires that
the caller and the callee agree on the format of the messages
they follow the same steps when it comes to exchange complex
data structures
In the example below
a character is in the rightmost byte of a word
a float as a whole word
an array is preceded by a word
giving the length,
Question
WHAT IS JSON?
SOAP (xml)?
Prof. Leonardo Mostarda-- Camerino,
18
Interfaces
Once the RPC protocol has been fully defined, the client
and server stubs need to be implemented.
Stubs for the same protocol but different procedures
normally differ only in their interface to the applications.
An interface is a collection of procedures. Interfaces are
often specified by means of an Interface Definition
Language (IDL).
An interface specified in such an IDL is then subsequently
compiled into a client stub and a server stub
Corba interface
module Calc{
interface Calculator{
//User-defined exception
exception MyException{};
//synchronous method
float calculate(in float val1, in float val2, in char operator)
raises (MyException);
//asynchronous method
oneway void set_value(in long val);
};
};
Asynchronous RPC (1)
The interaction between client and server in a traditional
RPC is synchronous.
In some case there is not result to be returned
transfer the balance, start a server
Asynchronous RPC (2)
RPC systems may provide facilities for what are called
asynchronous RPCs
In asynchronous RPC a client immediately continues after issuing
the RPC request.
The server immediately sends a reply back to the client the
moment the RPC request is received, after which the server calls
the requested procedure.
Asynchronous RPC (3)
Combining two asynchronous RPCs is some- times also
referred to as a deferred synchronous RPC.
For instance the client may not be ready to process the
answer
Asynchronous RPC
It should be noted that variants of asynchronous RPCs
exist.
In One-way RPC the client does not wait for the
acknowledgment from the server.
The problem with this approach is that when reliability is
not guaranteed, the client cannot know for sure whether
or not its request will be processed.
summary
OSI model
Middleware definition
Types of Communication
Remote Procedure Calls