75
06/16/22 Distributed Systems - Com p 655 1 Communication essentials Communication patterns Communication structure: OSI reference model and TCP/IP coverage Major middleware communication services – RPC – RMI – http I hate to wait … Message passing (skip) Streams

Communication essentials

  • Upload
    haig

  • View
    64

  • Download
    0

Embed Size (px)

DESCRIPTION

Communication essentials. Communication patterns Communication structure: OSI reference model and TCP/IP coverage Major middleware communication services RPC RMI http I hate to wait … Message passing (skip) Streams. Communication patterns. Producer. Consumer. query. response. - PowerPoint PPT Presentation

Citation preview

Page 1: Communication essentials

04/22/23 Distributed Systems - Comp 655 1

Communication essentials• Communication patterns• Communication structure: OSI reference

model and TCP/IP coverage• Major middleware communication

services– RPC– RMI– http– I hate to wait …– Message passing– (skip) Streams

Page 2: Communication essentials

04/22/23 Distributed Systems - Comp 655 2

Communication patterns

Producer Consumer

query

response

Page 3: Communication essentials

04/22/23 Distributed Systems - Comp 655 3

Communication patterns with broker

Producer 2

query

response

Producer 1Consumer 2

Consumer 1

Consumer 3

Subscriptionservice

Client 2

Client 1Server 2

Server 1

Server 3

Requestbroker

queryresponse

Page 4: Communication essentials

04/22/23 Distributed Systems - Comp 655 4

Communication patterns -other variations

• Blocking or non-blocking• Connection-based or connectionless• Transient or persistent

Examples:• blocking transient query-response ==

RPC• non-blocking persistent

producer/consumer == message queuing

Page 5: Communication essentials

04/22/23 Distributed Systems - Comp 655 5

A note about blocking• Blocking communication blocks the

thread that makes the call• Other work may continue in other

threads in the same process• More about threads and processes

next week

Page 6: Communication essentials

04/22/23 Distributed Systems - Comp 655 6

Communication essentials• Communication patterns• Communication structure: OSI

reference model and TCP/IP coverage• Major middleware communication services

– RPC– RMI– http– I hate to wait …– Message passing

Page 7: Communication essentials

04/22/23 Distributed Systems - Comp 655 7

OSI Reference Model

2-1

TCP/IP

sending bitse.g. Ethernetconnectionless IPTCP, UDP

not usednot used

HTTP, FTP, …

Page 8: Communication essentials

04/22/23 Distributed Systems - Comp 655 8

Middleware Protocols

2-5RPCRMI

Page 9: Communication essentials

04/22/23 Distributed Systems - Comp 655 9

Where does http fit?• Originally, it looked like an

application-level protocol, where the application was fetching and viewing HTML pages

• As the Web has matured, it has been used increasingly as middleware.

• It’s the foundation for– Web applications– Web services

Page 10: Communication essentials

04/22/23 Distributed Systems - Comp 655 10

Communication essentials• Communication patterns• Communication structure: OSI reference

model and TCP/IP coverage• Major middleware communication services

– RPC– RMI– http– I hate to wait …– Message passing

Page 11: Communication essentials

04/22/23 Distributed Systems - Comp 655 11

RPC is all about• Allowing a client to make a

procedure call that is processed on a remote machine

• Without the client’s having to care (much)

Page 12: Communication essentials

04/22/23 Distributed Systems - Comp 655 12

Ordinary procedure callprocess

caller

callee(callee is atanh)

0.98 2.3

Page 13: Communication essentials

04/22/23 Distributed Systems - Comp 655 13

RPC: call the procedure across a network

clientprocess

serverprocess

network

caller callee

clientstub

serverstub

0.98

Atanh, 0.98message

0.98

Page 14: Communication essentials

04/22/23 Distributed Systems - Comp 655 14

RPC: call the procedure across a network

clientprocess

serverprocess

network

caller callee

clientstub

serverstub

2.3

OK, 2.3message

2.3

Page 15: Communication essentials

04/22/23 Distributed Systems - Comp 655 15

RPC Summaryclient

processserver

process

network

caller

clientstub

callee

serverstub

•client stub pretends to be the callee•server stub pretends to be the caller•caller and callee are written as if they were on the same machine•location transparency!!

