Chapter 4: Inter-process Communications

Similar documents
Lecture 8 Chapter 4: Inter-process Communications

RMI: Design & Implementation

Interprocess Communication

Chapter 5: Remote Invocation. Copyright 2015 Prof. Amr El-Kadi

Distributed Systems Lecture 2 1. External Data Representation and Marshalling (Sec. 4.3) Request reply protocol (failure modes) (Sec. 4.

Structured communication (Remote invocation)

Remote Invocation. Today. Next time. l Overlay networks and P2P. l Request-reply, RPC, RMI

Slides for Chapter 5: Remote Invocation

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

03 Remote invoaction. Request-reply RPC. Coulouris 5 Birrel_Nelson_84.pdf RMI

Remote Invocation. Today. Next time. l Indirect communication. l Request-reply, RPC, RMI

RPC flow. 4.3 Remote procedure calls IDL. RPC components. Procedure. Program. sum (j,k) int j,k; {return j+k;} i = sum (3,7); Local procedure call

Remote Procedure Calls CS 707

Outline. EEC-681/781 Distributed Computing Systems. The OSI Network Architecture. Inter-Process Communications (IPC) Lecture 4

Lecture 5: Object Interaction: RMI and RPC

Remote Invocation. To do. Request-reply, RPC, RMI. q Today q. q Next time: Indirect communication

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca

CSCI-1680 RPC and Data Representation John Jannotti

C 1. Recap: Finger Table. CSE 486/586 Distributed Systems Remote Procedure Call. Chord: Node Joins and Leaves. Recall? Socket API

Distributed Objects and Remote Invocation. Programming Models for Distributed Applications

Distributed Systems. Client-Server Communication: Exercises

CSCI-1680 RPC and Data Representation. Rodrigo Fonseca

Module 3 - Distributed Objects & Remote Invocation

Distributed Systems 8. Remote Procedure Calls

Distributed Systems Inter-Process Communication (IPC) in distributed systems

Overview. Exercise 0: Implementing a Client. Setup and Preparation

Chapter 15: Distributed Communication. Sockets Remote Procedure Calls (RPCs) Remote Method Invocation (RMI) CORBA Object Registration

DISTRIBUTED OBJECTS AND REMOTE INVOCATION

Lecture 06: Distributed Object

Operating Systems. 18. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Spring /20/ Paul Krzyzanowski

The UNIVERSITY of EDINBURGH. SCHOOL of INFORMATICS. CS4/MSc. Distributed Systems. Björn Franke. Room 2414

3. Remote Procedure Call

Distributed Systems. 3. Interprocess Communication

Overview. Exercise 0: Implementing a Client. Setup and Preparation

CSci Introduction to Distributed Systems. Communication: RPC

Chapter 4 Communication

Contents. Java RMI. Java RMI. Java RMI system elements. Example application processes/machines Client machine Process/Application A

Object Interaction. Object Interaction. Introduction. Object Interaction vs. RPCs (2)

Object-based distributed systems. INF 5040/9040 autumn Lecturer: Frank Eliassen

Distributed Systems. 5. Remote Method Invocation

Distributed Systems. Definitions. Why Build Distributed Systems? Operating Systems - Overview. Operating Systems - Overview

Overview. Communication types and role of Middleware Remote Procedure Call (RPC) Message Oriented Communication Multicasting 2/36

Chapter 5 Remote Invocation. Gandeva Bayu Satrya, ST., MT. Telematics Labz. Informatics Department Telkom

Remote Invocation Vladimir Vlassov and Johan Montelius

REMOTE PROCEDURE CALLS EE324

Distributed Information Systems

Today CSCI Communication. Communication in Distributed Systems. Communication in Distributed Systems. Remote Procedure Calls (RPC)

Distributed Systems COMP 212. Lecture 8 Othon Michail

Remote Objects and RMI

Distributed Systems Theory 4. Remote Procedure Call. October 17, 2008

Remote Procedure Call

Transport layer protocols. Lecture 15: Operating Systems and Networks Behzad Bordbar

Distributed Systems. How do regular procedure calls work in programming languages? Problems with sockets RPC. Regular procedure calls

COMMUNICATION PROTOCOLS: REMOTE PROCEDURE CALL (RPC)

CHAPTER - 4 REMOTE COMMUNICATION

CS 5523 Operating Systems: Remote Objects and RMI

MODELS OF DISTRIBUTED SYSTEMS

KTH ROYAL INSTITUTE OF TECHNOLOGY. Remote Invocation. Vladimir Vlassov and Johan Montelius

Distributed Systems Project 3 Assigned: Wednesday, October 2, 2013 Due Friday Oct 25, 11:59 PM

INTRODUCTION TO XML-RPC, A SIMPLE XML-BASED RPC MECHANISM

CS 417 9/18/17. Paul Krzyzanowski 1. Socket-based communication. Distributed Systems 03. Remote Procedure Calls. Sample SMTP Interaction

Distributed Systems. 03. Remote Procedure Calls. Paul Krzyzanowski. Rutgers University. Fall 2017


Middleware. Adapted from Alonso, Casati, Kuno, Machiraju Web Services Springer 2004

Interprocess Communication

Lecture 5: RMI etc. Servant. Java Remote Method Invocation Invocation Semantics Distributed Events CDK: Chapter 5 TVS: Section 8.3

Message Passing vs. Distributed Objects. 5/15/2009 Distributed Computing, M. L. Liu 1

Remote Procedure Calls Layers, Problems and Variation

Remote Procedure Calls

Distributed Objects. Remote Method Invokation

UNIT 4 CORBA 4/2/2013 Middleware 59

Advanced Java Programming. Networking

Networks and Operating Systems Chapter 3: Remote Procedure Call (RPC)

MODELS OF DISTRIBUTED SYSTEMS

416 Distributed Systems. RPC Day 2 Jan 11, 2017

Avro Specification

416 Distributed Systems. RPC Day 2 Jan 12, 2018

Chapter 3: Client-Server Paradigm and Middleware

CS555: Distributed Systems [Fall 2017] Dept. Of Computer Science, Colorado State University

CS 162 Operating Systems and Systems Programming Professor: Anthony D. Joseph Spring Lecture 22: Remote Procedure Call (RPC)

Administrivia. Remote Procedure Calls. Reminder about last time. Building up to today

Distributed Programming and Remote Procedure Calls (RPC): Apache Thrift. George Porter CSE 124 February 19, 2015

Q.1. (a) [4 marks] List and briefly explain four reasons why resource sharing is beneficial.

MTAT Enterprise System Integration. Lecture 2: Middleware & Web Services

Programming with RMI Reminder

COMMUNICATION IN DISTRIBUTED SYSTEMS

Distributed Systems Principles and Paradigms. Distributed Object-Based Systems. Remote distributed objects. Remote distributed objects

Distributed Systems. Communication (2) Schedule of Today. Distributed Objects. Distributed Objects and RMI. Corba IDL Example

Thrift specification - Remote Procedure Call

Building up to today. Remote Procedure Calls. Reminder about last time. Threads - impl

Remote Method Invocation

#06 RPC & REST CLIENT/SERVER COMPUTING AND WEB TECHNOLOGIES

Lecture 8: February 19

Chapter 1 Getting Started

Chapter 5: Distributed objects and remote invocation

IBD Intergiciels et Bases de Données

xkcd.com End To End Protocols End to End Protocols This section is about Process to Process communications.

Communication. Distributed Systems IT332

Remote Procedure Call

THIS EXAMINATION PAPER MUST NOT BE REMOVED FROM THE EXAMINATION ROOM

Transcription:

95-702 Distributed Systems Chapter 4: Inter-process Communications 1

Middleware layers Applications, services RMI and RPC This chapter request-reply protocol marshalling and external data representation Middleware layers UDP and TCP 2

Marshalling and External Data Representation Messages consist of sequences of bytes. Interoperability Problems Big-endian, little-endian byte ordering Floating point representation Character encodings (ASCII, UTF-8, Unicode, EBCDIC) So, we must either: Have both sides agree on an external representation or transmit in the sender s format along with an indication of the format used. The receiver converts to its form. 3

External Data Representation and Marshalling External data representation an agreed standard for the representation of data structures and primitive values Marshalling the process of taking a collection of data items and assembling them into a form suitable for transmission in a message Unmarshalling is the process of disassembling them on arrival into an equivalent representation at the destination The marshalling and unmarshalling are intended to be carried out by the middleware layer 4

Quiz: External Data Representation and Marshalling Suppose we write a Java TCP client and server. And suppose we we pass java objects rather than simple characters, would the server interoperate with a.net client? 5

Three Important Approaches To External Data Representation and Marshalling: CORBA s CDR binary data may be used by different programming languages Java and.net Remoting Object Serialization are both platform specific (that is, Java on both sides or.net on both sides) and binary. XML is a textual format, verbose when compared to binary but more interoperable. 6

Consider int j = 3; Interoperability What does it look like in memory? 00000000000000000000000000000011 How could we write it to the wire? Little-Endian approach Big-Endian Approach Write 00000011 Write 0000000 Then 00000000 Then 0000000 Then 00000000 Then 0000000 Then 00000000 Then 0000011 The receiver had better know which one we are using! 7

Binary vs. Unicode Consider int j = 3; j holds a binary representation 00 011 We could also write it in Unicode. The character 3 is coded as 0000000000110011 Binary is better for arithmetic. The character Ω is coded as 0000001110101001 The number 43 can be written as a 32 bit binary integer or as two 16 bit Unicode characters The receiver had better know which one we are using! 8

Let s Examine Three Approaches to external data representation CORBA s Common Data Representation Java s serialization Web Service use of XML 9

CORBA Common Data Representation (CDR) for constructed types Type sequence string array struct enumerated union Representation length(unsignedlong) followed byelementsin order length(unsignedlong) followed bycharacters in order(canalso canhave widecharacters) array elements inorder (no length specified because it is fixed) in the order ofdeclaration of thecomponents unsignedlong (the values arespecified by theorder declared) type tag followed by the selected member Can be used by a variety of programming languages. The data is represented in binary form. Values are transmitted in sender s byte ordering which is specified in each message. May be used for arguments or return values in RMI. 10

CORBA CDR message index in sequence of bytes 0 3 4 7 8 11 12 15 16 19 20-23 24 27 4 bytes 5 "Smit" "h " 6 "Lond" "on " 1934 notes on representation length of string Smith length of string London unsigned long struct with value: { Smith, London, 1934} In CORBA, it is assumed that the sender and receiver have common knowledge of the order and types of the data items to be transmitted in a message. 11

CORBA CORBA Interface Definition Language (IDL) struct Person { string name; string place; long year; }; CORBA Interface Compiler generates Appropriate marshalling and unmarshalling operations 12

Java Serialization public class Person implements Serializable { private String name; private String place; private int year; public Person(String nm, place, year) { nm = name; this.place = place; this.year = year; } // more methods } 13

Java Serialization Serialization refers to the activity of flattening an object or even a connected set of objects - May be used to store an object to disk - May be used to transmit an object as an argument or return value in Java RMI - The serialized object holds Class information as well as object instance data - There is enough class information passed to allow Java to load the appropriate class at runtime. It may not know before hand what type of object to expect 14

Java Serialized Form Person 3 1934 Serialized values Explanation 8-byte version number h0 class name, version number int year java.lang.string java.lang.stringnumber, type and name of name: place: instance variables 5 Smith 6 London h1 values of instance variables The true serialized form contains additional type markers; h0 and h1 are handles are references to other locations within the serialized form The above is a binary representation of { Smith, London, 1934} 15

Web Service use of XML <p:person p:id= 123456789 xmlns:p= http://www.andrew.cmu.edu/~mm6 > <p:name>smith</p:name> <p:place>london</p:place> <p:year>1934</p:year> </p:person> Textual representation is readable by editors like Notepad or Textedit. But can represent any information found in binary messages. How? Binary data (e.g. pictures and encrypted elements) may be represented in Base64 notation. Messages may be constrained by a grammar written in XSD. An XSD document may be used to describes the structure and type of the data. Interoperable! A wide variety of languages and platforms support the marshalling and un-marshalling of XML messages. Verbose but can be compressed. Standards and tools still under development in a wide range of domains. 16

But what about passing pointers? In systems such as Java RMI or CORBA or.net remoting, we need a way to pass pointers to remote objects. Quiz: Why is it not enough to pass along a heap address? 17

Representation of a Remote Object Reference 32 bits 32 bits 32 bits 32 bits Internet address port number time object number interface of remote object A remote object reference is an identifier for a remote object. May be returned by or passed to a remote method in Java RMI. How do these references differ from local references? 18

A Request Reply Protocol OK, we know how to pass messages and addresses of objects. But how does the middleware carry out the communication? 19

UDP Style Request-Reply Communication Client Server dooperation (wait) (continuation) Request message Reply message getrequest select object execute method sendreply 20

UDP Based Request-Reply Protocol Client side: Client side b = dooperation public byte[] dooperation (RemoteObjectRef o, int methodid, byte[] arguments) sends a request message to the remote object and returns the reply. The arguments specify the remote object, the method to be invoked and the arguments of that method. Server side: Server side: public byte[] getrequest (); acquires a client request via the server port. b=getrequest() operate sendreply() public void sendreply (byte[] reply, InetAddress clienthost, int clientport); sends the reply message reply to the client at its Internet address and port. 21

Failure Model of UDP Request Reply Protocol A UDP style dooperation may timeout while waiting. What should it do? -- return to caller passing an error message -- but perhaps the request was received and the response was lost, so, we might write the client to try and try until convinced that the receiver is down In the case where we retransmit messages the server may receive duplicates Client side b = dooperation Server side: b=getrequest() operate sendreply() 22

Failure Model Handling Duplicates (Appropriate for UDP but not TCP) Suppose the server receives a duplicate messages. The protocol may be designed so that either (a) it re-computes the reply (in the case of idempotent operations) or (b) it returns a duplicate reply from its history of previous replies Acknowledgement from client clears the history 23

Request-Reply Message Structure messagetype requestid objectreference methodid arguments int (0=Request, 1= Reply) int RemoteObjectRef int or Method array of bytes 24

RPC Exchange Protocols Identified by Spector[1982] Name Messages sent by Client Server Client R Request RR Request Reply RRA Request Reply Acknowledge reply R = no response is needed and the client requires no confirmation RR= a server s reply message is regarded as an acknowledgement RRA= Server may discard entries from its history 25

A Quiz Why is TCP chosen for request-reply protocols? Variable size parameter lists. TCP works hard to ensure that messages are delivered reliably. So, no need to worry over retransmissions, filtering of duplicates or histories. The middleware is easier to write. 26

HTTP Request Message Traditional HTTP request method URL or pathname HTTP version headers message body GET //www.someloc/?age=23 HTTP/ 1.1 HTTP Is Implemented over TCP. 27

HTTP SOAP Message Web Services style HTTP request method URL or pathname HTTP version headers message body POST //SomeSoapLoc/server HTTP/ 1.1 <SOAP-ENV <age>23 HTTP is extensible. 28

Traditional HTTP Reply Message HTTP version status codereason headers message body HTTP/1.1 200 OK <html> 29

HTTP Web Services SOAP Reply Message HTTP version status codereason headers message body HTTP/1.1 200 OK <?xml version.. 30

A Working Toy Example Server side code: servant MyCoolClassServant.java server CoolClassServer.java skeleton MyCool_Skeleton.java interface MyCoolClass.java Client side code: Client CoolClient.java Interface MyCoolClass.java stub CoolClass_Stub.java Netbeans 6.8 LowLevelDistributedObjectProject LowLevelDistributedObjectProjectClient 31

CoolClassServer.java public class CoolClassServer { public static void main(string args[]) { System.out.println("Main"); MyCool_Skeleton cs = new MyCool_Skeleton(new MyCoolClass_Servant()); cs.serve(); } } 32

MyCoolClass_Servant.java public class MyCoolClass_Servant implements MyCoolClass { private String n[] = {"printer","stereo","tv","ipod","pda"}; private String a[] = {"HP200XT","Kenwood200","Panasonic","Apple","Palm"}; public String getdevice(string name) { } } for(int i = 0; i < n.length; i++) { if(n[i].equals(name)) return a[i]; } return "No device"; 33

MyCool_Skeleton.java (1) import java.io.objectoutputstream; import java.io.objectinputstream; import java.net.socket; import java.net.serversocket; public class MyCool_Skeleton { MyCoolClass mcc; public MyCool_Skeleton(MyCoolClass p) { } mcc = p; 34

MyCoolSkeleton.java (2) public void serve() { try { ServerSocket s = new ServerSocket(9000); while(true) { Socket socket = s.accept(); ObjectInputStream i = new ObjectInputStream(socket.getInputStream()); String name = (String)i.readObject(); String result = mcc.getdevice(name); ObjectOutputStream o = new ObjectOutputStream(socket.getOutputStream()); o.writeobject(result); o.flush(); } } catch(throwable t) { System.out.println("Error " + t); System.exit(0); } } } 35

MyCoolClass.java // Exists on both the client and server public interface MyCoolClass { } public String getdevice(string name) throws Exception; 36

CoolClient.java public class CoolClient { public static void main(string args[]) { try { } MyCoolClass p = new CoolClass_Stub(); System.out.println(p.getDevice(args[0])); } catch(throwable t) { t.printstacktrace(); System.exit(0); } } 37

CoolClass_Stub.java (1) import java.io.objectoutputstream; import java.io.objectinputstream; import java.net.socket; public class CoolClass_Stub implements MyCoolClass { Socket socket; ObjectOutputStream o; ObjectInputStream i; 38

CoolClass_Stub.java (2) public String getdevice(string name) throws Exception { socket = new Socket("localhost",9000); o = new ObjectOutputStream(socket.getOutputStream()); o.writeobject(name); o.flush(); i = new ObjectInputStream(socket.getInputStream()); } } String ret = (String)(i.readObject()); socket.close(); return ret; 39

Discussion With respect to the previous system, let s discuss: Request-Reply protocol. Marshalling and external data representation. Interoperability. Security. Reliability. Performance. Openness. Use of Metadata. Remote references. 40

Lab Exercise Modify the remote object so that it provides an additional method with the signature: void setdevice(string name, String maker); Modify the client so that it makes use of the new remote method. Show your working solution to your instructor or TA for credit. 41