参考维基百科中的定义,RPC全称为Remote Procedure Call,是一种通信协议,该协议允许程序调用另一计算机的子程序,而无须为这个交互编写额外的代码。即程序员调用本地函数和RPC函数,方法基本相同。
做为RPC概念的提出者,Nelson在Implementing Remote Procedure Calls中提出了RPC系统的几个目标:
- 简单
RPC应该和本地函数调用一样简单,这样分布式计算会更加容易。 - 高效
- 安全
考虑到编程语言不一定提供了能表示远程地址的方法,即使提供了远程地址的表示方法,不同计算机间使用共享地址空间的代价也可能大于实际收益,因此RPC舍弃了在不同计算机之前仿真共享地址空间。另外,为保证RPC尽可能的同本地方法调用,一些重要的分布式计算特性,如timeout ,在设计RPC时会被排除。
Nelson指出实现RPC的程序包括如下5个理论部分:
- user
- user-stub
- RPCRuntime
- server-stub
- server
整个结构如图: