6 3ULQFLSOHV RI 2SHUDWLQJ 6 VWHPV DOO Lecture 14 Remote Procedure Call Geoffrey M Voelker K LV 53 QWHUHVWLQJ Remote Procedure Call RPC is the most common means for remote communication It is used both by operating systems and applications NFS is implemented as a set of RPCs DCOM CORBA Java RMI etc are all basically just RPC Someday soon you will most likely have to write an application that uses remote communication or you already have You will most likely use some form of RPC for that remote communication So it s good to know how all this RPC stuff works Debunking the magic November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 2 1 OLHQWV DQG 6HUYHUV The prevalent model for structuring distributed computation is the client server paradigm A server is a program or collection of programs that provide a service file server name service etc The server may exist on one or more nodes Often the node is called the server too which is confusing A client is a program that uses the service A client first binds to the server locates it and establishes a connection to it A client then sends requests with data to perform actions and the servers sends responses also with data November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 3 0HVVDJHV Initially with network programming people hand coded messages to send requests and responses Hand coding messages gets tiresome Need to worry about message formats Have to pack and unpack data from messages Servers have to decode and dispatch messages to handlers Messages are often asynchronous Messages are not a very natural programming model Could encapsulate messaging into a library Just invoke library routines to send a message Which leads us to RPC November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 4 2 3URFHGXUH DOOV Procedure calls are a more natural way to communicate Idea Have servers export a set of procedures that can be called by client programs Every language supports them Semantics are well defined and understood Natural for programmers to use Similar to module interfaces class definitions etc Clients just do a procedure call as it they were directly linked with the server Under the covers the procedure call is converted into a message exchange with the server November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 5 5HPRWH 3URFHGXUH DOOV So we would like to use procedure call as a model for distributed remote communication Lots of issues How do we make this invisible to the programmer What are the semantics of parameter passing How do we bind locate connect to servers How do we support heterogeneity OS arch language How do we make it perform well November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 6 3 53 0RGHO A server defines the server s interface using an interface definition language IDL The IDL specifies the names parameters and types for all client callable server procedures A stub compiler reads the IDL and produces two stub procedures for each server procedure client and server The server programmer implements the server procedures and links them with the server side stubs The client programmer implements the client program and links it with the client side stubs The stubs are responsible for managing all details of the remote communication between client and server November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 7 53 6WXEV A client side stub is a procedure that looks to the client as if it were a callable server procedure A server side stub looks to the server as if a client called it The client program thinks it is calling the server The server program thinks it is called by the client In fact it s calling the client stub In fact it s called by the server stub The stubs send messages to each other to make the RPC happen transparently November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 8 4 53 DPSOH Server Interface int Add int x int y Client Program Server Program int Add int x int y sum server Add 3 4 return x y If the server were just a library then Add would just be a procedure call November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 9 53 DPSOH DOO Client Program Server Program sum server Add 3 4 int Add int x int y Client Stub Server Stub Int Add int x int y Add Stub Message Alloc message buffer Remove x y from buffer Mark as Add call r Add x y Store x y into buffer Send message RPC Runtime RPC Runtime Receive message Send message to server Dispatch call Add Stub November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 10 5 53 DPSOH 5HWXUQ Client Program Server Program sum server Add 3 4 int Add int x int y Client Stub Server Stub Int Add int x int y Add Stub Message Create send message Remove x y from buffer Remove r from reply r Add x y return r Store r in buffer RPC Runtime RPC Runtime Return reply to stub Send reply to client November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 11 53 0DUVKDOOLQJ Marshalling is the packing of procedure parameters into a message packet The RPC stubs call type specific procedures to marshal or unmarshal the parameters to a call The client stub marshals the parameters into a message The server stub unmarshals parameters from the message and uses them to call the server procedure On return The server stub marshals the return parameters The client stub unmarshals return parameters and returns them to the client program November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 12 6 53 LQGLQJ Binding is the process of connecting the client to the server The server when it starts up exports its interface The client before issuing any calls imports the server Identifies itself to a network name server Tells RPC runtime its alive and ready to accept calls RPC runtime uses the name server to find the location of a server and establish a connection The import and export operations are explicit in the server and client programs Breakdown of transparency November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 13 53 7UDQVSDUHQF One goal of RPC is to be as transparent as possible Make remote procedure calls look like local procedure calls We have seen that binding breaks transparency What else Failures remote nodes networks can fail in more ways than with local procedure calls Performance remote communication is inherently slower than local communication Need extra support to handle failures well If program is performance sensitive could be a problem November 19 2001 CSE 120 Lecture 14 Remote Procedure Call 14 7 53 6XPPDU RPC is the most common model for
View Full Document
Unlocking...