+ All Categories
Home > Documents > Introduction Communication between distributed objects Remote procedure call Events and...

Introduction Communication between distributed objects Remote procedure call Events and...

Date post: 12-Jan-2016
Category:
Upload: primrose-martin
View: 226 times
Download: 2 times
Share this document with a friend
Popular Tags:
49
• Introduction • Communication between distributed objects • Remote procedure call • Events and notifications • Java RMI case study • Summary Chapter 5: Distributed objects and remote invocation
Transcript
Page 1: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• 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: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• Layers of Middleware

• Provide a programming model

• Provide transparence– Location

– Communication protocols

– Computer hardware

– Operating systems

– Programming languages

Middleware

Page 3: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• 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: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• 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: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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

– 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

– may pass objects or remote object references as arguments or returned result

• Interface definition languages – program language, e.g. Java RMI

– Interface definition language (IDL), e.g. CORBA IDL, DCE IDL and DCOM IDL

Interface cases

Page 6: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• Introduction

• Communication between distributed objects

• Remote procedure call

• Events and notifications

• Java RMI case study

• Summary

Chapter 5: Distributed objects and remote invocation

Page 7: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• The object model

• Distributed objects

• The distributed object model

• Design issues– semantics of remote invocations

• Implementation– RMI above the request-reply protocol

• Distributed garbage collections

Discuss RMI under following headings

Page 8: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

The object model

• Object references– Objects can be accessed via object references

– First-class values

• Interfaces– A definition of the signatures of a set of methods

– No constructers

– A class can implement several interfaces, e.g. Java

• Actions– Initiated by an object invoking a method in another object

– Two affects• Change the state of the receiver

• Further invocations on methods in other objects

Page 9: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

The object model … continued

• Exceptions mechanism– A clean way to deal with error conditions

– List exceptions at the method head

– throw user know exceptions

– Catch exceptions

• Garbage collection– Freeing the space occupied by cancelled objects

– C++: collected by programmers

– Java: collected by JVM

Page 10: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Distributed objects

• Natural extension– physical distribution of objects into different processes or

computers in a distributed system

• Benefits of distributed objects– Enforce encapsulation

• can’t access variables directly

– Support heterogeneous systems

– Local object cache

• Assume other architectural models – Replicated objects

– Migrated objects

Page 11: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

The distributed objects model

• Remote object reference– An unique identifier in a distributed system – May be passed as arguments and results of remote method

invocation

• Remote interface– remote object class implements the methods of its remote

interface

• Actions in a distributed system– may incur a chain of invocations on different computers

• Garbage collection– Usually based on reference counting

• Exception– notify the client and the client handle exceptions

Page 12: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Design Issues – Invocation semantics

• Choices for different delivery guarantees– retry request message

– duplicate filtering

– retransmission of results

• Three different semantics

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 13: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Different invocation semantics

• Maybe – For invoker: executed once, or not at all ???

– Suffer from: (1) message lost; (2) server crash

– Useful for app. in which occasional failed invocation are acceptable

• At least once – For invoker: execute at least once, or an exception

– Suffer from: (1) server crash; (2) arbitrary failures for non-idempotent method

• At most once – For invoker: receives result, or an exception – Prevent: omission failures by retrying, arbitrary failures

Page 14: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Design Issues - Transparency

• What can be made transparent– marshal

– message passing

– object locating and contacting

• What can’t be made transparent– vulnerable to failure

– latency

• Current consensus– transparent in syntax

– different in expression

Page 15: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Implementation of RMI

• The inner scene of RMI• Communication module

– Request/reply between client and server– Select dispatcher at server side

• Remote reference module– Translate between local and remote object reference– Create remote object reference– Remote object table

• entries for remote objects held by the process• entries for local proxies

Page 16: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Implementation of RMI – RMI software

• Proxy– forward invocation to remote object– one remote object one proxy

• Skeleton– implement the method in the remote interface– unmarshal the arguments in the request– invoke the corresponding method in the remote object– wait for the invocation complete– marshal the result in the reply message

