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

Cod*_*ein 7 rpc distributed-computing

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

但我对LRPC - 轻量级RPC感到困惑.显然,这些东西可以加速同一台机器上的RPC.正如在以下文章中所写:

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

我的问题是:如果你在同一台计算机上运行所有东西,那么RPC有什么意义呢.在[R代表REMOTE.如果你不是遥控器,那就把它称为LPC.我错过了什么?

Dan*_*rul 7

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

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

  • 您可以将客户端放在远程主机上(例如,用于联网/共享打印服务器);
  • 您可能还有客户端位于服务器主机上(因此本地应用程序也可以打印).

显然,您不希望为远程客户端编写打印服务器,也为本地客户端编写单独的打印服务器.因此,如果体系结构或中间件允许设计可由远程客户端(远程RPC)和本地客户端(本地RPC)无差别地使用的打印服务器,则会好得多.

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

然而,对于远程客户端和本地客户端使用相同的进程间通信技术可能是低效的.因此,RPC架构实现某种优化是相当普遍的,以便在服务器和客户端位于同一主机上时优化性能.本质上,这种优化非常类似于本地网络通信使用本地环路而不是在主机和网卡之间来回切换的事实.

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

  • 可以为本地和远程客户端提供相同的RPC接口:
  • 应用程序开发人员不必处理当其他客户端可能是远程客户端时某些客户端可能是本地客户端的问题;
  • RPC体系结构优化了本地服务器的内部调用,因此本地客户端不会受到某种远程IPC技术的惩罚,这种技术对于本地通信来说是次优的.