(almost)

Page 16: Communication essentials

04/22/23 Distributed Systems - Comp 655 16

Warning: passing parameters and results

can be tricky

Page 17: Communication essentials

04/22/23 Distributed Systems - Comp 655 17

Passing Value Parameters (1)

Page 18: Communication essentials

04/22/23 Distributed Systems - Comp 655 18

Passing Value Parameters (2)

a) Original message (JILL, 5) on the Pentium (little endian)b) The message after receipt on the SPARC (big endian)c) The message after being inverted. The little numbers in

boxes indicate the address of each byte

Number is backwards String is backwards

Page 19: Communication essentials

04/22/23 Distributed Systems - Comp 655 19

Conclusion from the byte order problem

• You have to explicitly define your interfaces.

• This problem is one of the fundamental motivators for the use of Interface Definition Languages (IDL)

• Passing value parameters is a key component of access transparency.

Page 20: Communication essentials

04/22/23 Distributed Systems - Comp 655 20

Interface definitionInterface definitions are critical

factors in • Openness• Flexibility• Access transparency• Enabling proxy construction in

middleware

Page 21: Communication essentials

04/22/23 Distributed Systems - Comp 655 21

Activity – what can go wrong?

(with an RPC)Brainstorm things that can go wrong

when a program on machine A tries to make an RPC to a server on machine B

A BNetwork

Page 22: Communication essentials

04/22/23 Distributed Systems - Comp 655 22

Pick the top three• The instructor will pick some of the

failures you brainstormed• Multi-vote on the ones in whose

solutions you are most interested• You will use the top three vote-

getters in the next activity

Page 23: Communication essentials

04/22/23 Distributed Systems - Comp 655 23

Activity – what could you do about it?

Brainstorm approaches to dealing with the top three failure modes

A BNetwork

Page 24: Communication essentials

04/22/23 Distributed Systems - Comp 655 24

Communication patterns -reminder

Parameters:• Query-response or producer-consumer• Blocking or non-blocking• Connection-based or connection-less• Persistent or transientExamples:• blocking transient query-response == RPC• non-blocking persistent

producer/consumer == message queuing

Page 25: Communication essentials

04/22/23 Distributed Systems - Comp 655 25

Finding the server or peer• In all cases, the process that initiates a

communication has to find the process it wants to communicate with

• The address could be in– Source code (simplest, least flexible)– Configuration file– A network directory service (requires client

to know a name for a server) (e.g. DNS)– A series of directories (e.g. LDAP, then RMI

Registry)• Interaction with the directory is usually

blocking request/response

Page 26: Communication essentials

04/22/23 Distributed Systems - Comp 655 26

Communication essentials• Communication patterns• Communication structure: OSI reference

model and TCP/IP coverage• Major middleware communication services

– RPC– RMI– http– I hate to wait …– Message passing

Page 27: Communication essentials

04/22/23 Distributed Systems - Comp 655 27

Focus on Remote Objects• Here, object ==

state + methods + interface• Usually, only the interface is

distributed• “Remote objects” refers to

approaches in which, for each object there is some server where all of it state resides

Page 28: Communication essentials

04/22/23 Distributed Systems - Comp 655 28

Distributed Objects

• Common organization of a remote object with client-side proxy.

2-16

Page 29: Communication essentials

04/22/23 Distributed Systems - Comp 655 29

Basic Java RMI

rmiregistry**

Server

Client1. Server registers its name

and remote object2. Client gets reference to

remote object from rmiregistry

3. Client calls server

Interface.class_Stub.class *

1.

2.

3.

Interface.class_Skel.class *

* = not needed if Client and Server are both Java 1.5 or newer** = RMI Registry can be a separate process or an object inside the Server process. If separate, must be on same machine.

Page 30: Communication essentials

04/22/23 Distributed Systems - Comp 655 30

Passing objects around …• In RMI, parameters and return

values can be object references– If the parameter refers to a local

object, do you copy the object or pass only a reference?

– If the parameter refers to a remote object, what do you pass?

Page 31: Communication essentials

04/22/23 Distributed Systems - Comp 655 31

Local, remote objects in Java RMI

