分布式系统中的远程过程调用 (RPC) 协议
什么是RPC?
远程过程调用 (RPC) 是一种进程间通信技术。RPC 的完整形式是远程过程调用。它用于客户端-服务器应用程序。当计算机程序引起一个过程或子程序在不同的地址空间执行时,使用 RPC 机制,这被编码为一个普通的过程调用,而无需程序员显式编码远程交互的细节。
此过程调用还管理底层传输协议,如用户数据报协议、传输控制协议/互联网协议等。它用于在程序之间传输消息数据。
RPC 类型
RPC 的三种类型是
- 回调 RPC
- 广播 RPC
- 批处理 RPC
回调 RPC
这种 RPC 类型在参与进程之间实现了 P2P 范式。它有助于进程同时充当客户端和服务提供者。
回调 RPC 的功能
- 远程处理交互式应用程序问题
- 提供服务器与客户端句柄
- 回调使客户端进程等待
- 管理回调死锁
- 它促进了参与进程之间的点对点范式。
广播 RPC
广播 RPC 是客户端的请求,该请求在网络上广播,由所有拥有处理该请求方法的服务器处理。
广播 RPC 的功能
- 允许您指定必须广播客户端的请求消息。
- 您可以声明广播端口。
- 它有助于减少物理网络的负载
批处理 RPC
批处理 RPC 有助于在客户端的传输缓冲区中对 RPC 请求进行排队和分离,然后将它们作为一批发送到服务器。
批处理 RPC 的功能
- 它通过将请求作为一批发送到服务器来最小化发送请求所涉及的开销。
- 此类型的 RPC 协议仅对需要较低调用率的应用程序有效。
- 它需要可靠的传输协议。
RPC 架构
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 方法最大的缺点是它极易发生故障,因为它涉及通信系统、另一台机器和另一个进程。