RPC代表远程过程调用。它是一种协议,一个程序可以使用该协议从位于网络上另一台计算机上的程序请求服务,而无需处理网络的复杂性。
当一个计算机程序导致一个过程在共享网络上的另一台计算机的地址空间中执行时,通常会发生这种调用。此类调用被编码为看起来类似于对同一系统的调用,即用户完全从功能发生在同一网络的不同系统上这一事实中抽象出来。
RPC 是 IPC(进程间通信)的一种形式,如果调用主机,则进程在虚拟地址空间上不同,物理地址相同但当主机是不同的机器时,它们的物理地址不同也。
它是一种通信方法,它采用请求-响应范式来实现。
RPC 分为三种类型 –
- 回调RPC
- 广播RPC
- 批处理模式 RPC
历史
- Bruce Jay Nelson于 1981 年首次创造了“远程过程调用”一词。
- ARPANET 文档表明他们想到了将网络操作视为 RPC 的想法。
- 现代计算系统中使用的 RPC 源于RC 4000 多道程序系统,该系统使用请求-响应模型进行进程同步。
- 1982 年, Brian Randell及其同事在 UNIX 机器之间的纽卡斯尔连接中使用了 RPC。紧随其后的是 Andrew Birrell 和 Bruce Nelson 在施乐 PARC的 Cedar 环境中创作的“羽扇豆”。这是第一个记录的 RPC 的商业用途。
特征
- 它使用请求-响应范式进行通信,实际上可以用于在同一网络上的两个不同系统上的两个进程之间传递消息。
- 调用语法很简单,类似于本地调用。
- 它在服务器进程的环境中执行。
- 它可用于在同一台机器上以及不同机器上的进程之间进行通信。
优点
- 面向进程和面向线程的模型支持 RPC。
- 使用高级语言中的过程调用来帮助客户端与服务器通信。
- 从用户那里抽象出内部消息传递机制。
- 最大限度地减少重新编写和重新开发代码的工作。
- 即使在分布式环境中也允许使用该应用程序。
- 提供抽象。
- 它提交了许多协议层以提高性能。
缺点
- 不提供任何硬件架构的灵活性。
- 远程调用比本地调用更慢且更不可靠。
- 这个概念可以通过多种方式实现,因此无法标准化。
- 极易失败。
- 在设置可以支持 RPC 的网络时,有效成本更高。