W_Chapter_4

39
• Introduction • Communication between distributed objects • Remote procedure call • Events and notifications • Java RMI case study • Summary Chapter 5: Distributed objects and remote invocation

description

sadf

Transcript of W_Chapter_4

Page 1: W_Chapter_4

• Introduction• Communication between distributed

objects• Remote procedure call• Events and notifications• Java RMI case study• Summary

Chapter 5: Distributed objects and remote invocation

Page 2: W_Chapter_4

• Layers of Middleware• Provide a programming model• Provide transparence

– Location – Communication protocols– Computer hardware– Operating systems– Programming languages

Middleware

Page 3: W_Chapter_4

• Remote procedure call (RPC)– call procedure in separate process

• Remote method invocation (RMI)– extension of local method invocation in OO model– invoke the methods of an object of another process

• Event-based model– Register interested events of other objects– Receive notification of the events at other objects

Distributed programming model

Page 4: W_Chapter_4

• Interface – Specifies accessible procedures and variables– Inner alteration won’t affect the user of the

interface

• Interface in distributed system– Can’t access variables directly– Input argument and output argument– Pointers can’t be passed as arguments or returned

results

Interfaces

Page 5: W_Chapter_4

• RPC’s Service interface– specification of the procedures of the server, defining the types

of the input and output arguments of each procedure

• RMI’s Remote interface– Specification of the methods of an object that are available for

objects in other processes, defining the types of them.– may pass objects or remote object references as arguments or r

eturned result

• Interface definition languages – program language, e.g. Java RMI– Interface definition languages (IDLs), are designed to allow ob

jects implemented in different languages to invoke one another.• e.g. CORBA IDL (n1), DCE IDL and DCOM IDL

Interface cases

Page 6: W_Chapter_4

CORBA IDL example

• Remote interface: – specifies the methods of an object available for remote invocation– an interface definition language (or IDL) is used to specify remote

interfaces. E.g. the above in CORBA IDL.– Java RMI would have a class for Person, but CORBA has a struct

struct Person {string name; string place;long year;

} ;interface PersonList {

readonly attribute string listname;void addPerson(in Person p) ;void getPerson(in string name, out Person p);long number();

};parameters are in, out or inout

remote interface

remote interface defines methods for RMI

CORBA has a struct

Page 7: W_Chapter_4

• Introduction• Communication between distributed

objects• Remote procedure call• Events and notifications• Java RMI case study• Summary

Chapter 5: Distributed objects and remote invocation

Page 8: W_Chapter_4

Distributed object model

invocation invocationremote

invocationremote

locallocal

localinvocation

invocationA B

C

D

E

F

• 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. • the remote interface specifies which methods can be invoked remotely

Figure 5.3

Page 9: W_Chapter_4

Invocation semantics• Local invocations are executed exactly once• Remote invocations cannot achieve this. Why not?

– the Request-reply protocol can apply fault-tolerance measures

Fault tolerance measures Invocation semantics

Retransmit request message

Duplicate filtering

Re-execute procedure or retransmit reply

No

Yes

Yes

Not applicable

No

Yes

Not applicable

Re-execute procedure

Retransmit reply At-most-once

At-least-once

Maybe

Page 10: W_Chapter_4

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)

Page 11: W_Chapter_4

object A object BskeletonRequest

proxy for B

Reply

CommunicationRemote Remote referenceCommunication module modulereference module module

for B’s class& dispatcher

remoteclient server

translates between local and remote object references and creates remote object references. Uses remote object table

The architecture of remote method invocation

RMI software - between application level objects and communication and remote reference modules

Dispatcher - gets request from communication module and invokes method in skeleton (using methodID in message).

carries out Request-reply protocol

Proxy - makes RMI transparent to client. Class implements remote interface. Marshals requests and unmarshals results. Forwards request.

Skeleton - implements methods in remote interface. Unmarshals requests and marshals results. Invokes method in remote object.

Page 12: W_Chapter_4

• Introduction• Communication between distributed

objects• Remote procedure call• Events and notifications• Java RMI case study• Summary

Chapter 5: Distributed objects and remote invocation

Page 13: W_Chapter_4

RPC is very similar to RMI• Service interface: the procedures that are available for remote calling• Invocation semantics choice: at-least-once or at-most-once• Generally implemented over request-reply protocol• Building blocks

