Distributed Systems - Aatif Kamal
Download
Report
Transcript Distributed Systems - Aatif Kamal
Dated: Nov 2006
Distributed Computing
Class: BIT5
Instructor: Aatif Kamal
Chapter 05:
Distributed Objects and Remote
Invocation
Objectives of the lecture
Essence of distributed commuting
To study communication between
distributed objects and the integration of
remote method invocation into a
programming language.
To be able to use Java RMI to program
applications with distributed objects and
how to use some aspects of reflection
To study the extension of the event-based
programming model to apply to distributed
event-based programs.
2
Revision
Two alternative building blocks
Datagram Socket: based on UDP, efficient but
suffer from failures
Stream Socket: based on TCP, reliable but
expensive
Marshalling
CORBA’s CDR and Java serialization
Request-Reply protocol
Base on UDP or TCP
Group communication
IP multicast is a simple multicast protocol
3
Chapter 5: Distributed objects and remote invocation
Introduction
Communication between distributed
objects
Remote procedure call
Events and notifications
Java RMI case study
Summary
4
Middleware
Layers of Middleware
Provide a programming model
Provide transparency
Location
Communication
protocols
Computer hardware
Operating systems
Programming languages
5
Middleware layers
Applications
RMI, RPC and events
Request reply protocol
Middleware
layers
External data representation
Operating System
6
Distributed programming model
Remote procedure call (RPC)
Birrel and Nelson (1984)
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
7
Conventional Procedure Call
a)
b)
Parameter passing in a local procedure call: the stack before the call
to read
8
The stack while the called procedure is active
Client and Server Stubs
Principle of RPC between a client and server program.
9
Steps of a Remote Procedure Call
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Client procedure calls client stub in normal way
Client stub builds message, calls local OS
Client's OS sends message to remote OS
Remote OS gives message to server stub
Server stub unpacks parameters, calls server
Server does work, returns result to the stub
Server stub packs it in message, calls local OS
Server's OS sends message to client's OS
Client's OS gives message to client stub
Stub unpacks result, returns to client
10
Passing Value Parameters (1)
Steps involved in doing remote computation through RPC
2-8
11
Passing Value Parameters (2)
a)
b)
c)
Original message on the Pentium
The message after receipt on the SPARC
The message after being inverted. The little numbers in boxes
indicate the address of each byte
12
Interfaces
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
13
Interface cases
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
14
CORBA IDL example
// In file Person.idl
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();
};
15
Chapter 5: Distributed objects and remote invocation
Introduction
Communication between distributed
objects
Remote procedure call
Events and notifications
Java RMI case study
Summary
16
Discuss RMI under following headings
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
17
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
18
The object model
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
19
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
Assume other architectural models then
client/server
Replicated objects
Migrated objects
20
Remote and local method invocations
remote
invocation
local
C
invocation
local
E
invocation
A
B
remote
invocation
F
local
invocation
D
21
The distributed objects model
Remote object reference
A 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 systems
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
22
A remote object and its remote interface
remoteobject
Data
remote
interface
{
m1
implementation
m2
m3
of methods
m4
m5
m6
23
Design Issues – Invocation semantics
Choices for different delivery guarantees
retry request message
duplicate filtering
retransmission of results
Three different semantics
Fault tolerance measures
Retransmit request
message
Duplicate
filtering
Invocation
semantics
Re-execute procedure
or retransmit reply
No
Not applicable
Not applicable
Maybe
Yes
No
Re-execute procedure
At-least-once
Yes
Yes
Retransmit reply
24
At-most-once
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 nonidempotent method
At most once
For invoker: receives result, or an exception
Prevent: omission failures by retrying, arbitrary failures
25
Design Issues - Transparency
What can be made transparent
marshaling
message passing
object locating and contacting
What can’t be made transparent
vulnerable to failure
latency
Current consensus(Jim Waldo research paper)
Syntax of remote invocation should be same as of local
invocation
Difference in remote and local objects should be expressed
in their interfaces
26
Implementation of RMI
The inner scene of RMI
Communication module
Request/reply between client and server
As discussed in chapter 4, figure 4.13
Communication module at Server side Select dispatcher at server
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
Actions of RRM
When a remote object is to be passed as argument or result for the
first time the remote reference module is asked to create a remote
object reference, which it adds to its table
When a remote object reference arrives in a request or reply message,
the remote reference module is asked for the corresponding local
27
object reference, which may either refer to proxy or remote object
Request-reply message structure (fig 4.13)
messageType
int (0=Request, 1= Reply)
requestId
int
objectReference
RemoteObjectRef
methodId
int or Method
arguments
array of bytes
28
The role of proxy and skeleton in remote method invocation
server
client
object A proxy for B
Request
skeleton
& dispatcher
remote
object B
for B’s class
Reply
Communication
Remote
reference module
module
Communication Remote reference
module
module
29
Implementation of RMI – RMI software
Proxy
forward invocation to remote object
one remote object one proxy
implement the method in the remote interface
It marshals a reference to the target object , its own methodId and its
arguments into request message and send it to the target, awaits the
reply and message, unmarshals it and returns the results to invoker
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
Receive the request from communication module and select
appropriate method in the skeleton
one dispatcher and skeleton for one remote object
30
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
Factory methods
Remote object interface cannot have constructors
Remote objects are either created in initialization section or
in remote methods designed for that purpose, called factory
methods
31
Implementation of RMI - Object state
The binder
A service that maintains mapping information of textual
names to remote object references
Activation of remote objects
to avoid resource waste, the servers can be started
whenever they are needed- FTP service
Activators: process that start server processes to host
remote objects.
a remote object could be active or passive
Passive object: consist of two parts
Implementation of its methods
Its state in marshaled form
Activation: Making a new object from corresponding passive
object by creating a new instance of its class and initializing
its variables from the stored state
Java RMI uses one activator on each server computer , 32
which is responsible for activating objects on that computer.
Implementation of RMI - Object state (cont..)
Persistent object stores
Persistent object
Persistent Object Store
Manage and store the state of persistent objects
different passivate strategies
an object that is guaranteed to live between
activations of processes
at the end of a transaction
when the program exit
E.g., Persistent Java, PerDiS
33
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
Whenever a remote object enters a process, a proxy is created and will
stay there for as long as needed. The process where the actual object
lives (server) should be informed, then later when there is no longer a
proxy at the client, server should be informed
Distributed Garbage collection works in corporation with local
garbage collectors
server maintain processes set that hold remote object
references to it for each of its remote objects
client notify server to modify the process set
when the process set becomes empty, server local garbage
collector reclaims the space
34
Distributed garbage collection (cont..)
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
35
Chapter 5: Distributed objects and remote invocation
Introduction
Communication between distributed
objects
Remote procedure call
Events and notifications
Java RMI case study
Summary
36
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 process
server process
Request
client stub
procedure
client
program
Communication
module
Reply
server stub
procedure
Communication
dispatcher
module
service
procedure37
Chapter 5: Distributed objects and remote invocation
Introduction
Communication between distributed
objects
Remote procedure call
Events and notifications
Java RMI case study
Summary
38
Event-notification model
Idea
one object react to a change occurring in another object
Event examples
modification of a document
A new doc added in an electronically tagged book
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
39
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
40
Dealing room system
Dealer’s computer
Dealer
Dealer’s computer
External
source
Notification
Notification
Information
provider
Notification
Notification
Dealer
Notification
Notification
Notification
Dealer’s computer
Dealer’s computer
Notification
Information
provider
Notification
Notification
Dealer
Dealer
External
source
41
Architecture for distributed event notification
Event service: maintain a database of published events and of
subscribers’ interests
decouple the publishers from the subscribers
Event service
subscriber
object of interest
1.
notification
object of interest
2.
object of interest
3.
notification
observer
subscriber
notification
observer
subscriber
notification
42
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
43
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
44
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
45
Chapter 5: Distributed objects and remote invocation
Introduction
Communication between distributed
objects
Remote procedure call
Events and notifications
RPC Case Study
Java RMI case study
Summary
46
Chapter 5: Distributed objects and remote invocation
Introduction
Communication between distributed
objects
Remote procedure call
Events and notifications
Java RMI case study
Summary
49
Chapter 5: Distributed objects and remote invocation
Introduction
Communication between distributed objects
Remote procedure call
Events and notifications
Java RMI case study
Summary
53
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
Sun RPC
Event-notification
Publish/subscribe
Event service
Example: dealing room
54
Assignment 6
Q.1 From the book: Distributed Operating Systems, A. S. Tanenbaum,
Summarize section 2.4 in you own words
Q.2 Read the following paper: and summarizes in your own words. Finally give
your own comments on the issues discussed in the paper.
A Note on Distributed Computing, Jim Waldo
Sun Microsystems site:
http://research.sun.com/techrep/1994/smli_tr-94-29.pdf
After carefully reading and understanding the article you have too write
one page overview of this note.
62
Assignment 7
Q.1
5.1
Q.2
5.3
Q.3
5.4
Q.4
5.5
63
Assignment 8
Q.1
5.12
Q.2
5.13
Q.3
5.17
Reading
5.3 RPC
5.5 Java RMI case study
64