Presentation is loading. Please wait.

Presentation is loading. Please wait.

Implementing Remote Procedure Calls Andrew Birrell and Bruce Nelson Presented by Kai Cong.

Similar presentations


Presentation on theme: "Implementing Remote Procedure Calls Andrew Birrell and Bruce Nelson Presented by Kai Cong."— Presentation transcript:

1 Implementing Remote Procedure Calls Andrew Birrell and Bruce Nelson Presented by Kai Cong

2 Conventional Procedure Calls main proc 1 proc 5 proc 2 proc 3 proc 4 proc 6 proc 7 proc 8 Within a program On a single computer!!!

3 Extension of the Procedural Model main proc 1 proc 5 proc 2 proc 3 proc 4 proc 6 proc 7 proc 8 computer 1 computer 2 Across a network between programs On different computers!!!

4 4 Remote Procedure Call (RPC) ClientServer Request Reply Computing Blocked

5 RPC – How it works client procedure call client stub locate (un)marshal (de)serialize send (receive) server procedure server stub (un)marshal (de)serialize receive (send) client processserver process RPC Runtime module

6 Issues Binding Passing data Implementation Exceptions RPC systems

7 The binding operation is to bind an importer of an interface to an exporter of an interface. After binding, calls made by the importer invoke procedures implemented by the remote exporter. static binding vs dynamic binding Binding

8 static binding(not presented by the paper) –hard coded stub –simple –efficient –not flexible –stub recompilation is necessary if the location of the server changes –use of redundant servers is not possible Static Binding

9 dynamic binding –Interface: type and instance –Database load balancing –flexible –redundant servers is possible Dynamic Binding

10 client procedure call client stub bind (un)marshal (de)serialize find send receive RPC Runtime module server procedure server stub register (un)marshal (de)serialize receive send client processserver process Database 2 4 56 7 1 3 Dynamic Binding RPC Runtime module 7

11 Issues Binding Passing data Implementation Exceptions RPC systems

12 Passing Data Can't use the stack! Can't use shared memory! Generally use message passing

13 Passing data Build a message that includes: Who and what's being called Identity of the caller Data values in known byte order Using an intermediate data representation

14 Issues Binding Passing data Implementation Exceptions RPC systems

15 Implementation

16 Function prototype is (almost) all that's needed to build the client stub –Also need binding information Function prototype is (almost) all that's needed to build server stub –Also need method to wait for message

17 Implementation Stub compiler –Generates stubs for client and server –Language dependent –Compile into machine-independent format Transport protocol –PUP, XML, SOAP, DCOM, CORBA, …

18 Implementation Clients Threaded Servers Event Driven

19 Issues Binding Passing data Implementation Exceptions RPC systems

20 What can happen in "normal" procedures ? –Procedure generates an exception –Procedure infinite loops –Procedure generates wrong results Exceptions

21 What can happen in "remote" procedures? –Client stub generates an exception –Transmission failure  knowable failure  unknowable failure –Remote procedure generates an exception –Remote procedure infinite loops –Remote procedure generates wrong results

22 Issues Binding Passing data Implementation Exceptions RPC systems

23 RPC Systems  Sun RPC  DCE RPC  DCOM  CORBA  Java RMI  XML RPC, SOAP/.NET, AJAX, REST  Protocol Buffers (Google)  Thrift (Facebook)

24 Conclusion Remote Procedure Call should look and feel like local call Remote Procedure Call should be independent of where it executes Remote Procedure Call should be "efficient“


Download ppt "Implementing Remote Procedure Calls Andrew Birrell and Bruce Nelson Presented by Kai Cong."

Similar presentations


Ads by Google