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