– Communication module– Client stub procedure (as proxy in RMI): marshalling, sending, unmarshalling– Dispatcher: select one of the server stub procedures– Server stub procedure (as skeleton in RMI): unmarshalling, calling, marshalling

client

Request

Reply

CommunicationCommunication module module dispatcher

service

client stub

server stubprocedure procedure

client process server process

procedureprogram

Page 14: W_Chapter_4

Sun RPC case study

• Designed for NFS– at-least-once semantics

• XDR - Interface definition language – Interface name: Program number, version number– Procedure identifier: procedure number

• Rpcgen – generator of RPC components– client stub procedure– server main procedure– Dispatcher– server stub procedure– marshalling and unmarshalling procedure

Page 15: W_Chapter_4

Sun RPC case study …continued

• Binding – portmapper– Server: register ((program number, version number), port nu

mber)– Client: request port number by (program number, version nu

mber)

• Authentication– Each request contains the credentials of the user, e.g. uid and

gid of the user– Access control according to the credential information

Page 16: W_Chapter_4

• Introduction• Communication between distributed

objects• Remote procedure call• Events and notifications• Java RMI case study• Summary

Chapter 5: Distributed objects and remote invocation

Page 17: W_Chapter_4

Event-notification model• Idea

– one object react to a change occurring in another object

• Event examples– modification of a document– an electronically tagged book being at a new location

• Publish/subscribe paradigm– event generator publish the type of events – event receiver subscribe to the types of events that are interest to them– When event occur, notify the receiver

• Distributed event-based system – two characteristics– Heterogeneous: components in a DS that were not designed to interoperate can be

made to work together– Asynchronous: prevent publishers needing to synchronize with subscribers

Page 18: W_Chapter_4

Example - dealing room system

• Requirements– allow dealers to see the latest market price of the

tocks they deal in. • System components

– Information provider• receive new trading information• publish stocks prices event• stock price update notification

– Dealer process• subscribe stocks prices event

• System architecture

Page 19: W_Chapter_4

Architecture for distributed event notification• Event service: maintain a database of published events and of

subscribers’ interests• decouple the publishers from the subscribers

subscriberobserverobject of interest

Event service

object of interest

object of interest observer

subscriber

subscriber

3.

1.

2. notification

notification

notification

notification

Page 20: W_Chapter_4

The roles of the participating objects

• The object of interest– its changes of state might be of interest to other objects

• Event– An event occurs at an object of interest as the completion of a method execution

• Notification– an object that contains information about an event

• Subscriber– an object that has subscribed to some type of events in another object

• Observer objects– the main purpose is to decouple an object of interest from its subscribers.– Avoid over-complicating the object of interest.

• Publisher– an object that declares that it will generate notifications of particular types of

event. May be an object of interest or an observer.

Page 21: W_Chapter_4

Notification delivery

• Delivery semantics– Unreliable, e.g. deliver the latest state of a player in a

Internet game– Reliable, e.g. dealing room– real-time, e.g. a nuclear power station or a hospital patient

monitor• Roles for observers

– Forwarding• send notifications to subscribers on behalf of one or more objects of

interests– Filtering of notifications according to some predicate– Patterns of events– Notification mailboxes

• notification be delayed until subscriber being ready to receive

Page 22: W_Chapter_4

Jini distributed event specification

• EventGenerator interface– Provide register method– Event generator implement it– Subscriber invoke it to subscribe to the interested events

• RemoteEventListener interface– Provide notify method– subscriber implement it– receive notifications when the notify method is invoked

• RemoteEvent – a notification that is passed as argument to the notify method

• Third-party agents– interpose between an object of interest and a subscriber– equivalent of observer

Page 23: W_Chapter_4

• Introduction• Communication between distributed

objects• Remote procedure call• Events and notifications• Java RMI case study• Summary

Chapter 5: Distributed objects and remote invocation

Page 24: W_Chapter_4

Java RMI introduction

• Remote object– Must implement the remote interface– must handle remote exceptions

• Arguments and return results of remote method– Must be serializable– All primitive types serializable– remote objects are serializable– File handles are unserializable– Remote objects are passed as remote object reference, non-rem

ote serializable objects are copied and passed by value

• RMIregistry– access by the Naming class

Page 25: W_Chapter_4

Example: shared whiteboard

• Remote Interface• Server program and Client program• Callbacks

– A server’s action of notifying clients about an event – Implementation

• Client create a remote object• Client pass the remote object reference to server• Whenever an event occurs, server call client via the remote object

– Advantage• Improve performance by avoid constant polling• Delivery information in a timely manner

