远程过程调用(RPC)是一种协议或体系结构,用于运行位于计算机网络中另一个系统中的程序和代码。通常,进程可以在同一本地系统中相互调用。RPC用于调用远程系统(如本地系统)上的其他进程。
RPC是分布式的
RPC架构是分布式的,我们可以在多个系统中以同步的方式运行单个应用程序。我们可以将多个系统的所有系统资源作为一个单一的大系统来使用。
RPC是基于客户机-服务器的
RPC使用客户机-服务器模型。请求程序称为客户机,提供服务的程序或系统称为服务器。根据请求和响应系统,客户机和服务器可以互换。
RPC封送
为了在远程系统程序上调用过程或函数,我们需要提供一些数据,如函数名、参数、程序数据等。为了提供这些数据,在编译的代码中包含一个存根作为远程过程代码的代表。当存根作为一个远程过程调用接口时,它将管理数据、函数、参数等到远程过程的传输。
请求-答复
作为客户机-服务器体系结构,RPC是一种可以称为ping-pong的请求和应答协议。这不是RCP应用程序的义务,但是大多数RPC应用程序发送单个请求/过程调用并等待响应。在没有得到响应的情况下,它们不会发送第二个请求/过程调用。
UDP和TCP传输
RPC可以在UDP或TCP上运行而不受任何限制。但一般来说,UDP是RCP应用程序的首选,它提供了更快、更简单的实现。RCP/RCP速度较慢,但在需要稳定性或网络不稳定时提供可靠的传输。
相关文章: Php类
标准化数据表示
RPC封送数据以使用函数名、参数和数据进行过程调用。封送的数据将作为 外部数据表示(XDR) RFC1832中记录的协议。XDR格式支持整数、浮点数、字符串和不同类型的数据类型,以无缝地增强数据传输。
RPC身份验证
RPC还支持从一个系统到另一个系统上的目标函数的调用应用程序的身份验证。身份验证可以在多个模型中运行。例如,NFS操作身份验证是使用Linux用户和组id进行的,用于文件服务器权限和授权。
RPC工作流程
在本部分中,我们将检查客户机和服务器系统上不同组件的标准RPC请求。
- 客户端程序或应用程序调用客户端函数。
- 客户端函数调用重定向到负责进行远程过程调用的客户端stab。
- 客户端存根将使用现成的RPC运行时作为服务器的接口
- 客户端RPC运行时将消息重定向到服务器RPC运行时。
- 服务器RPC运行时将弹出客户端消息到服务器存根。
- 服务器存根将调用服务器函数,以便执行客户机请求的给定方法、参数和数据。
- 服务器函数执行结束后,函数结果将返回到服务器存根
- 服务器存根将重定向到RPC运行时作为响应
- 服务器RPC运行时将显示传输结果 到客户端RPC运行时
- RPC运行时将弹出到客户端存根
- 客户机存根将方法调用结果推送到客户机函数。
RPC优势
RPC作为一种流行的协议,与其他相关协议相比具有一些优势。
- 远程过程调用可以使用面向进程和面向线程的模型
- RPC为运行远程方法和过程提供了一个简单的抽象
- RPC的代码开发工作将是最少的
- RPC可以以分布式方式使用,也可以在本地系统中使用
- 根据其他替代协议,RPC性能良好
相关文章: 如何在Python中用Def定义、使用函数?
RPC缺点
这里我们将列出RPC的一些缺点。
- 有些RPC实现是标准的
- 远程过程调用的成本会增加