1 distributed processing, messages, rpc, rmi, corba chapter 14 ”operating systems” w. stallings

Post on 12-Jan-2016

231 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Distributed Processing, Messages, RPC, RMI, CORBA

Chapter 14

”Operating Systems”

W. Stallings

2

Client/Server Terminology• Applications Programming Interface (API)

– A set of function and call programs that allow clients and servers to intercommunicate• Client

– A networked information requester, usually a PC or workstation, that can query database and/or other information from a server

• Middleware– A set of drivers, APIs, or other software that improves connectivity between a client

application and a server• Relational Database

– A database in which information access is limited to the selection of rows that satisfy all search criteria

• Server– A computer, usually a high-powered workstation, a minicomputer, or a mainframe, that

houses information for manipulation by networked clients• Structured Query Language (SQL)

– A language developed by IBM and standardized by ANSI for addressing, creating, updating, or querying relational databases

3

4

5

Client/Server Applications

• Bulk of applications software executes on the server

• Application logic is located at the client

• Presentation services in the client

6

Database Applications

• The server is a database server

• Interaction between client and server is in the form of transactions– the client makes a database request and receives a

database response

• Server is responsible for maintaining the database

7

8

Client/Server Database Usage

9

Client/Server Database Usage

10

Classes of Client/Server Applications

• Host-based processing– Not really client/server computing– Traditional mainframe environment– Client is just a dumb display

11

Classes of Client/Server Applications

• Server-based processing– Server does all the processing– Client provides a graphical user interface– Often called a ”thin client”

12

Classes of Client/Server Applications

• Client-based processing– All processing done at the client, “fat client”

– Data validation routines and other database logic functions are done at the server

– Need more network capacity

13

Classes of Client/Server Applications

• Cooperative processing– Both server and client handle processing

– Use strength of both server and client

– Complex to set up and maintain

14

Three-Tier Client/Server Architecture

• Application software distributed among three types of machines

– User machine• Thin client

– Middle-tier server• Gateway• Convert protocols• Merge/integrate results

from different data sources

– Backend server

15

File Cache Consistency

• File caches hold recently accessed file records to help network performance

• Multiple clients should have the same view of the file (cache consistency)

• Problems if one or more modify it• If one client using file, no problem – client can cache file, send data to

server later• Can lock portions of the file• Can tell other readers not to cache the file, writer sends all updates to

server

• File-locking prevents simultaneous access to a file, but degrades performance

16

Distributed Message Passing

• Messages are passed to communicate among processes.

• Send and receive messages as offered by raw network service

• OR

• remote procedure calls

17

Basic Message-Passing Primitives

18

Basic Message-Passing Primitives

• Used to implement client/server functions

• Send() – Send message– Give contents and destination– Use network protocol (such as TCP/IP) to

send it to the target system

• Receive() – Get a message– Give buffer and (optional) sender

19

Reliability Versus Unreliability

• Reliable: message-passing guarantees delivery if possible– Report to the sending process if message was

delivered or not (after retries)

• Unreliable: send the message into the communication network without reporting success or failure– Reduces complexity and overhead– Problem is left to the application

20

Blocking Versus Nonblocking

• Blocking– Send does not return control to the sending process until the

message has been transmitted (unreliable)– OR does not return control until an acknowledgment is

received (reliable)– Receive does not return until a message has been placed in

the allocated buffer

• Nonblocking– Process is not suspended as a result of issuing a Send or

Receive– Efficient and flexible as process can continue– Difficult to debug

21

Message Passing vs. Middleware

• But: Message passing introduces new problems and skills for an application programmer.– If you want to write distributed programs you must learn to

program network primitives send() and reveive()– Is the message sent? Is the message received? What if…?

• Hard to find programmers that understands both the application (business) and the network manipulation including pitfalls and solutions.– Expensive people

• Isolate application logic from network programming.– Less expensive project

22

Middleware

• Customers tend to focus on what applications they want, not servers