Page 26: W_Chapter_4

Design and implementation of Java RMI

• Java classes supporting RMI

RemoteServer

UnicastRemoteObject

<servant class>

Activatable

RemoteObject

Page 27: W_Chapter_4

• Introduction• Communication between distributed objects• Remote procedure call• Events and notifications• Java RMI case study• Summary

Chapter 5: Distributed objects and remote invocation

Page 28: W_Chapter_4

Summary

• Two paradigms for distributed programming– RMI(RPC)/Event notification: sync./async.

• RMI– Distributed object model

• Remote interface, remote exception, naming service

– Remote invocation semantics• Once, at-least-once, at-most-once

– Example: whiteboard based on Java RMI• Sun RPC• Event-notification

– Publish/subscribe– Event service

– Example: dealing room

Page 29: W_Chapter_4

Middleware layers

Applications

Middlewarelayers Request reply protocol

External data representation

Operating System

RMI, RPC and events

Page 30: W_Chapter_4

A remote object and its remote interface

interface

remote

m1

m2

m3

m4m5m6

Data

implementation

remoteobject

{of methods

Page 31: W_Chapter_4

Remote and local method invocations

invocation invocation

remote

invocationremote

local

local

local

invocation

invocation

AB

C

D

E

F

Page 32: W_Chapter_4

Files interface in Sun XDR

const MAX = 1000;typedef int FileIdentifier;typedef int FilePointer;typedef int Length;struct Data {

int length;char buffer[MAX];

};struct writeargs {

FileIdentifier f;FilePointer position;Data data;

};

struct readargs {FileIdentifier f;FilePointer position;Length length;

};

program FILEREADWRITE { version VERSION {

void WRITE(writeargs)=1; 1Data READ(readargs)=2; 2

}=2;} = 9999;

Page 33: W_Chapter_4

Dealing room system

Dealer’s computer

Informationprovider

Dealer

Externalsource

Externalsource

Informationprovider

Dealer

Dealer

Dealer

Notification

Notification

Notification

Notification

NotificationNotification

Notification

Notification

Dealer’s computer

Dealer’s computerDealer’s computer

NotificationNotification

Page 34: W_Chapter_4

The Naming class of Java RMIregistryvoid rebind (String name, Remote obj)

This method is used by a server to register the identifier of a remote object by name, as shown in Figure 15.13, line 3.

void bind (String name, Remote obj) This method can alternatively be used by a server to register a remote object by name, but if the name is already bound to a remote object reference an exception is thrown.

void unbind (String name, Remote obj) This method removes a binding.

Remote lookup(String name) This method is used by clients to look up a remote object by name, as shown in Figure 15.15 line 1. A remote object reference is returned.

String [] list() This method returns an array of Strings containing the names bound in the registry.

Page 35: W_Chapter_4

Java Remote interfaces Shape and ShapeList

import java.rmi.*;import java.util.Vector;

public interface Shape extends Remote {int getVersion() throws RemoteException;GraphicalObject getAllState() throws RemoteException; 1

}

public interface ShapeList extends Remote {Shape newShape(GraphicalObject g) throws RemoteException; 2Vector allShapes() throws RemoteException;int getVersion() throws RemoteException;

}

Page 36: W_Chapter_4

Java class ShapeListServant implements interface ShapeList

import java.rmi.*;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 { ... }}

Page 37: W_Chapter_4

Java class ShapeListServer with main method

import java.rmi.*;public class ShapeListServer{

public static void main(String args[]){System.setSecurityManager(new RMISecurityManager()); try{

ShapeList aShapeList = new ShapeListServant(); 1 Naming.rebind("Shape List", aShapeList ); 2

System.out.println("ShapeList server ready"); }catch(Exception e) {

System.out.println("ShapeList server main " + e.getMessage());}}

}

Page 38: W_Chapter_4

Java client of ShapeList

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") ; 1Vector sList = aShapeList.allShapes(); 2

} catch(RemoteException e) {System.out.println(e.getMessage());}catch(Exception e) {System.out.println("Client: " + e.getMessage());}

}}

Page 39: W_Chapter_4

Callback mechanism in the whiteboard system

Client created remote object:

Public interface WhiteboardCallback implements Remote{void callback(int version) throws RemoteException;

}

Methods added in Shapelist interface:

Int register(WhiteboardCallback callback) throws RemoteException;Void deregister(int callbackID) throws RemoteException;