分布式系统中的远程过程调用 (RPC) 协议

什么是 RPC?
远程过程调用(RPC) 是一个 进程间通信 RPC 是一种用于客户端-服务器应用程序的技术。RPC 的全称是远程过程调用 (Remote Process Call)。当计算机程序使一个过程或子例程在不同的地址空间中执行时,就会使用 RPC 机制。这种执行方式与普通的过程调用类似,但程序员无需显式地编写远程交互的细节代码。
该过程调用还管理底层传输协议,例如 UDP 和 TCP/IP,以便在程序之间传递消息数据。
RPC 的类型
三种类型的 RPC 为:
- 回调RPC
- 广播 RPC
- 批处理模式 RPC
回调RPC
这种类型的 RPC 支持参与进程之间的点对点 (P2P) 通信模式。它允许进程同时充当客户端和服务器。
回调RPC的功能:
- 处理远程处理的交互式应用程序问题。
- 向服务器提供客户端句柄。
- 回调会使客户端进程等待。
- 管理回调死锁。
- 它促进了参与过程之间的点对点模式。
广播 RPC
广播 RPC 是客户端向网络发出的请求,所有具有处理该请求方法的服务器都会对其进行处理。
广播RPC的功能:
- 允许您指定必须广播客户端的请求消息。
- 您可以声明广播端口。
- 它有助于减轻物理网络的负载。
批处理模式 RPC
批量模式 RPC 有助于将客户端的多个 RPC 请求排队到传输缓冲区中,然后通过网络将它们作为一个批次发送到服务器。
批处理模式 RPC 的功能:
- 它最大限度地减少了发送请求所涉及的开销,因为它通过网络一次性向服务器发送请求。
- 这种类型的 RPC 协议只适用于调用频率较低的应用。
- 它需要一个可靠的传输协议。
RPC的 Archi质地
RPC架构主要有五个程序组件:
- 客户
- 客户端存根
- RPC 运行时
- 服务器存根
- 服务器
RPC的 Archi质地
RPC 如何工作?
RPC 过程中会执行以下步骤:
步骤1) 客户端、客户端存根和 RPC 运行时的一个实例在客户端机器上执行。
步骤2) 客户端通过传递参数以常规方式启动客户端存根进程。客户端存根存储在客户端自身的地址空间中。它还会请求本地 RPC 运行时将请求发送到服务器存根。
步骤3) 在此阶段,用户通过常规的本地过程调用来访问 RPC。RPC 运行时负责管理客户端和服务器之间通过网络传输的消息。它还执行重传、确认、路由和加密等工作。
步骤4) 服务器流程完成后,执行返回到服务器存根,服务器存根将返回值打包(编组)成一条消息。然后,服务器存根将该消息发送回传输层。
步骤5) 在此步骤中,传输层将结果消息发送回客户端传输层,客户端传输层再将消息返回给客户端存根。
步骤6) 在此阶段,客户端存根对结果数据包中的返回参数进行解包,并将执行返回给调用者。
RPC 的特征
以下是 RPC 的基本特征:
- 被调用的程序位于另一个进程中,该进程很可能位于另一台机器上。
- 进程不共享地址空间。
- 参数仅通过值传递。
- RPC 在服务器进程环境中执行。
- 它不提供对调用程序环境的访问权限。
RPC 的功能
以下是 RPC 的重要特性:
- 简单的调用语法。
- 提供已知的语义。
- 提供定义明确的接口。
- 它可以在同一台机器上或不同机器上的进程之间进行通信。
RPC 的优点
以下是RPC的优点/好处:
- RPC 通过在高级语言中使用常规的过程调用来帮助客户端与服务器进行通信。
- RPC 以本地过程调用为模型,但被调用的过程很可能在不同的进程中执行,而且通常是在不同的计算机上执行。
- RPC 支持面向进程和面向线程的模型。
- RPC 将内部消息传递机制对用户隐藏起来。
- 它致力于提高许多协议层的性能。
- RPC 提供绝对值trac例如,网络通信的消息传递本质对用户来说是隐藏的。
- RPC既可用于分布式环境,也可用于本地环境。
- 重写和重新开发代码所需的工作量极小。
RPC 的缺点
以下是使用 RPC 的缺点/缺点:
- 远程过程调用仅允许按值传递参数;不允许使用指针(引用)值。
- 远程过程调用(和返回)时间——即开销——比本地过程要高得多。
- 该机制极易发生故障,因为它涉及通信系统、另一台机器和另一个流程。
- RPC 概念可以用不同的方式实现,因此没有单一的标准。
- 由于它主要基于交互,因此在硬件架构方面缺乏灵活性。
- 由于远程过程调用,该过程的成本增加了。

