❝在分布式计算,远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。
❞
1、进程间通信方式IPC
❝进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。
❞
1.1 RPC vs. LPC
有两种类型的IPC
- 本地过程调用:LPC, Local Procedure Call
- 远程过程调用:RPC, Remote Procedure Call
上面两个图非常直观地对比了LPC和RPC,LPC发生在同一个地址空间(或者称为同一块内存中),而RPC是发生在两个不同的地址空间(或者称为两个不同的系统),这里只是对RPC做一个最原始的画像。
1.2 RPC概述
- RPC是一种「进程间通信的模式」,程序分布在不同的地址空间里。如果在同一主机里,RPC可以通过不同的虚拟地址空间(即便使用相同的物理地址)进行通讯,而在不同的主机间,则通过不同的物理地址进行交互。许多技术(常常是不兼容)都是基于这种概念而实现的。
- 远程过程调用是一个「分布式计算的客户端-服务器架构」(Client/Server)的例子,它简单而又广受欢迎。远程过程调用总是由客户端对服务器发出一个执行若干过程请求,并用客户端提供的参数。执行结果将返回给客户端。由于存在各式各样的变体和细节差异,对应地派生了各式远程过程调用协议,而且它们并不互相兼容。
小结:RPC是一种进