RPC 模型

远程过程调用 (RPC) 模型类似于本地过程调用模型。 在本地模型中,调用者将自变量放置到指定位置 (例如,结果寄存器) 中的过程。

然后,调用者将控制权移交给过程。 调用者最终将重新获得控制权,抽取过程的结果并继续执行。

RPC 以类似的方式工作,其中一个控制线程以逻辑方式通过两个进程: 调用者进程和服务器进程。 首先,调用者进程向服务器进程发送包含过程参数的调用消息。 然后,调用者进程等待应答消息 (块)。 接下来,服务器端的一个进程,在调用消息到达之前处于休眠状态,抽取过程参数,计算结果,并发送应答消息。 服务器等待下一条调用消息。 最后,调用者上的一个进程接收应答消息,抽取过程的结果,调用者将恢复执行。

"远程过程调用流" 图 (图 1) 说明了 RPC 范例。

图 1。 远程过程调用流
此图显示左侧的客户机进程,其中包含 (从上到下列出) 客户机,客户机存根和 RPC 运行时库。 右侧的服务器进程包含以下内容 (从上到下列出): 管理器过程,服务器存根和 RPC 运行时库。 这些调用可以从客户机到管理器过程,通过明显的流并在接口上方。 来自客户机的调用还可以通过到客户机存根的接口。 从客户机存根中,调用可以传递到客户机进程中的 RPC 运行时库。 调用可以作为网络消息传输到服务器进程中的库。 服务器进程中的调用可以从 RPC 运行时库转至服务器存根,也可以从服务器存根转至管理器过程。 请注意,前面提到的每个调用都有相反的返回。

在 RPC 模型中,只有两个进程中的一个在任何给定时间处于活动状态。 此外,此模型只是一个示例。 RPC 协议对实现的并行模型没有限制,而其他协议是可能的。 例如,实现可以选择异步远程过程调用,以便客户机可以在等待来自服务器的应答时继续工作。 此外,服务器可以创建用于处理入局请求的任务,从而保持自由接收其他请求。