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