Communication essentials

Post on 09-Feb-2016

62 views 0 download

Tags:

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

Transcript of 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

04/22/23 Distributed Systems - Comp 655 2

Communication patterns

Producer Consumer

query

response

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

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

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

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

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, …

04/22/23 Distributed Systems - Comp 655 8

Middleware Protocols

2-5RPCRMI

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

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

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)

04/22/23 Distributed Systems - Comp 655 12

Ordinary procedure callprocess

caller

callee(callee is atanh)

0.98 2.3

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

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

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)

04/22/23 Distributed Systems - Comp 655 16

Warning: passing parameters and results

can be tricky

04/22/23 Distributed Systems - Comp 655 17

Passing Value Parameters (1)

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

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.

04/22/23 Distributed Systems - Comp 655 20

Interface definitionInterface definitions are critical

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

middleware

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

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

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

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

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

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

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

04/22/23 Distributed Systems - Comp 655 28

Distributed Objects

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

2-16

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.

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?

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

04/22/23 Distributed Systems - Comp 655 32

Parameter Passing in RMI

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

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

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

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

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

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

ing

an H

TTP

requ

est i

n Ja

va

04/22/23 Distributed Systems - Comp 655 39

Server side: HttpServlet

04/22/23 Distributed Systems - Comp 655 40

Servlet container

client

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

your Servlet

DB

Servletbase classrequest

response

whatever

04/22/23 Distributed Systems - Comp 655 41

Smudging the transparency …

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

configuration management

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);…

04/22/23 Distributed Systems - Comp 655 43

Network-unfriendlyclient server

domainobject

domainobject

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

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

04/22/23 Distributed Systems - Comp 655 46

Using Remote Façade + DTO

client server

DTO DTOdomainobject

DTO2 DTO2

Façade

domainobject

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);…

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

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

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

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

04/22/23 Distributed Systems - Comp 655 52

I hate to wait …

04/22/23 Distributed Systems - Comp 655 53

RMI is usually synchronous

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

04/22/23 Distributed Systems - Comp 655 55

Asynchronous RPC (2)

2-13

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

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

04/22/23 Distributed Systems - Comp 655 58

General Architecture of a Message-Queuing System (1)

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.

04/22/23 Distributed Systems - Comp 655 60

Consumer message queuing: email

sender’smachine

sender’semailserver

receiver’semailserver

receiver’smachine

host hostcommserver

commserver

04/22/23 Distributed Systems - Comp 655 61

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

message-queuing system.2-31

04/22/23 Distributed Systems - Comp 655 62

Message Brokers

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

• system.

2-30

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

04/22/23 Distributed Systems - Comp 655 64

Bonus material

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

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;

}

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);

}

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;}

04/22/23 Distributed Systems - Comp 655 69

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

RemoteException {new HelloServer();

}

04/22/23 Distributed Systems - Comp 655 70

6. Start RMI Registry>> start rmiregistry

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

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";}

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();}

}

04/22/23 Distributed Systems - Comp 655 74

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

>>

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