burningcodes 中科大软件学院 原创内容转载请注明出处

1.什么是RPC

RPC(Remote Procedure Call,远程过程调用)是由 James White(1976) 提出的一种编程方式,现在已经广泛用在各种网络应用(比如分布式计算等)中。RPC允许客户端应用程序通过一些函数调用来实现一些功能,但是这些函数的实现是在远程服务器上,客户端发起请求,服务器端返回结果,看起来就像一个本地调用。

RPC和本地过程调用的最大区别就是调用时的“寻址”,在本地过程调用中,函数地址由编译器确定(静态链接)或者在运行时通过延迟绑定确定(动态链接),RPC调用的寻址过程类似于动态链接,也需要一个“中间层”来确定最终的地址,不过这个地址由服务器的ip和端口号确定,过程大致如下:

rpc1

RPC是基于客户服务端的C/S架构,但是为了能模拟本地过程调用,将底层的细节做了封装,所以在应用层上看起来就像普通的函数调用。

2.为什么需要RPC

在普通C/S架构的应用中,需要通过socket编程来完成客户及服务端的相互通信,但这个过程有以下几个缺点:

  • 需要考虑及设计应用层协议
  • 编程过程繁琐
  • 需要自定义解析应用层数据包的代码

而RPC就是解决以上几个问题的方法之一,RPC使得编程人员只需专注于系统的核心代码,而无需考虑繁琐的网络通信,可以像调用普通函数那样调用远程服务。在RFC文档中详细介绍了 RPC协议

3.RPC有哪些应用

3.1 分布式操作系统

进程间通讯进程间通讯是操作系统必须提供的基本设施之一,分布式操作系统必须提供分布于不同结点机上进程间的通讯机制,RPC是实现消息传送模式的分布式进程间通讯的手段之一。

3.2 构造分布式计算的软件环境

由于分布式软件环境本身地理上的分布性它的各个组成成份之问存在大量的交互和通讯,RPC是其基本的实现方法之一。ONC+和DCE两个流行的分式布计算软件环境都是使用RPC构造的,其它一些分布式软件环境也采用了RPC方式。

3.3 远程数据库服务

在分布式数据库服务中,数据库一般驻存在服务器上,客户机通过远程数据库服务功能访问数据库服务器。

3.4 分布式应用程序设计

RPC机制与RPC工具为分布式应用程序设计提供了手段和方便,用户可以无需知道网络结构和协议细节而直接使用RPC工具设计分布式应用程序。

3.5 分布式程序的调试

RPC可用于分布式程序的调试。使用反RPC使服务器成为客户并向它的客户进程发出RPC,可以调试分布式程序。例如.在服务器上运行一个远端调试程序,它不断接收客户端的RPC,当遇到一个调试程序断点时,它向客户机发回一个RPC,通知断点已经到达,这也是RPC用于进程通讯的例子。

4.参考文献

http://wiki.dzsc.com/info/8466.html

http://zhoulifa.bokee.com/6128714.html

在Linux下编制RPC程序

The design of a reliable remote procedure call mechanism

http://blog.csdn.net/mindfloating/article/details/39474123

http://blog.csdn.net/l0605020112/article/details/16114237

 

观看更多有关 的文章?

*

+
跳转到评论