nfs-rpc

RPC简介,及与web service的对比

*爱你&永不变心* 提交于 2019-12-05 04:18:50
  最近分析的这个系统,逻辑架构中有一层是RPC interface。之前对RPC不熟悉,就上网搜索了一下资料,在此总结一下:   RPC是Remote Procedure Calling,远程过程调用的缩写。并不是“远程进程调用”——Remote Process Calling。RPC总的来说是一个Client/Server的结构,提供服务的一方称为Server,消费服务的一方称为Client。   下图是本地过程调用,所有的过程都在本地服务器上,依次调用即可:   下图则是所谓的远程过程调用,需要在Client和Server中交互:   因此,两种调用方式,会产生什么区别呢? 网络传输的开销和编程的额外复杂性。 本地过程调用中,过程在同一块物理内存中,因此就可以传递指针了。而远程过程调用则不能,因为远程过程与调用者运行在完全不同的地址空间中。 远程过程不能共享调用者的环境,所以它就无法直接访问调用者的I/O和操作系统API。   简单来说,就是远程过程调用会比本地过程调用复杂。除了性能的额外开销之外,编程也复杂得多。   至少可以想到,交互双方需要能够封装数据结构,理解协议,处理连接等等,确实是很麻烦的。可能一个很简单的调用,却需要做很多的编程工作。所以,为了简化RPC调用的编程,就提出了一个RPC的标准模型。   下面是RPC的原理草图:   可以看到