• Local objects are passed by value• Remote objects by reference• Passing a remote object by

reference means passing a proxy by value

Page 32: Communication essentials

04/22/23 Distributed Systems - Comp 655 32

Parameter Passing in RMI

Page 33: Communication essentials

04/22/23 Distributed Systems - Comp 655 33

http• Communication patterns:

– Transient– Query/response

• But, http does NOT simulate a procedure call– Non-blocking (officially)

• Many clients choose to block• HTTP 1.1 is defined in RFC 2616• Depends on TCP for reliable

communication

Page 34: Communication essentials

04/22/23 Distributed Systems - Comp 655 34

Steps in an HTTP interaction

1. Client requests TCP connection2. Client and server collaborate to

create a TCP connection3. Client sends an HTTP request4. Server sends a response5. TCP connection torn down

• In HTTP 1.1, connection can be kept alive

Page 35: Communication essentials

04/22/23 Distributed Systems - Comp 655 35

Anatomy of an HTTP request

POST /don/demo HTTP/1.1accept: */*accept-language: en-usreferer: http://localhost:8080/don/echoclient.htmcontent-type: application/x-www-form-urlencodedaccept-encoding: gzip, deflateuser-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; NovaPacs Viewer 6.0.197.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)host: localhost:8080content-length: 37connection: Keep-Alivecache-control: no-cache

name=007&mission=deep%20dark%20secret

methodrequest URI protocolheaders

content

Page 36: Communication essentials

04/22/23 Distributed Systems - Comp 655 36

Watch out for Norton (and others)

POST /don/demo HTTP/1.1accept: */*accept-language: en-us-------: ----:-----------:-----------------------content-type: application/x-www-form-urlencoded---------------: ----- -------user-agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; NovaPacs Viewer 6.0.197.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)host: localhost:8080content-length: 37connection: Keep-Alivecache-control: no-cache

name=007&mission=deep%20dark%20secret

Page 37: Communication essentials

04/22/23 Distributed Systems - Comp 655 37

Anatomy of an HTTP response

HTTP/1.1 200 OKX-Powered-By: Servlet/2.5Content-Type: text/xml;charset=utf-8Content-Length: 57Date: Sun, 16 Sep 2007 17:55:54 GMTServer: Sun Java System Application Server Platform Edition 9.0_01

<greeting>Hello, 007. You made a POST request.</greeting>

protocolstatuscode

headers

content

reason phrase

Page 38: Communication essentials

04/22/23 Distributed Systems - Comp 655 38 Mak

ing

an H

TTP

requ

est i

n Ja

va

Page 39: Communication essentials

04/22/23 Distributed Systems - Comp 655 39

Server side: HttpServlet

Page 40: Communication essentials

04/22/23 Distributed Systems - Comp 655 40

Servlet container

client

Container (Tomcat, Glassfish,WebLogic, WebSphere, etc)

your Servlet

DB

Servletbase classrequest

response

whatever

Page 41: Communication essentials

04/22/23 Distributed Systems - Comp 655 41

Smudging the transparency …

• Network-unfriendly code• Lots of clients can mean lots of

configuration management

Page 42: Communication essentials

04/22/23 Distributed Systems - Comp 655 42

Network-unfriendly code …• In OO, there are usually lots of fine-grained

classes, and lots of getters and setters

• Performance is not good if you do this over a network

Person person = new Person();person.setFirstName(fname);person.setMiddleInitial(initial);person.setLastName(lname);Address address = new Address();address.setStreet(street);address.setCity(city);address.setState(state);person.setAddress(address);…

Page 43: Communication essentials

04/22/23 Distributed Systems - Comp 655 43

Network-unfriendlyclient server

domainobject

domainobject

Page 44: Communication essentials

04/22/23 Distributed Systems - Comp 655 44

A more network-friendly way

• This is a recurring problem in distributed systems

• Remote façade and Data transfer object patterns provide the core of a solution– Define a façade class with methods that group

multiple fine-grained operations together– Define classes (DTOs) with nothing but getters

and setters for moving groups of data items around

– Keep the business logic in the original class(es) on the server side

Page 45: Communication essentials

04/22/23 Distributed Systems - Comp 655 45

Using Remote Façade + DTO1. Client creates a DTO

