Distributed Objects and Remote Invocation - Ar
Download
Report
Transcript Distributed Objects and Remote Invocation - Ar
Distributed Objects and Remote Invocation – 5.1 Introduction
Foci:
– Communication among distributed objects via RMI
Recipients of remote invocations are remote objects, which implement
remote interfaces for communication
– Reliability
Either one or both the invoker and invoked can fail, and status of
communication is supported by the interface (e.g., notification on failures,
reply generation, parameter processing – marshalling/unmarshalling)
– Local invocations target local objects, and remote invocations target
remote objects
– Distributed even-based systems - ‘subscription’ to events as they
occur at remote sites of interest; and receipt of ‘notification’ therefrom
Subscription/notification paradigm supports heterogeneity and asynchrony
(e.g., the Jini distributed event-driven specification)
1
Distributed Objects and Remote Invocation – 5.1 Introduction
Programming models for distributed programs/applications
– RPC – client programs call procedures in server programs, running in
separate and remote computers (e.g., Unix RPC)
– RMI – extensions of object-oriented programming models to allow a local
method (of a local object) to make a remote invocation of objects in a remote
process (e.g., Java RMI)
– EBP (event-based programming) model – allows objects anywhere to receive
notification of events that occur at other objects of which interests have been
registered (e.g., Jini EBP)
Chapter 5 – focus on RMI and EBP paradigms
– Issues
Distributed object communication
Design and implementation of RMI and RPC
EBP – design and implementation
2
Distributed Objects and Remote Invocation – 5.1 Introduction
Middleware
– A suite of API software that uses underlying processes and
communication (message passing) protocols to provide its abstract
protocol – simple RMI request-reply protocol
– The middleware provides location transparency, protocol abstraction,
OS, and hardware independence, and multi-language support
3
Distributed Objects and Remote Invocation – 5.1 Introduction
Middleware
– Location transparency: RPC – client calls appear to be local and
remote procedure could be on any remote server; RMI remote objects’
location is transparent; and in EBP models sources of object
event/notification is transparent
– Protocol transparency: the middleware request-reply protocol can be
built on top of lower-level TCP or UDP
– Hardware transparency: Issues with different data representations,
conversions, and instruction set are transparent
– OS: all three paradigms could run on top of any OS platform
4
Distributed Objects and Remote Invocation – 5.1 Introduction
Remote Object Interfaces
– Interfaces hide the details of modules providing the service; and access to
module variables is only indirectly via ‘getter’ and ‘setter’ methods / mechanisms
associated with the interfaces
(e.g., call by value/reference for local calls through pointers vs. input, output, and inout
paradigms in rmi/rpc through message-data and objects)
– An interface is a set of language facilities (syntax/semantics) or notation for
mapping input/output parameters in a remote invocation/call onto native normal
handling of parameters
– Such API’s allow uniformity of both local and remote invocation (same syntax and
denotational semantics)
– IDL: Provide a ‘generic’ template of interfaces for objects in different languages to
perform remote invocation among each other
E.g., CORBA IDL (Fig 5.2), Sun XDR for RPC, Jave RMI, OSF DCE for RPC in C
5
Distributed Objects and Remote Invocation – 5.2 Communication
By means of RMI:
– The object model
– Distributed objects (object-based distributed systems)
– The distributed object model (extensions of the basic object model for
distributed object implementation)
– The design issues (of RMI) (local once-or-nothing invocation semantics vs.
remote invocation semantics – similarities or differences)
– The implementation issues (mapping the middleware to lower-layer facilities)
– Distributed garbage collection issues (an application – algorithmic)
6
Distributed Objects and Remote Invocation – 5.2 Communication
The object model
– Objects (in classes) encapsulate methods and data variables, with some
variables being directly accessible; and communication via passing arguments
and receiving results from (locally) invoked objects
– Object references: objects or variables holding instances of objects are
accessed via references. Accessing target/receiver objects requires –
reference.methodname(args); and references can be passed as args, too.
– Interfaces: the signature of a set of object methods – arg type, return values,
and exceptions. Objects providing interfaces typically offer ‘internal’
implementations of methods of the interfaces. E.g., a class may implement
several ‘interfaces,’ and an interface may be implemented by any class
– Actions: effect of method invocation – may affect receiver/target or cause
chain reaction to complete, including results and exception propagation
– Exceptions: For clarity and cleanness of code, object methods lists exception
conditions that can be thrown and handlers/blocks-of-code written to
handle/catch the exceptions as they occur
– Garbage collection: reclaiming freed object spaces – Java (automatic), C++
(user supplied)
7
Distributed Objects and Remote Invocation – 5.2 Communication
Distributed objects
– State of an object: current values of its variables
– State of an object (in OO context): depends of how the objects are partitioned
or distributed in the program space and the programming model
– CS: objects reside with client and server processes or computers
– RMI: method invocations and associated messages are exchanged by c/s
depending on where the objects reside
– When objects are replicated for performance and fault-tolerance, or migrated
for performance and availability, objects are thus distributed
– Distributing objects require ‘encapsulation’ for effective, secure, protected
object state (All data are accessed directly by their respective methods, and
requires authorization.)
– Concurrent access to distributed objects is protected (due to encapsulation,
and use of, e.g., condition variables for synchronization)
– Heterogeneity (of data types) is supported via interface-methods
8
Distributed Objects and Remote Invocation – 5.2 Communication
The distributed object model
extensions to the basic object model – supporting both local and remote method
invocation of objects (with transparency) in processes. Some objects can effect only
local invocation, and others remote invocation, and others can have both
RMI: invocations between objects in different processes (either on same or different
computers) is remote. Invocations within the same process are local
each process contains objects, some of which can receive remote invocations, others
only local invocations
those that can receive remote invocations are called remote objects
objects need to know the remote object reference of an object in another process in
order to invoke its methods. How do they get it?
the remote interface specifies which methods can be invoked remotely
9
Distributed Objects and Remote Invocation – 5.2 Communication
Figure 5.3
local
remote
invocation
A
B
C
local E
invocation
invocation
local
invocation
D
remote
invocation
F
– Objects receiving remote invocations (service objects) are remote
objects, e.g., B and F
– Object references are required for invocation, e.g., C must have E’s
reference or B must have A’s reference
– B and F must have remote interfaces (of their accessible methods)
10
Distributed Objects and Remote Invocation – 5.2 Communication
Remote object references
– An unique identifier of a remote object, used throughout a distributed system
– The remote object reference (including the ‘interface’ list of methods) can be
passed as arguments or results in rmi
Remote interfaces
– Remote objects have a class that implement remote methods (as public).
– In Java, a remote interface class extends the Remote interface
– Local objects can access methods in an interface plus methods implemented
by remote objects (Remote interfaces can’t be constructed – no constructors)
11
Distributed Objects and Remote Invocation – 5.2 Communication
Actions in distributed object systems
– Local activations plus remote invocations that could be chained across different
processes/computers. Remote invocation activate the RMI interface using the remote
object reference (identifier)
– Example of chaining: In Figure 5.3 Object A received remote object reference of object F
from object B
Distributed garbage collection
– Achieved by cooperation between local (language-specific) collectors and a designated
module that keeps track of object reference-counting (See details and examples in 5.2.6,
using an algorithm based on pairwise request-reply comm with at-most-once invocation
semantics between the reference modules in the processes using proxies.)
Exceptions
– Possible problems: remote process is busy, dead, suspended to reply, or lost reply; which
will require timeout-retry in an exception handler implemented by the invoker/client
– Usually, there are standard exceptions which can be raised plus others users implement
12
Distributed Objects and Remote Invocation – 5.2 Communication
Design Issues of RMI
– Local invocations have at-most-once or exactly-once semantics
– Distributed RMI, there alternative semantics are:
Retry request message – retransmit until reply is received or on
server failure – at-least-once semantics
Duplicate message filtering – discard duplicates at server (using
seq #s or ReqID)
Buffer result messages at server for retransmission – avoids redo
of requests (even for idempotent ops) – at-most-once semantics
13
Distributed Objects and Remote Invocation – 5.2 Communication
Invocation semantics: failure model
Maybe, At-least-once and At-most-once can suffer from crash failures
when the server containing the remote object fails.
Maybe - if no reply, the client does not know if method was executed or
not
– omission failures if the invocation or result message is lost
At-least-once - the client gets a result (and the method was executed at
least once) or an exception (no result)
– arbitrary failures. If the invocation message is retransmitted, the remote object may
execute the method more than once, possibly causing wrong values to be stored or
returned.
– if idempotent operations are used, arbitrary failures will not occur
At-most-once - the client gets a result (and the method was executed
exactly once) or an exception (instead of a result, in which case, the
method was executed once or not at all)
14
RMI Implementation: The architecture of remote method
invocation (with transparency)
Figure 5.6
server
client
object A proxy for B
skeleton
& dispatcher
for B’s class
Request
remote
object B
Reply
Communication
Remote
reference module
module
Communication
module
Proxy - makes RMI transparent to client.
implements
carriesClass
out Requestremote interface. Marshals requests
andprotocol
unmarshals
reply
results. Forwards request.
translates
local
and remote
objectinterface.
Skeleton - between
implements
methods
in remote
references
creates
remote
object
Unmarshals
requests
and
marshals
results. Invokes
Dispatcher
- and
gets
request
from
communication
module and
references.
Uses
remote
methodmethod
in remote
object. object
invokes
in skeleton
(usingtable
methodID in message).
15
Remote reference
module
RMI software - between
application level objects
and communication and
remote reference modules
•
Distributed Objects and Remote Invocation – 5.3 RPC
• RPC
• Similar to RMI but calls are made to remote ‘procedures’ and can have
chain-reaction effect
• Server process defines the callable procedures in its service interface, have
at-most-once or at-least-once invocation semantics
• Implemented using request-reply protocol (without ROR)
• There is one stub procedure for each procedure in the interface (like RMI
proxy – marshalls procedure id and arguments into message, and
unmarshalls results on return)
• Server has dispatcher (like RMI) with one server stub procedure and its
service procedure for each procedure in the interface
• Server stub procedure (like RMI skeleton method) – unmarshalls
arguments in calls, calls corresponding procedure, and marshalls results in a
reply message
16
Distributed Objects and Remote Invocation – 5.3 RPC
17
Distributed Objects and Remote Invocation – 5.4 Events &
Notification
18
Distributed Objects and Remote Invocation – 5.4 Events &
Notification
19
Java Remote interfaces Shape and ShapeList
• Note the interfaces and arguments
• GraphicalObject is a class that implements Serializable.
Figure 5.11
import java.rmi.*;
import java.util.Vector;
public interface Shape extends Remote {
int getVersion() throws RemoteException;
GraphicalObject getAllState() throws RemoteException;
}
public interface ShapeList extends Remote {
Shape newShape(GraphicalObject g) throws RemoteException;
Vector allShapes() throws RemoteException;
int getVersion() throws RemoteException;
}
20
Java class ShapeListServer with main method
Probably skip this one
import java.rmi.*;
Figure 5.13
public class ShapeListServer{
public static void main(String args[]){
System.setSecurityManager(new RMISecurityManager());
try{
ShapeList aShapeList = new ShapeListServant();
Naming.rebind("Shape List", aShapeList );
System.out.println("ShapeList server ready");
}catch(Exception e) {
System.out.println("ShapeList server main " + e.getMessage());}
}
}
21
1
2
Java class ShapeListServant implements interface
ShapeList
Probably skip this one
import java.rmi.*;
Figure 5.14
import java.rmi.server.UnicastRemoteObject;
import java.util.Vector;
public class ShapeListServant extends UnicastRemoteObject implements ShapeList {
private Vector theList;
// contains the list of Shapes
1
private int version;
public ShapeListServant()throws RemoteException{...}
public Shape newShape(GraphicalObject g) throws RemoteException {
2
version++;
Shape s = new ShapeServant( g, version);
3
theList.addElement(s);
return s;
}
public Vector allShapes()throws RemoteException{...}
public int getVersion() throws RemoteException { ... }
22
}
Java client of ShapeList
Probably skip this one
Figure 5.15
import java.rmi.*;
import java.rmi.server.*;
import java.util.Vector;
public class ShapeListClient{
public static void main(String args[]){
System.setSecurityManager(new RMISecurityManager());
ShapeList aShapeList = null;
try{
aShapeList = (ShapeList) Naming.lookup("//bruno.ShapeList") ;
Vector sList = aShapeList.allShapes();
} catch(RemoteException e) {System.out.println(e.getMessage());
}catch(Exception e) {System.out.println("Client: " + e.getMessage());}
}
}
23
1
2
Summary
Heterogeneity is an important challenge to designers :
– Distributed systems must be constructed from a variety of different networks,
operating systems, computer hardware and programming languages.
The Internet communication protocols mask the difference in networks
and middleware can deal with the other differences.
External data representation and marshalling
– CORBA marshals data for use by recipients that have prior knowledge of the
types of its components. It uses an IDL specification of the data types
– Java serializes data to include information about the types of its contents,
allowing the recipient to reconstruct it. It uses reflection to do this.
RMI
– each object has a (global) remote object reference and a remote interface that
specifies which of its operations can be invoked remotely.
– local method invocations provide exactly-once semantics; the best RMI can
guarantee is at-most-once
– Middleware components (proxies, skeletons and dispatchers) hide details of
marshalling, message passing and object location from programmers.
24