根据我对 RPC(远程过程调用)的理解,它们提供了一种向远程计算机发送函数调用、调用等的方法。这样做的明显优点是,您可以拥有一个在机器集群上运行的单个程序,并且可以处理更多请求、更多数据等。
但我很困惑LRPC - 轻量级RPC http://www.cs.virginia.edu/%7Ezaher/classes/CS656/bershad.pdf。
显然这个东西的存在是为了加速同一台机器上的 RPC。正如论文中所写我链接到 http://www.cs.virginia.edu/%7Ezaher/classes/CS656/bershad.pdf:
轻量级远程过程调用 (LRPC) 是一种通信工具
专为保护域之间的通信而设计和优化
同一台机器。在当代的小内核操作系统中,
现有的 RPC 系统在使用时会产生不必要的高成本
保护域之间占主导地位的通信类型
在同一台机器上。这种成本导致系统设计人员联合起来
将弱相关子系统纳入同一保护域,进行交易
性能安全。通过减少同机开销
LRPC 鼓励安全性和性能。
我的问题是:如果您在同一台计算机上运行所有内容,那么 RPC 的意义何在?这R代表REMOTE.如果您不想远程,那么就将其称为 LPC。我缺少什么?
本地 RPC 有多种用例,但一个非常简单的示例是服务器同时具有远程和本地客户端。
让我们考虑一个基于 RPC 的打印服务器的例子:
- 您可能有位于远程主机上的客户端(例如,对于网络/共享打印服务器);
- 您可能还拥有位于服务器主机本身上的客户端(以便本地应用程序也可以打印)。
显然,您不想为远程客户端编写一个打印服务器,也不想为本地客户端编写一个单独的打印服务器。因此,如果架构或中间件允许设计一个可以被远程客户端随意使用的打印服务器,那就更好了(远程过程调用)和本地客户(本地RPC).
此时,架构或中间件确保本地客户端和远程客户端有一个公共接口:实际上如何实现进程间通信必须对应用程序开发人员完全透明。
然而,对远程客户端和本地客户端使用相同的进程间通信技术可能效率低下。因此,当服务器和客户端位于同一主机上时,RPC架构会进行某种优化以优化性能,这是相当常见的。从本质上讲,这种优化与本地网络通信使用本地环路而不是在主机和网卡之间来回的事实非常相似。
轻量级RPC就是这样一种解决方案(它不是唯一的一种),允许优化本地客户端的 RPC 性能。当这种优化被实现到 RPC 架构中时:
- 相同的 RPC 接口可用于本地和远程客户端:
- 应用程序开发人员不必处理某些客户端可能位于本地而其他客户端可能位于远程的问题;
- RPC 架构在底层对本地服务器的调用进行了优化,这样本地客户端就不会受到某些远程 IPC 技术的影响,而这些技术对于本地通信来说并不是最佳的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)