网工干货知识

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

分布式系统中的轻量级远程过程调用

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

轻量级远程过程调用是一种专为微内核操作系统中的跨域通信而设计的通信机制。为了实现比传统RPC系统更出色的性能,轻量级远程过程调用采用了以下四种技术:简单的控制转移、简单的数据传输、简单的接口设计,以及针对并发性的优化设计。

在本文中,我们将详细探讨分布式系统中轻量级远程过程调用(Lightweight Remote Procedure Call)的概念。

轻量级RPC是一种RPC类型,在这种类型中,调用方和被调用的进程都运行在同一台计算机上。在分布式系统中,存在这样的情况……两种类型通信方式:

  • 消息传递:在这种通信方式中,各个进程通过在网络中的异构平台之间传递消息来相互通信。因此,它能够处理跨机器的通信需求。
  • 共享内存:在这种模式下,内存无法被物理上共享,而是以分布式的方式共享。这样,最终用户进程就可以访问共享的数据,而无需使用进程间通信机制。因此,这种处理方式能够处理跨域的通信需求(即在同一台机器上的不同域之间的通信)。

如果这两个进程都使用相同的共享内存区域,并且位于同一台机器上,那么最好避免使用RPC系统。因此,可以将消息作为缓冲区来处理,然后直接将其写入到共享内存区域中。这样就能实现优化效果。

在客户端和服务器都运行在同一台机器上的情况下,当需要在同一台机器上的两个组件之间发送RPC调用时,考虑以下因素可以帮助其性能优于标准的RPC方法。

  • 在这种情况下,没有必要进行任何排序或安排。
  • 我们可以不再需要显式的消息传递方式了。相反,我们可以使用内存作为通信的手段。
  • 该 stub 可以利用运行时标志来确定是否应使用 TCP/IP协议,或者选择使用共享内存。
  • 没有必要使用外部数据表示方式。

LRPC执行的步骤:

  • 调用方的参数会被推送到栈的顶端。
  • 一个陷阱被发送到内核中。
  • 当这个陷阱被发送到内核时,它要么创建一个新的显式共享内存区域,并将参数存储到该区域内;要么从栈中取出一个页面,并将其转换为一个可共享的页面。
  • 当任务完成时,客户端线程会执行相应的操作(由操作系统发起的调用)。此时,该线程会被阻塞在内核层。
  • 内核再次更新地址空间,然后将控制权转移给客户端。

LRPC是一种安全且透明的通信协议,可以被微内核操作系统所使用。为了节省在RPC调用过程中产生的成本,这种协议被广泛应用于小型内核操作系统中。

LRPC采用以下策略来提升传统RPC系统的性能:

  • 简单控制转移
  • 简单的数据传输
  • 简单的痕迹/印记
  • 并发设计
  • 简单控制转移:在这种策略中,所要求的操作由客户端在服务器的领域内执行。 在LRPC中,为了实现从客户端线程到服务器线程的直接上下文切换,需要一种称为“handoff scheduling”的线程调度机制。 以如下方式,客户端在发出第一次调用之前,需要先与服务器接口进行绑定。 在调用服务器时,客户端会提供参数堆栈以及其执行线程的信息。这些信息最终会导致内核陷入异常处理程序。 现在,内核会对调用者进行验证,然后生成调用链接,最后将客户端的线程直接发送到服务器领域,从而触发服务器的处理过程。 在呼叫流程完成之后,控制权和相关结果会被返回到客户所调用的位置。
  • 简单的数据传输:这是一种参数传递方式,与过程调用类似。不过,它采用了共享的参数栈来避免数据的重复复制。参数和结果的传递是通过消息传递机制来实现的。在跨域RPC中,需要复制的数据量至少是原始数据量的4倍。
    • RPC消息代理接口,
    • 客户端发送的内核消息
    • 从内核到服务器
    • 堆叠式服务器
  • 由于 LRPC 使用了共享参数栈,因此这种操作在某种程度上得到了简化。所谓“共享”,指的是客户端和服务器都可以访问这些参数。 这意味着在 LRPC中,相同的参数只能被复制一次,即从客户端的内存栈复制到共享的参数栈中。 由于数据在从一个域传输到另一个域的过程中所需的副本数量减少,因此成本也会相应降低。 通过成对分配参数栈的方式,LRPC能够为客户提供一种安全可靠的通信方式,实现客户端与服务器之间的有效连接。
  • 简单的 stub:通过LRPC技术,可以轻松生成经过高度优化的接口代码。因为采用了控制和数据传输机制,所以这一过程变得非常简单。在客户端领域,每个 Procedure中都会有一个调用接口;而在服务器端,每个Procedure中则有一个入口点。在LRPC接口中,每个Procedure都遵循三层式的通信协议。
    • 按照调用约定来定义的,从一端到另一端。
    • 通过“stub”来实现,一个“stub”对应另一个“stub”。
    • 基于内核实现的跨域通信机制
  • LRPC接口使得各协议层之间的界限变得模糊不清,从而可以减少不同层之间进行的调用所消耗的成本。唯一的要求就是:客户端 stub 需要进行一次正式的过程调用,而服务器则需要进行一次过程调用并返回结果给客户端 stub。
  • 并发设计:为了获得高通话吞吐量和低通话延迟,在采用共享内存和多个处理器的LRPC系统中,会采用一些特殊的方法来实现这一目标。 通过消除不必要的锁争用,以及减少对共享数据结构的依赖,可以提升系统的实际运行效率。同时,通过降低上下文切换的开销,还可以降低系统的延迟。 这样就能获得更好的吞吐量。 使用LRPC后,性能得到了显著提升,其提升幅度达到了三倍。同时,跨域通信的成本也降低了。
              马上抢免费试听资格
意向课程:*必选
姓名:*必填
联系方式:*必填
QQ:
思博SPOTO在线咨询

相关资讯

即刻预约

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