1 / 32

Inter-Process Communications and Remote Procedure Call in Distributed Computing

This lecture discusses the techniques and protocols used for inter-process communications and remote procedure call in distributed computing systems. It covers topics such as shared memory, message passing, OSI network architecture, transport layer protocols, application layer protocols, and the role of middleware in providing common services. The lecture also explains parameter passing in conventional procedure calls and introduces the concept of remote procedure call using client and server stubs. It concludes with a discussion on parameter marshaling and external data representation.

space
Télécharger la présentation

Inter-Process Communications and Remote Procedure Call in Distributed Computing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. EEC-681/781Distributed Computing Systems Lecture 4 Wenbing Zhao Department of Electrical and Computer Engineering Cleveland State University wenbing@ieee.org

  2. Outline • Inter-process communications • Remote Procedure Call • Remote Method Invocation EEC-681: Distributed Computing Systems

  3. Inter-Process Communications • Techniques: • Shared memory • Message passing • Objectives: • Data exchange • Synchronization: processes at different hosts, executing at different rates, need to influence the overall execution pattern => Constraints on the order of events EEC-681: Distributed Computing Systems

  4. The OSI Network Architecture EEC-681: Distributed Computing Systems

  5. Low-level Layers • Physical layer: contains the specification and implementation of bits, and their transmission between sender and receiver • Data link layer: prescribes the transmission of a series of bits into a frame to allow for error and flow control • Network layer: describes how packets in a network of computers are to be routed EEC-681: Distributed Computing Systems

  6. Transport Layer • The transport layer provides the actual communication facilities for most distributed systems. • TCP: connection-oriented, reliable, stream-oriented communication • UDP: unreliable (best-effort) datagram communication EEC-681: Distributed Computing Systems

  7. Application Layer • Many application protocols are directly implemented on top of transport protocols that do a lot of application-independent work EEC-681: Distributed Computing Systems

  8. Message Layout EEC-681: Distributed Computing Systems

  9. Middleware Layer • Middleware is invented to provide commonservices and protocols that can be used by many differentapplications: • A rich set of communication protocols • Marshaling and unmarshaling of data • Naming protocols • Security protocols • Scaling mechanisms • What remains are truly application-specificprotocols EEC-681: Distributed Computing Systems

  10. An Adapted Reference Model with Middleware Layer 2-5 EEC-681: Distributed Computing Systems

  11. Conventional Procedure Call count = read(fd, buf, bytes); Parameter passing in a local procedure call: the stack before the call to read() The stack while the called procedure is active EEC-681: Distributed Computing Systems

  12. Parameter Passing in Conventional Procedure Call • Passing by value • Passing by reference 0x01400000 buffer fd = 10; bytes = 1024; buf = 0x01400000; count = read(fd, buf, bytes); which parameter to read() is passed by value and which is passed by reference? EEC-681: Distributed Computing Systems

  13. Remote Procedure Call • Observations: • Application developers are familiar with simple procedure model • Well-engineered procedures operate in isolation (black box) • There is no fundamental reason not to be able to execute procedures on separate machine • Conclusion: communication between caller & callee can be hidden by using procedure-call mechanism EEC-681: Distributed Computing Systems

  14. Client and Server Stubs • Remote Procedure Call (RPC) achieves distribution transparency by using a client stub and a server stub • The client stub provides the interface of the procedure call => illusion of a local call interface • It packs the parameters into a message and requests that message be sent to the server • The server stub is a piece of code that transforms requests coming in over the network into local procedure calls EEC-681: Distributed Computing Systems

  15. RPC between Client and Server EEC-681: Distributed Computing Systems

  16. Steps of Remote Procedure Call EEC-681: Distributed Computing Systems

  17. Parameter Passing for RPC • Marshaling: must convert the parameters into a message • Marshaling is not trivial: • Client and server machines may have different data representations (think of byte ordering) • Wrapping a parameter means transforming a value into a sequence of bytes • Client and server have to agree on the same encoding • Client and server need to properly interpret messages, transforming them into machine-dependent representations EEC-681: Distributed Computing Systems

  18. Parameter Passing The corresponding message A procedure EEC-681: Distributed Computing Systems

  19. External Data Representation • Data structures: • “flattened” on transmission • rebuilt upon reception • Primitive data types: • Byte order (big-endian: MSB comes first) • ASCII vs UNICODE (2 bytes per character) • Marshalling/unmarshalling • To/from agreed external format EEC-681: Distributed Computing Systems

  20. External Data Representation • XDR (RFC 1832), CDR (CORBA), Java: • data -> byte stream • object references • HTTP/MIME: • data -> ASCII text EEC-681: Distributed Computing Systems

  21. notes index in on representation sequence of bytes 4 bytes length of string 5 0–3 "Smit" 4–7 ‘Smith’ "h___" 8–11 12–15 6 length of string "Lond" 16–19 ‘London’ "on__" 20-23 1934 24–27 unsigned long The flattened form represents a Person struct with value: {‘Smith’, ‘London’, 1934} CORBA CDR Example EEC-681: Distributed Computing Systems

  22. Interface Definition Language • In order to allow servers to be accessed by different clients, Interface Definition Language (IDL) is usually used to allow various platforms to call the RPC • The first popular implementation of RPC on Unix was Sun's RPC, which was used as the basis for NFS • From IDL, client and server stubs can be generated automatically to facilitate development EEC-681: Distributed Computing Systems

  23. Parameter Passing • While passing value parameters is relatively straightforward, passing reference parameters is difficult • A pointer is meaningful only within the address space of the process in which it is being used • If we introduce a remote referencemechanism, access transparency can be enhanced: • Remote reference offers unified access to remote data • Remote references can be passed as parameter in RPCs EEC-681: Distributed Computing Systems

  24. Asynchronous RPC The interconnection between client and server in a traditional RPC The interaction using asynchronous RPC EEC-681: Distributed Computing Systems

  25. Asynchronous RPC A client and server interacting through two asynchronous RPCs. This scheme is also called deferred synchronous RPC EEC-681: Distributed Computing Systems

  26. Remote Distributed Objects • Data and operations encapsulatedin an object • Operations are implemented as methods, and are accessible through interfaces • Object offers only its interfaceto clients • Object server (or host server) is responsible for a collection of objects • Server skeletonhandles (un)marshaling and object invocation • Client stub (proxy)implements interface EEC-681: Distributed Computing Systems

  27. Distributed Objects EEC-681: Distributed Computing Systems

  28. Client-to-Object Binding • Object reference:denotes server, object, and communication protocol.Having an object reference allows a client to bind to an object: • Client loads associated stub code • Stub is instantiated and initialized for specific object • Two ways of binding: • Implicit: Invoke methods directly on the referenced object • Explicit: Client must first explicitly bind to object before invoking it EEC-681: Distributed Computing Systems

  29. Remote Method Invocation Steps • Client invokes method at stub • Stub marshals request and sends it to server • Server ensures referenced object is active • Request is unmarshaled by object’s skeleton, and referenced method is invoked • Result is marshaled and passed back to client • Client stub unmarshals reply and passes result to client application EEC-681: Distributed Computing Systems

  30. RMI: Parameter Passing • Passing objects by value: A client may pass a complete object as parameter value: • An object has to be marshaled: • Marshall its state • Marshall its methods, or give a reference to where an implementation can be found • Server unmarshals object. Note that we have now created a copyof the original object EEC-681: Distributed Computing Systems

  31. RMI: Parameter Passing • Passing objects by reference: Much easier than in the case of RPC: • One can simply bind to referenced object, and invoke methods • Unbind when referenced object is no longer needed EEC-681: Distributed Computing Systems

  32. Parameter Passing • Passing an object by reference or by value EEC-681: Distributed Computing Systems

More Related