根据我对 RPC(远程过程调用)的理解,它们提供了一种将函数调用、调用等发送到远程计算机的方法。这样做的明显优点是,您可以拥有一个在机器集群上运行的单个程序,并且可以处理更多请求、更多数据等。
但是我对LRPC - 轻量级RPC感到困惑。 显然这个东西的存在是为了加速同一台机器上的 RPC。正如论文中所写我链接到:
轻量级远程过程调用(LRPC)是一种通信工具 专为保护域之间的通信而设计和优化 同一台机器。在当代的小内核操作系统中, 现有的 RPC 系统在使用时会产生不必要的高成本 保护域之间占主导地位的通信类型 在同一台机器上。这种成本导致系统设计人员联合起来 将弱相关子系统纳入同一保护域,进行交易 性能安全。通过减少同机开销 通信,LRPC 鼓励安全性和性能。
我的问题是:如果您在同一台计算机上运行所有内容,那么 RPC 的意义何在? R 代表 REMOTE。 如果您不打算远程,那么就将其称为 LPC。我错过了什么?
本地 RPC 有多种用例,但一个非常简单的例子是服务器同时具有远程和本地客户端。
让我们考虑一个基于 RPC 的打印服务器的例子:
显然,您不想为远程客户端编写一个打印服务器,也不想为本地客户端编写一个单独的打印服务器。因此,如果架构或中间件允许设计一个可以由远程客户端(远程 RPC)和本地客户端(本地 RPC)无差别使用的打印服务器,那就更好了。
此时,架构或中间件确保了本地客户端和远程客户端的通用接口:实践中如何实现进程间通信必须对应用程序开发人员完全透明。
但是,对远程客户端和本地客户端使用相同的进程间通信技术可能效率低下。因此,当服务器和客户端位于同一主机上时,RPC架构会进行某种优化以优化性能,这是相当常见的。从本质上讲,这种优化与本地网络通信使用本地环路而不是在主机和网卡之间来回的事实非常相似。
轻量级 RPC 就是这样一种解决方案(它不是唯一的),允许优化本地客户端的 RPC 性能。当这种优化实现到 RPC 架构中时:
实际上,lrpc 是由腐败的微软开发人员使用的,他们参与了欺诈人们的系统……哎呀,这是一个秘密