Remote reference module

advertisement
Communication between distributed
objects
姓名: 邱 秀 純
學號:M9129017
Figure 5.1
Middleware layers
Applications
RMI, RPC and events
Request reply protocol
External data representation
Operating System
Middleware
layers
Middleware
Software that provides a programming model above the
basic building blocks of processes and message passing
is called middleware
Location transparency and independence from the details
of communication protocols ,OS and computer hardware
Use of several programming languages
interfaces
Control the possible interactions between modules, an
explicit interface is defined for each module.
CORBA IDL interfaces can specify attributes
parameter-passing mechanisms
Input
output
Pointer
Service interfaces:
Is used to refer to the specification of the procedures
offered by a sever , defining the types of the input and
output arguments of each of the procedures
Remote interfaces:
Specifies the methods of an object that are available for
invocation by object in other processes ,defining the types
of the input and output arguments of each of them.
The big difference can pass object as argument and results of
methods
IDL
Designed to allow objects implemented in different
languages to invoke one another
Figure 5.2
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();
};
Object model
Object references
Interfaces
Action
Exceptions
Garage collection
Distributed objects
A program is partitioned into separate parts ,each of which
is associated with an object
advantage
Avoid conflicting access
Object may be accessed via RMI
Object are accessed only via their method gives another
advantage for heterogeneous systems in that different data
formats may be used at different sites
Distributed object model
Extension to the object model to make it applicable to
distributed object
Method invocation:
Method invocation between objects in the same process are local
method invocation
Method invocation between objects in differences processes are
Remote method invocation
Figure 5.3
Remote and local method invocations
local
remote
invocation
A
B
C
local E
invocation
invocation
local
invocation
D
remote
invocation
F
Two fundamental concepts:
Remote object reference:
 Other objects can invoke the methods of a remote object if
they have access to its remote object reference
Is an identifier that can be used throughout a distributed
system to refer to a particular unique remote object
Remote interface:
Every remote object has a remote interface that specifies
which of its method can be invoked remotely
An interface is allowed to extend one or more other interface
Figure 5.4
A remote object and its remote interface
remoteobject
remote
interface
{
Data
m1
m2
m3
implementation
of methods
m4
m5
m6
Figure 5.5
Invocation semantics
Fault tolerance measures
Retransmit request
message
Duplicate
filtering
Invocation
semantics
Re-execute procedure
or retransmit reply
No
Not applicable
Not applicable
Yes
No
Re-execute procedure
At-least-once
Yes
Yes
Retransmit reply
At-most-once
Exactly once: local invocations
Maybe
Maybe& At-least-once & At-most-once
Maybe
The invoker cannot tell whether a remote method
has been executed once or not at all
None of the fault tolerance measure is applied ,there
are two failure:
Omission failures
Crash failures
At-least-once
At-least-once have two failure:
Crash failures
Arbitrary failures
Figure 5.6
The role of proxy and skeleton in remote method invocation
server
client
object A proxy for B
Request
skeleton
& dispatcher
for B’s class
remote
object B
Reply
Communication
Remote
reference module
module
Communication
module
Remote reference
module
Communication module
Remote reference module is responsible for
(1)translating between local and remote object
reference
(2)creating remote object reference
remote object table :record the correspondence between
local object references in that process and emoted object
references
Table includes:
An entry for all the remote objects held by the process
An entry for each local proxy
何 謂 RMI
RMI : Remote Method Invocation(遠端方法呼叫)
功能:讓客戶端執行的程式去呼叫遠端伺服器所提供
的方法
原理:與SUN 的RPC的功能類似,它將參數資料匯
集(marshalling)串列化(serialization)後傳送到另一台
主機上,並利用該主機所提供的函式來處理這些資料
,然後再將所得到結果串列化後傳送回來。可以說是
Java 版的 RPC。
不同:RPC利用UDP協定,RMI利用TCP協定
架構圖
 Stub:客戶端的代理人,當客戶端要呼叫遠端的方法時,將它
的參數傳遞出去,並不會有直接到遠端主機,而是先到stub,
stub負責找到提供方法的遠端主機位址,然後再將參數串列化
 Skeleton:伺服端的代理人,當它接收列串列化的資料後,先
將資料反串列化組合回來,接著看客戶需要用什麼方法處理,
在伺服端找到該方法,經過該方法處理後,便得到一個回傳值
。同理Skeleton也須將回傳值做串列化,傳給Stub
Remote reference layer:
負責處理遠端物件的 呼叫語意 (semantic of invocation)
決定遠端物件是否被複製 (replicated) 。
如果遠端物件被複製,則負責確保每個副本所收到的呼叫要求是
atomic。
負責處理伺服器的參考語意 (reference semantic for servers)
遠端物件可以在某個 Java 虛擬機器(VM) 內一直存在,等著被呼叫 。
或是在有其他物件呼叫它時才真的去建立遠端物件。
Transport layer:
負責建立每對虛擬機器間唯一的一條通道 (channel)。
每當有資料需要傳輸時,會在通道內建立連線 (connection)。
The RMI software
Proxy: make remote method invocation transparent
to clients by behaving like a local object to the
invoker
Dispatcher: A server has one dispatcher and
skeleton for each class representing a remote object
Skeleton :The class of a remote object has a
skeleton ,which implement the methods in the
remote interface
 Interface complier automatically generation of the classes for
proxies ,dispatchers and Skeleton
 Server and client Program
 server program contain the classes for the dispatchers and
skeletons
Client program :the classes of the proxies
 The binder : in the distributed system is a separate service that
maintain a table containing mapping from textual name to
remote object references
 Server threads: to avoid the execution of one remote invocation
delaying the execution of another
 Activation of remote objects
 Persistent object stores
 Object location
Distributed garbage collection
Aim
 distributed garbage collector ensure that if a local or remote
reference to an object is still held anywhere in a set of distributed
object ,then the object itself will continue to exist ,but as soon as no
object any a reference to it ,then object will be collected and the
memory it uses recovered
Java distributed garbage collection algorithm(P182)
Figure 5.7
Role of client and server stub procedures in RPC
client process
server process
Request
client stub
procedure
client
program
Communication
module
Reply
server stub
procedure
Communication
dispatcher
module
service
procedure
Events and notifications
publish-subscribe paradigm
Publish: an object that generates events publish the type
of events
Subscribe to the types of events that are of interest to
them
Distributed event-base system have two main
characteristics
Heterogeneous
asynchronous
Figure 5.9
Dealing room system
Dealer’s computer
Dealer
Dealer’s computer
External
source
Notification
Notification
Notification
Information
provider Notification
Notification
Dealer
Notification
Notification
Dealer’s computer
Dealer’s computer
Notification
Information
provider
Notification
Notification
Dealer
Dealer
External
source
Figure 5.10
Architecture for distributed event notification
Event service
subscriber
object of interest
1.
notification
object of interest
2.
object of interest
3.
notification
observer
subscriber
notification
observer
subscriber
notification
Roles for Observers
Forwarding
Filtering of notifications
Patterns of events
Notification mailbox
Jini
The main object involved in the Jini distributed event
distributed event specification
Event generator
Remote event listener
Remote events
Third-party events
Download