• Helps provide a standard interface to multivendor configurations– Client can decide on a middleware package, see who

supports it

• Helps make portable applications– Also may combine server information

• Adds another layer to the system• Example: SQL for database use

– Many vendors support SQL queries

23

24

25

Middleware Mechanisms

26

Middleware Mechanisms

27

Remote Procedure Calls

• Allow programs on different machines to interact using simple procedure call/return semantics

• Reasons:– Procedure call widely understood– Remote interfaces can be represented as named

operations with designated types – compiler can type-check

– Standardized interface is more portable

• Widely accepted and Standardized– Client and server modules can be moved among

computers and operating systems easily

28

29

Remote Procedure Calls

• Sample Syntax:– Proc_name(Send_Args,Recv_Args)

• Arguments usually passed by value

• Parameter Representation– Number/String formats may differ– Send values across network in a standard

form– Each node converts to/from local form

30

Client/Server Binding

• How does a client locate a server?• Fixed binding

– “hardcode” the server address in the client code

• Inflexible! What if server is moved?• Find and recompile programs! Unpractical.

• Dynamic binding– Introduce a “binder” that will handle

addressing information.

31

Client/Server Binding

• Dynamic binding– Introduce a “binder” that will handle addressing

information.– Client only has to know address of the binder.– Server intitialisation exports the server interface.

Registration: (server name, version, procedures, parameters, handle/address)

– Client stub will contact the binder and ask for the server info, import the info and handle/address.

• Now client can send message to server• Server can change location without problems.

32

Server interface example#include <header.h>

specification of abc_server, version 2.3;

long read(in char name[SIZE], out char[BUF_SIZE],

in long bytes; in long position);

long write(in char name[SIZE], in char[BUF_SIZE],

in long bytes; in long position);

int create(in char[SIZE], in int mode);

int delete(in char[SIZE]);

end;

33

Client/Server Binding

• The Binder interface– Register

• Name, version, handle/address, unique id

– Deregister• Name, version, unique id

– Lookup• Name, version.• Response: handle/address

34

Object-Oriented Mechanisms

• Clients and servers ship messages back and forth between objects

• A client sends a request to an object broker

• The broker calls the appropriate object and passes along any relevant data

• Common Object Request Broker Architecture (CORBA)

• Microsoft’s Component Object Model (COM)

35

Middleware Mechanisms

36

Middleware Mechanisms

37

Middleware Mechanisms

38

Object-Oriented Mechanisms• OMG (Object Mgmt Group) is defining the CORBA

standard. OMG is a group of companies.

• The object interface (methods and parametars) is defined by IDL (Interface Definition Language) specified in the CORBA standard.

• CORBA also defines the protocol of communications between the client, server and broker, the IIOP (Internet Inter-ORB Protocol). Among other things, how to register, deregister, lookup,…

• Java RMI also like to use IIOP.

39

OK, what now?• Coding smaller distributed application that will not be

moved or redesigned much. Sockets and send/receive.

• Coding larger distributed application that may be moved, changed into similar application for next situation. – Use RPC if coding C/C++– Use RMI if using Java

• Coding large distributed systems, that need large flexibitity, location movement, programming language interoperability (Java, C++,Cobol,..), survive system generations.– Select ”good” CORBA tool

40

OK, what now?• More on CORBA

– http://java.sun.com/developer/onlineTraining/corba/corba.html– http://java.sun.com/j2se/1.5.0/docs/guide/idl/index.html

• Java coding examples– See the contact.tar.gz that contains – CORBA server and client in Java– RMI server and client in Java– README.1st contain instructions for usage

• RPC info/examples– http://www.cprogramming.com/tutorial/rpc/remote_procedure_call_start.html– http://www.cprogramming.com/– http://www.codeproject.com/internet/rpcintro1.asp– http://www-128.ibm.com/developerworks/webservices/library/ws-xml-rpc/?ca=dgr-

lnxw03C++4services

top related