2. Client calls lots of setters on DTO3. Client calls façade with DTO as

parameter4. Service calls lots of getters on DTO,

setters (and other methods, as needed) on the domain object(s)

5. Façade creates DTO26. Façade calls setters on DTO27. Façade returns DTO2 to client8. Client calls lots of getters on DTO2

Page 46: Communication essentials

04/22/23 Distributed Systems - Comp 655 46

Using Remote Façade + DTO

client server

DTO DTOdomainobject

DTO2 DTO2

Façade

domainobject

Page 47: Communication essentials

04/22/23 Distributed Systems - Comp 655 47

Remote Façade + DTO code (flavor)

PersonTO pto = new PersonTO();pto.setFirstName(fname);pto.setMiddleInitial(initial);pto.setLastName(lname);pto.setStreet(street);pto.setCity(city);pto.setState(state);Facade facade = new Facade();ResultTO rto = facade.addPerson(pto);…

Page 48: Communication essentials

04/22/23 Distributed Systems - Comp 655 48

Remote Façade + DTO consequences

• Reduced network traffic• Reduced coupling between client and

domain model• Costs include

– More classes to deal with– Getters and setters called multiple times

(client DTO.get, server DTO.get + domain.set)• Risks include

– Temptation to put business logic in DTO– Temptation to skip domain model

development and build a DTO-processing system

Page 49: Communication essentials

04/22/23 Distributed Systems - Comp 655 49

More about client/domain coupling

• Refactoring is a good thing• Issues with refactoring a network

service– Refactored client needs to be

deployed in many places– Service administrators may not know

where all the clients are– There may be clients the service

developers know nothing about

Page 50: Communication essentials

04/22/23 Distributed Systems - Comp 655 50

A more refactoring-friendly way

• This is a recurring problem in distributed systems

• Patterns include– Migrate code at runtime

• e.g. applet• See Tanenbaum & van Steen, section 3.5,

if interested– Remote façade + DTO helps here, too

Page 51: Communication essentials

04/22/23 Distributed Systems - Comp 655 51

Remote façade + DTO (again)

client server

PersonTO PersonTO Person+ name+ addr

client server

PersonTO PersonTO Person+ name

Address

befo

reaf

ter

Façade

Façade

Page 52: Communication essentials

04/22/23 Distributed Systems - Comp 655 52

I hate to wait …

Page 53: Communication essentials

04/22/23 Distributed Systems - Comp 655 53

RMI is usually synchronous

Page 54: Communication essentials

04/22/23 Distributed Systems - Comp 655 54

Asynchronous RPC (1)

a) interconnection between client and server in a traditional RPC

b) The interaction using asynchronous RPC

2-12

Page 55: Communication essentials

04/22/23 Distributed Systems - Comp 655 55

Asynchronous RPC (2)

2-13

Page 56: Communication essentials

04/22/23 Distributed Systems - Comp 655 56

Communication essentials• Communication patterns• Communication structure: OSI reference

model and TCP/IP coverage• Major middleware communication services

– RPC– RMI– http– I hate to wait …– Message passing

Page 57: Communication essentials

04/22/23 Distributed Systems - Comp 655 57

Looser coupling• In RPC and RMI, client and server

must be running at the same time• This coupling makes them

relatively sensitive to failures and remote-machine policies

• Message queuing enables more loosely-coupled communication

Page 58: Communication essentials

04/22/23 Distributed Systems - Comp 655 58

General Architecture of a Message-Queuing System (1)

Page 59: Communication essentials

04/22/23 Distributed Systems - Comp 655 59

Message-Queuing Primitives

Primitive MeaningPut Append a message to a specified queue

Get Block until the specified queue is nonempty, and remove the first message

Poll Check a specified queue for messages, and remove the first. Never block.

Notify Install a handler to be called when a message is put into the specified queue.

Page 60: Communication essentials

04/22/23 Distributed Systems - Comp 655 60

Consumer message queuing: email

sender’smachine

sender’semailserver

receiver’semailserver

receiver’smachine

host hostcommserver

commserver

Page 61: Communication essentials

04/22/23 Distributed Systems - Comp 655 61

Example: IBM MQSeries• General organization of IBM's MQSeries

