网工干货知识

超全学习笔记
当前位置:首页 > 干货知识

分布式系统——RPC的透明性

更新时间:2026年03月27日   作者:spoto   标签(Tag):

RPC是一种有效的机制,可用于构建分布式客户端-服务器系统。它提升了客户端/服务器计算方式的编程效率和便利性。所谓“透明的RPC”,指的是程序员无法区分本地调用和远程调用之间的区别。在设计RPC机制时,最困难的部分就是确保其具有透明性。

必须使用的透明材料有两种:

  • 句法透明性远程进程的语法结构以及对本地过程的调用方式应该是一致的。
  • 语义透明度远程过程调用和本地过程调用的语义是相同的。

句法上的透明性并不是问题,但语义上的透明性则很难实现,因为远程过程调用与本地过程调用之间存在差异。以下是远程过程调用与本地过程调用之间的区别:

  • 远程过程调用所涉及的地址空间是独立的,也就是说,与本地过程调用相比,它们的地址空间是不同的。
  • 与本地过程调用相比,远程过程调用更容易出现故障,这主要是由于处理器出现故障或网络通信出现问题所导致的。
  • 由于通信网络的存在,远程过程调用的执行时间比本地过程调用要长。

在RPC中,如何实现透明度呢:

  • RPC的主要目标是让远程过程调用看起来是透明的。调用方根本不会知道被调用的过程实际上是在另一台计算机上运行的。同样地,RPC实现了这种透明性。
  • 当该读取操作被用作远程过程时,会向库中添加该读取操作的客户端 stub 版本。调用时,会按照规定的顺序来调用它。
  • 这些参数被封装在一个消息中,然后被传输到服务器上。服务器的操作系统会将这个消息转发给服务器处理程序。当收到来自客户端的消息时,服务器处理程序会调用相应的函数来处理这些消息,或者拒绝接收那些不需要处理的消息。
  • 服务器会解析这些参数,然后调用相应的服务器程序。完成处理后,它会以常规的方式将结果返回给调用者,即把结果打包后发送给客户端。
  • 当客户端从服务器收到消息时,客户端的操作系统会将其识别为发往该客户端的消息。当调用者能够控制程序后,它只能知道自己的数据是可访问的而已。
  • 它完全不知道,这项任务是通过远程方式完成的,而不是在本地操作系统上进行的。通过这种方式,实现了透明性。

虽然可以通过调整语法来实现RPC的语法透明性,但由于程序调用方式存在差异(无论是本地还是远程调用),因此完全实现语义透明性是不可能的。

              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

免费试听-咨询课程-获取免费资料