LRPC 的意义何在?为什么有人想要对同一台机器进行远程过程调用?

问题描述 投票:0回答:2

根据我对 RPC(远程过程调用)的理解,它们提供了一种将函数调用、调用等发送到远程计算机的方法。这样做的明显优点是,您可以拥有一个在机器集群上运行的单个程序,并且可以处理更多请求、更多数据等。

但是我对LRPC - 轻量级RPC感到困惑。 显然这个东西的存在是为了加速同一台机器上的 RPC。正如论文中所写我链接到

轻量级远程过程调用(LRPC)是一种通信工具 专为保护域之间的通信而设计和优化 同一台机器。在当代的小内核操作系统中, 现有的 RPC 系统在使用时会产生不必要的高成本 保护域之间占主导地位的通信类型 在同一台机器上。这种成本导致系统设计人员联合起来 将弱相关子系统纳入同一保护域,进行交易 性能安全。通过减少同机开销 通信,LRPC 鼓励安全性和性能。

我的问题是:如果您在同一台计算机上运行所有内容,那么 RPC 的意义何在? R 代表 REMOTE。 如果您不打算远程,那么就将其称为 LPC。我错过了什么?

rpc distributed-computing
2个回答
16
投票

本地 RPC 有多种用例,但一个非常简单的例子是服务器同时具有远程和本地客户端。

让我们考虑一个基于 RPC 的打印服务器的例子:

  • 您可能有位于远程主机上的客户端(例如网络/共享打印服务器);
  • 您可能还拥有位于服务器主机本身上的客户端(以便本地应用程序也可以打印)。

显然,您不想为远程客户端编写一个打印服务器,也不想为本地客户端编写一个单独的打印服务器。因此,如果架构或中间件允许设计一个可以由远程客户端(远程 RPC)和本地客户端(本地 RPC)无差别使用的打印服务器,那就更好了。

此时,架构或中间件确保了本地客户端和远程客户端的通用接口:实践中如何实现进程间通信必须对应用程序开发人员完全透明。

但是,对远程客户端和本地客户端使用相同的进程间通信技术可能效率低下。因此,当服务器和客户端位于同一主机上时,RPC架构会进行某种优化以优化性能,这是相当常见的。从本质上讲,这种优化与本地网络通信使用本地环路而不是在主机和网卡之间来回的事实非常相似。

轻量级 RPC 就是这样一种解决方案(它不是唯一的),允许优化本地客户端的 RPC 性能。当这种优化实现到 RPC 架构中时:

  • 相同的 RPC 接口可用于本地和远程客户端:
  • 应用程序开发人员不必处理某些客户端可能位于本地而其他客户端可能位于远程的问题;
  • RPC 架构在底层对本地服务器的调用进行了优化,因此本地客户端不会受到某些远程 IPC 技术的影响,而这种技术对于本地通信来说不是最佳的。

0
投票

实际上,lrpc 是由腐败的微软开发人员使用的,他们参与了欺诈人们的系统……哎呀,这是一个秘密

© www.soinside.com 2019 - 2024. All rights reserved.