message-queuing system.2-31

Page 62: Communication essentials

04/22/23 Distributed Systems - Comp 655 62

Message Brokers

• The general organization of a message broker in a message-queuing

• system.

2-30

Page 63: Communication essentials

04/22/23 Distributed Systems - Comp 655 63

Middleware communication summary

Common name PatternRPC Blocking, transient

request/responseRMI Blocking, transient

request/responsehttp (officially) non-blocking,

transient request/response

Asynchronous RPC

Non-blocking, transient request/response

Message queuing

Non-blocking, persistent producer/consumer

Page 64: Communication essentials

04/22/23 Distributed Systems - Comp 655 64

Bonus material

Page 65: Communication essentials

04/22/23 Distributed Systems - Comp 655 65

Implementing a Java RMI server and client

1. Define the remote interface2. Write a class that implements it3. Include that class in an application4. Compile5. Generate stub and skeleton with

rmic(not necessary with 1.5)

6. Start rmiregistry, if necessary

Page 66: Communication essentials

04/22/23 Distributed Systems - Comp 655 66

1. Define the Interfaceimport java.rmi.Remote;import java.rmi.RemoteException;

public interface HelloInterface extends Remote {String sayHello(String yourName) throws

RemoteException;String sayGoodbye(int howMany) throws

RemoteException;void ping() throws RemoteException;

}

Page 67: Communication essentials

04/22/23 Distributed Systems - Comp 655 67

2. Implement the interfacepublic class HelloServer extends UnicastRemoteObject implements HelloInterface {

HelloServer() throws RemoteException {super(Constants.serverPort);System.out.println(toString());

// RegisterRegistry reg =

LocateRegistry.getRegistry(Constants.rmiPort);reg.rebind(Constants.serverName, this);

}

Page 68: Communication essentials

04/22/23 Distributed Systems - Comp 655 68

2. Implement the interface, con’t

public void ping() throws RemoteException {System.out.println("I've been pinged");

}

public String sayGoodbye(int howMany) throws RemoteException {

StringBuffer sb = new StringBuffer();for(int i=0;i<howMany;i++) sb.append("goodbye ");return sb.toString();

}

public String sayHello(String yourName) throws RemoteException {

return "Hello, " + yourName;}

Page 69: Communication essentials

04/22/23 Distributed Systems - Comp 655 69

3. Include in an applicationpublic static void main(String[] args) throws

RemoteException {new HelloServer();

}

Page 70: Communication essentials

04/22/23 Distributed Systems - Comp 655 70

6. Start RMI Registry>> start rmiregistry

Page 71: Communication essentials

04/22/23 Distributed Systems - Comp 655 71

Implementation continued8. Assign the server a name9. Run the server, using that name10.Write a class that uses the

remote interface (by name)11.Compile12.Run13.Enjoy

Page 72: Communication essentials

04/22/23 Distributed Systems - Comp 655 72

8,9. Name the serverpublic class Constants {

public static final int rmiPort = 5555;public static final int serverPort = 43215;public static final String serverName =

"whatever";}

Page 73: Communication essentials

04/22/23 Distributed Systems - Comp 655 73

10. Write a clientpublic class HelloClient {

public static void main(String args[]) throws RemoteException, NotBoundException {

Registry reg = LocateRegistry.getRegistry(Constants.rmiPort);

HelloInterface hi = (HelloInterface) reg.lookup(Constants.serverName);

for( String name : args ) {System.out.println(hi.sayHello(name));

}System.out.println(hi.sayGoodbye(args.length));hi.ping();}

}

Page 74: Communication essentials

04/22/23 Distributed Systems - Comp 655 74

11. Run>> java HelloClient Alice Bob Carol DaveHello, AliceHello, BobHello, CarolHello, Davegoodbye goodbye goodbye goodbye

>>

Page 75: Communication essentials

04/22/23 Distributed Systems - Comp 655 75

RMI Resources• java.sun.com/j2se/1.5.0/docs/guide/

rmi/• java.sun.com/j2se/1.5.0/docs/guide/

rmi/faq.html(Java RMI and Object Serialization FAQ)

• java.sun.com/j2se/1.5.0/docs/tooldocs/windows/rmiregistry.html