• Dispatcher– select appropriate method in the skeleton– one dispatcher and skeleton for one remote object

Page 17: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Implementation of RMI - execution

• The classes for proxies, dispatchers and skeletons– generated automatically by an interface compiler, e.g. rmic

• Server program– create and initialize at least one of the remote objects– register

• Client program– look up the remote object references – invoke

• The binder– Maintain mapping information of textual names to remote ob

ject references

Page 18: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Implementation of RMI - Object state

• Activation of remote objects– to avoid resource waste, the servers can be started whenever t

hey are needed– a remote object could be active or passive

• Persistent object stores– Persistent object

• an object that is guaranteed to live between activations of processes

– different passivate strategies• at the end of a transaction• when the program exit

– E.g., Persistent Java, PerDiS

Page 19: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Distributed garbage collection

• The aim of a distributed garbage collector– Retain the object (local&remote) when it is still be referenced

– Collect the object when none holds reference to it

• Java distributed garbage collection algorithm– based on reference counting

– server maintain processes set that hold remote object references to it

– client notify server to modify the process set

– when the process set becomes empty, server local garbage collector reclaims the space

• Leases in Jini– lease: the granting of the use of a resource for a period of time

– avoid to discover whether the resource users are still interested or their programs have not exited

Page 20: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• Introduction

• Communication between distributed objects

• Remote procedure call

• Events and notifications

• Java RMI case study

• Summary

Chapter 5: Distributed objects and remote invocation

Page 21: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 22: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 23: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 24: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• Introduction

• Communication between distributed objects

• Remote procedure call

• Events and notifications

• Java RMI case study

• Summary

Chapter 5: Distributed objects and remote invocation

Page 25: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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– asynchronous

Page 26: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Example - dealing room system

• Requirements– allow dealers to see the latest market price

information

• 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 27: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 28: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

The roles of the participating objects

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

• Event– 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

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

types of event

Page 29: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Notification delivery

• Delivery semantics– Unreliable– Reliable– real-time

• Roles for observers– Forwarding

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

– Filtering of notifications– Patterns of events– Notification mailboxes

• notification be delayed until subscriber being ready to receive

Page 30: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 31: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• Introduction

• Communication between distributed objects

• Remote procedure call

• Events and notifications

• Java RMI case study

• Summary

Chapter 5: Distributed objects and remote invocation

Page 32: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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-remote serializable objects are copied and passed by value

• RMIregistry– access by the Naming class

Page 33: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 34: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Design and implementation of Java RMI

• Java classes supporting RMI

RemoteServer

UnicastRemoteObject

<servant class>

Activatable

RemoteObject

Page 35: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

• Introduction

• Communication between distributed objects

• Remote procedure call

• Events and notifications

• Java RMI case study

• Summary

Chapter 5: Distributed objects and remote invocation

Page 36: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 37: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Middleware layers

Applications

Middlewarelayers Request reply protocol

External data representation

Operating System

RMI, RPC and events

Page 38: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

CORBA IDL example

// In file Person.idlstruct 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();

};

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

A remote object and its remote interface

interface

remote

m1

m2

m3

m4m5

m6

Data

implementation

remoteobject

{of methods

Page 40: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

Remote and local method invocations

invocation invocation

remote

invocationremote

local

local

local

invocation

invocation

AB

C

D

E

F

Page 41: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

The role of proxy and skeleton in remote method invocation

object A object Bskeleton

Requestproxy for B

Reply

CommunicationRemote Remote referenceCommunication

module modulereference module module

for B’s class

& dispatcher

remoteclient server

Page 42: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 43: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 44: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

The Naming class of Java RMIregistry

void 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 45: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 46: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 47: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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 48: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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") ; 1

Vector sList = aShapeList.allShapes(); 2

} catch(RemoteException e) {System.out.println(e.getMessage());

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

}

}

Page 49: Introduction Communication between distributed objects Remote procedure call Events and notifications Java RMI case study Summary Chapter 5: Distributed.

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;


Recommended