Download presentation
Published byBrandon Morrison Modified over 11 years ago
1
INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
Chapter 4: Client server Programming With RPC Rufin Soh
2
Content SUN RPC RPC fields of applications The remote program
Programs Identification The port mapper XDR Parameters exchanges Passing parameters Messages format Rpcgen Development with RPC RPC server types Remote PC vs Local PC Failures with RPC RPC lacks RMI Idempotent operations RPC fields of applications Distributed systems challenges Alternatives to DS challenges ? RPC Why RPC? RPC: definitions RPC working mode RPC model RPC architecture Execution mode Calling Mode A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
3
RPC fields of applications
Sales Engineering Accounting manufacturing Transport and delivery Cash and billing Inventories A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
4
Content (1) RPC possible fields of applications
Distributed systems challenges A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
5
Distributed systems challenges
Distributed systems are applications that run in different namespaces or hosting computers. Their Inherent problems are: Communication: Transmission of information between softwares. Heterogenous environment: Manage the diversity among hardwares and softwares that interact. Intégration Preserv the patrimony for legacy applications Interoperability Exchange data between distributed applications from different vendors. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
6
Content (2) RPC possible fields of applications
Distributed systems challenges Alternatives to DS challenges ? A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
7
Alternatives to DS challenges ?
To overcome the following challenges we need: A normalized network infrastructure OSI, TCP IP model. Normalized communication protocols IP (for packets transport), TCP IP connexions(for streaming e.g. sockets). HTTP, FTP, CGI, at the application layer. Normalized mechanism for components (applications) interaction Remote procedure call is the fundamental paradigm for distributed programming as well as procedure call is for structured programming. Normalized conversion functions All this implemented on different hardware and software platforms, with the illusion of a unique platform The distributed platform: the middleware, the RPC middleware. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
8
Content (3) RPC possible fields of applications
Distributed systems challenges Alternatives to DS challenges ? RPC Why RPC? RPC: definitions RPC working mode RPC model RPC architecture Execution mode Calling Mode A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
9
Why RPC? Advantages of RPC:
The goal is to inherit as far as possible the conventional procedure call semantic in a different environment. Encapsulates the communication details, making no difference between local and a remote calls (or nearly…). Widely used by programmers. Lets you achieve nearly all the following distributed systems challenges without using many different development tools. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
10
Introduction to RPC Remote Procedure Call (RPC) : is the technology used to execute procedures on remote environments. A distributed application designer may work following two approaches: Communication oriented design: Define the application protocol(messages format and syntax ), that interwork between the client and the server Design the client and server components and describe how they react to input messages and emit output. e.g: HTTP, FTP. Application oriented design: Build a mono-computer conventional application. Then divide it into many modules that will run on different machines. e.g: RPC. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
11
RPC working mode Client Request The call is detected as an RPC call.
On A, the Call parameters are passed and placed in a data structure (Marshalling) waiting to be transferred on the network An RPC identifier is generated for this Call A timer is initialized at A and set Data are transferred on the network to B, through the Operating System Caller program Call RPC Service A E Low level protocols N T W O R K B D Called procedure return C Caller System (Client) Called System (Server) 1 5 Marshalling RPC identifier Timer A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
12
RPC working mode (2) Server process and response
Prameters are extracted from the network buffer in a useful format(Unmarshalling) for Call to be made RPC identifier is recorded The Call is processed at C and return to the caller at D The results to return are placed in a special data structure (Marshalling) waiting for transfer The timer is initialized Caller program Call RPC Service A E Low level protocols N T W O R K B D Called procedure return C Caller System (Client) Called System (Server) 1 5 6 Unmarshalling 7 Record RPC identifier 8 9 Marshalling 10 Set Timer A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
13
RPC working mode (3) Client ACK
Data are sent on the network (through the server operating system APIs) and transferred to E Results are extracted from the network buffer in a data structure (Unmarshalling) The Client-side timer is desactivated An acknowledgement is sent to the server with the corresponding RPC identifier. The server side timer is desactivated on D Caller program Call RPC Service A E Low level protocols N T W O R K B D Called procedure return C Caller System (Client) Called System (Server) 1 5 12 Unmarshalling 13 Desactivate timer 8 15 Desactivate Timer 11 14 A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
14
RPC model The RPC model uses an «application oriented design» approach that enables many procedures to run on remote sites. The remote procedure call is the client request, and the procedure return is the server response. A procedure call follows a synchronous working mode(blocking tasks): the next instruction after the procedure call can not be executed before the called procedure ends. Procedure A (server) Procedure B (server) Main Program procA() procB() return return return Machine 1 Network Machine 2 Machine 3 Network A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
15
RPC architecture Client RPC Server Server stub Client stub Marshalling
Unmarshalling SendRequest() ReceiveResponse() Application Procedure call return SendResponse() ReceiveRequest() Run procedure Client stub Server stub Client RPC Server A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
16
Execution mode How to Pass parameters :
per value:initialize a procedure local variable per reference: use a pointer, pointing on the parameter variable by copy of reference: a copy at the call and a copy at the return Procedures calls are made on the following model: local variables main() SP bytes buff fd Return adress read() N = read(fd,buff,nbytes) A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
17
Calling Mode Client Server Call Return Return Call Client Server Stub
Marshalling parameters Unmarshalling results Marshalling results Unmarshalling parameters core core The machine hosting the procedure on the network remains transparent to the client A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
18
Content (4) SUN RPC The remote program Programs Identification
RPC possible fields of applications Distributed systems challenges Alternatives to DS challenges ? RPC SUN RPC The remote program Programs Identification The port mapper XDR Parameters exchanges Passing parameters Messages format rpcgen A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
19
SUN RPC Sun Microsystems has developed an RPC technology named the « Sun RPC ». It is Todays de facto standard. NFS is built on top RPC. Sun RPC defines: The messages format that the caller(client) transmit to start the remote procedure on the server. The parameters format The results format. UDP and TCP (OSI layer …?) protocols are used for communication and XDR presentation protcol (TCP-IP layer …? Give the answer before continuing) enables RPC to work in an heterogenous environment. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
20
The remote program Databases insert procedure delete procedure
(!!! not procedure) The remote program is the logical software or unit, running on a remote machine(??? A machine different from the one in front of you). A remote program is a server with its own procedures and its own data. E.g a Database server insert procedure delete procedure lookup procedure Databases Every remote program is identified by a unique 32-bits integer used by the caller. A remote program procedures are sequecially identified by the integers 1,2,…,N A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
21
The remote program (2) RPC communication mode « at least one transmission»: If a remote procedure call running on UDP does not return a value, the caller couldn’t know if the procedure has been executed or if the answer is lost (why?… because UDP is best effort, it never promises nothing as compare to who??? Its brother TCP). Futhermore, nothing tells you that the procedure has not been executed many times, due to duplicated requests. The communication mode is a client sever mode(Blocking or not???). The caller specified the server address(IP, port). But which server? Of course the one hosting the remote program. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
22
The remote program (3) A port number is dynamically allocated to any remote program, and the corresponding RPC client is notified: Every computer that offers RPC programs hosts a dynamic port association service: The port mapper. When an RPC program starts on the server, it dynamically allocate a local port number, then inform the port mapper on the hosting machine, of the RPC program identifier\port number association. The port mapper will maintains a databases table of the different associations. Any client who want to contact an RPC program on a M machine will first ask for its associated communication port to the M machine’s port mapper. The port mapper always runs on communication port 111. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
23
Programs Identification
A remote procedure is identified by the trio (prog, vers,proc) Prog identifies the remote program Vers is the version (of what??? Of prog…of course) Proc is the procedure (which one ??? The one you may want to call if you are an RPC client). Address groups for remote programs: Name identifier description portmap 100000 port mapper rstat 100001 rstat, rup, perfmeter ruserd 100002 remote users nfs 100003 Network File System ypserv 100004 Yellow pages (NIS) mountd 100005 mount, showmount dbxd 100006 debugger ypbind 100007 NIS binder etherstatd 100010 Ethernet sniffer pcnfs 150001 NFS for PC A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
24
The port mapper The program transmits the trio (ident, RPC, port)
RPC server Program Port Mapper the trio (ident, RPC, port) socket allocated to the RPC program Port Mapper’s socket = 111 A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
25
XDR RPC messages format length is generally variable. Messages fields are specified in XDR (eXternal Data Representation) language. XDR : Data representation as defined by SUN Microsystems Defines how data are going to be routed on the network Enables data exchange between computers with differents internal data representations. E.g. a 32 bits integer with a value of 260 will have the 2 following representations: 0014 for a « big endian » type machines, that is a machine with lower addresses on MSB and higher addresses on LSB. 4100 for « little endian » type machines. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
26
XDR (2) XDR data encoding format only contains represented data without any information on the data type (as compared to ASN1). If an application work with 32-bits integer, the encoding result will be stored exactly on 32 bits with nothing to tell you its type (if it is an integer or …). This encoding scheme implied that both the client and the server must agree on the exact data format to be exchanged. An XDR conversion fonctions library enables applications designers to use a standard software on any type of computer. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
27
Parameters exchanges n=sum(4,7) sum(I,j) { int I, j; return (i+j) ; } sum sum 4 4 7 7 core core Communication between the client and the server is done through a message containing the name of the procedure, and grouped parameters (marshalling ) A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
28
Passing parameters For a per value parameters passing, the parameters copies are sent in the message. For a per reference parameters passing (e.g. a vector or table in C programming language), there are many solutions among which: Tables may be sent as copies of their values. So the server will replace each of those values with a pointer, work with the pointer and return the table to the client who will use the initial pointer (copy/restore). A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
29
Messages format Message ID Message type RPC Version number
REMOTE Program REMOTE program version REMOTE Procedure Authentication Procedure arguments The format is of variable length, because the number of arguments in the called procedure can not be pre determined. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
30
rpcgen Rpcgen is a software generator tool, generating:
The client stub The server skeleton XDR procedures for results and parameters A file containing common definitions SUN provides a complete methodology with: Conversion routines for simple types XDR routines for formatting complex types (tables and structures), used in RPC message definition. Run time RPC functions that makes possible a remote procedure call by a program, a service record on the port mapper, dispatching a request for procedure call to the corresponding procedure inside the remote program. Example of run time function is A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
31
rpcgen (1) Client application Client interface Q_clnt.c Q.x compiler
Q.h Q.xdr.c Q.svc.c compiler Client application Client interface client remote procedures Server interface server A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
32
rpcgen (2) Rpcgen is a procompiler which generates many files from a synthetic description of a program in an “Q.x” file The description language used resemble C The resulting files are: A file to include into both server and clients codes (Q.h) A server code skeletton (Q_svc.c) Procedures that actually handle client remote calls (Q_clnt.c) XDR filters (Q_xdr.c) So the programmer will only have to write two files: A file containing the implementations of the procedures provided by the server, that will complete the “Q_svc.c” file which already contains the main function. The client code that will be the “Q_clnt.c”, and in which the programmer will add a main method. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
33
rpcgen (3) The methodology consist of developing a distributed application exactly as if you was developing a local conventional application, then defines the procedures which are going to be ran remotely. This decoupling implied adding codes between the call of the procedure and the remote procedure itself: On the Client side the new code must: Encode parameters Create an RPC CALL message Transmit this message to the remote program Wait for the results and decodes them according to the internal representation of the local machine On the server side the new code must: Accept an RPC request Decodes parameters according to the internal representation of the local machine Dispatch the message towards the adequat procedure. Build the response and encodes it. Transmit the encoded message to the client A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
34
rpcgen (4) Proc A1 Proc A2 Dispatcher Proc B1 Proc B2
The stubs procedures replace the following conventionnal procedures: Calling procedure on the client side Procedure being called on the server side Proc A1 Proc A2 Dispatcher client stub for B2 server stub for B1 server stub for B2 client stub for B2 Proc B1 Proc B2 The « stub » procedure is exactly named as the original calling procedure. That helps to keep the same source in the distributed version. e.g. the « stub » procedure for B2 is named B2, and the « stub » procedure for B1 is named B1. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
35
rpcgen (5) Rpcgen splits every « stub » in two parts:
An entity that is common to all the applications, and which use to build the client server communication. An entity belonging to the application, providing an interface with the application. This separation is justified because rpcgen uses « communication package » procedure call convention whereas it allows the user to remote procedures call conventions. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
36
rpcgen (6) Proc A Proc B server comm. client Interface Server
A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
37
Content (5) Development with RPC RPC server types
RPC possible fields of applications Distributed systems challenges Alternatives to DS challenges ? RPC SUN RPC Development with RPC RPC server types Remote PC vs Local PC Failures with RPC RPC lacks RMI Idempotent operations A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
38
Development with RPC interface Definition Client Stub Server Stub
Header file Client Code Server Code Client Objet Client Stub Objet Server Objet Server Stub Objet Librairy CC Linker rpcgen Client Server A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
39
RPC server types Two types of RPC servers : Stateful:
The server keeps informations on the different clients transactions. Those informations may serv to repeat operations that have been already been executed once. Stateless: There is no memory of information on client operations. The client is responsible of that, it could makes it operation idempotent itself. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
40
Remote PC vs local PC Differences between remote procedures and local procedures calls are: The waist of time in the network (network delay) may generate very important processing delay. A remote procedure call may contain pointer types parameters, not easy to handle as on local procedure call. Access to Input and output are denied to remote procedures, thus they can not use local peripherals (e.g. unable to write error messages) A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
41
Failures with RPC Many failures types may occur:
The client is unable to locate the server The server is not availaible The Stubs versions are not adequat The client request towards the server is lost: After a timeout, the client retransmits the same request The server response from the server to the client is lost: The client will retransmit the same request. No problem if it is an idempotent operation A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
42
Failures with RPC (2) The server is down after receiving the client request (3 cases): At least once: When the machine restarts, retransmits the requests many times until the response arrives. At most once: Abandon the operation. The operation is done either once or never. Exactly once: Keep in memory the state of the operations that have been executed. Not easy to implement. Req Receives Executes Respond Req Req Receives Executes Failure Receives Failure Rep A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
43
RPC lacks RPC lacks: RPC is for structured programming
Parameters and return values are primitives types Depends on the server localisation No remote pointer Evolutions CORBA Multilanguage, multi-platform (architecture+OS), MuliVendors (Chapter 11) Java RMI mono-language : Java, multiplatform : work on top JVM (Chapter 9) DCOM / Object RPC multi-languages, mainly Win32 platform, il existe des There are some (non-MicroSoft) implementations for Unix, but proprietaries SOAP (Simple Access Object Protocol) multi-languages, multi-platform Uses XML (with SOAP DTD) in request and response Messages are transported on HTTP A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
44
RMI: Remote Method Invocation
The Object Oriented Programming RPC is Java Remote Method Invocation (RMI). It is an approach for executing code on other machines across a network. You can send a message to the remote object and get a result as if the object lived on your local machine. In Chapter 9 we will walk you through the steps necessary to create your own RMI objects. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
45
Idempotent operations
Idempotent operations are the one that can be repeated without side effects: Idempotent operation: Read the 1024 first records of a file Non Idempotent operation: Transfer an amount of $2000 from an account to another. A.Obaid-Wilfried Probst – Rufin Soh INE4481 DISTRIBUTED DATABASES & CLIENT-SERVER ARCHITECTURES
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.