什么是分布式系统中的 RPC 机制?
远程过程调用 (RPC) 是一种通信技术,一个程序使用它向另一个程序发出请求,以便在网络上使用其服务,甚至不知道网络的详细信息。函数调用或子例程调用是过程调用的其他术语。
它基于客户端-服务器概念。客户端是发出请求的程序,服务器是提供服务的程序。 RPC 与本地过程调用类似,基于同步操作,该操作要求停止请求应用程序,直到远程进程返回其结果。通过利用共享相同地址空间的轻量级进程或线程,可以同时执行多个 RPC。远程过程调用程序尽可能频繁地使用接口定义语言 (IDL),这是一种用于描述计算机程序组件的应用程序编程接口 (API) 的确定语言。在这种情况下,IDL 充当连接两端机器之间的接口,这些机器可能运行不同的操作系统和编程语言。
RPC模型工作流程:
- 当需要调用过程时,调用者将过程参数放置在精确的位置。
- 此时控制传递给方法体,该方法体具有一系列指令。
- 过程主体在最近创建的执行环境中运行,该环境具有调用指令的参数的副本。
- 最后,操作完成后,调用点取回控制权,并返回结果。
- 只有那些不在调用者地址空间内的过程才能调用过程,因为两个进程(调用者和被调用者)具有不同的地址空间,并且访问仅限于调用者环境的数据和来自远程过程的变量。
- RPC 中的调用者和被调用者进程通过消息传递方案进行通信以交换信息。
- 服务器端的第一个任务是在请求消息到达时提取过程的参数,然后提取结果,发送回复消息,最后等待下一个调用消息。
- 在某个时间点仅启用一个进程。
- 调用者并不总是需要被阻止。
- 可以在 RPC 中采用异步机制,即使服务器尚未响应,也允许客户端工作。
- 为了处理传入的请求,服务器可能会创建一个线程来释放服务器以处理后续请求。
RPC 的类型:
回调 RPC:在回调 RPC 中,P2P(点对点)范式在参与进程之间进行选择。通过这种方式,一个进程提供了非常有用的客户端和服务器功能。 回调 RPC 的功能包括:
- 远程处理的交互式应用程序遇到的问题
- 它提供了一个服务器供客户使用。
- 由于回调机制,客户端进程被延迟。
- 死锁需要在回调中进行管理。
- 它在所涉及的过程中促进了对等 (P2P) 范式。
用于广播的 RPC:通过网络广播并由拥有处理该请求的方法的所有服务器处理的客户端请求称为广播 RPC。广播 RPC 的功能包括:
- 您可以选择是否应该广播客户端的请求消息。
- 它还为您提供声明广播端口的选项。
- 它有助于减少物理网络负载。
批处理模式 RPC:批处理模式 RPC 使客户端能够在传输缓冲区中排列和分离 RPC 查询,然后通过网络将它们以单个批次发送到服务器。批处理模式 RPC 的功能包括:
- 它通过使用网络一次发送所有请求来减少请求服务器的开销。
- 它用于需要低呼叫率的应用程序。
- 它需要使用可靠的传输协议。
本地过程调用与远程过程调用:
- 与本地过程调用不同,远程过程调用具有不相交的地址空间,即不同的地址空间。
- 由于可能的处理器故障或网络通信问题,远程过程调用比本地过程调用更容易出现故障。
- 由于通信网络的原因,远程过程调用比本地过程调用花费更长的时间。
远程过程调用的优点:
- 在 RPC 中使用过程调用的技术允许高级语言提供客户端和服务器之间的通信。
- 此方法类似于本地过程调用,但不同之处在于被调用的过程在另一个进程和不同的计算机上执行。
- 除了进程模型之外,RPC 还支持面向线程的模型。
- RPC机制被用来隐藏核心的消息传递方法。
- 重写和开发代码所需的时间和精力是最少的。
- 分布式和本地环境都可以从远程过程调用中受益。
- 为了提高性能,它省略了几个协议层。
- 抽象是通过 RPC 提供的。例如,用户不知道网络通信中消息传递的性质。
- RPC 支持在分布式环境中使用应用程序。
远程过程调用的缺点:
- 在远程过程调用中,参数仅按值传递,因为不允许使用指针值。
- 它涉及与另一台机器和另一个进程的通信系统,因此这种机制极易出现故障。
- RPC 概念可以通过多种方式实现,因此没有标准。
- 由于基于交互的性质,RPC 中的硬件架构没有灵活性。
- 由于远程过程调用,该过程的成本增加了。