什么是RPC
RPC
是进程间通信(IPC
)的一种形式,它基于本地程序调用的扩展概念,调用程序和被调用的程序不需要存在于相同的地址空间中。因为不同的进程具有不同的地址空间。如果在同一主机上,即使物理地址空间相同,他们具有不同的虚拟地址空间。而如果他们在不同的主机上,则物理地址空间不同。
远程过程调用和本地调用之间的一个区别是远程调用可能由于不可预测的网络问题而失败,此外,调用者通常必须处理在不知道远程程序是否可用情况下的失败问题。
RPC如何工作
RPC是一种请求-响应协议,RPC由客户端启动,客户端向已知的远程服务器发送请求消息,以使用提供的参数执行指定的过程。远程服务器向客户端发送响应,应用程序继续其进程。当服务器正在处理调用时,客户端被阻塞(它等待服务器在恢复执行之前完成处理),除非客户端向服务器发送异步请求。
下图是两个联网系统之间的RPC调用期间所进行的活动流。客户端进行远程过程调用,向服务器发送请求并等待。线程被阻塞直到收到响应或请求超时。当请求到达时,服务器调用要请求的服务例程,并将响应发送给客户端。RPC调用完成后,客户端程序继续,RPC专门支持网络应用程序。
RPC应用开发
例如假设我们无法从本地计算机访问数据库,需要在远程计算机上的个人数据库中查找。
我们可以使用UNIX来运行远程shell,并以这种方式执行命令。但是这种方