方案 A:
为了在同一主机上运行的两个进程之间共享读写块内存,Joe 从这两个进程中都映射相同的本地文件。
方案 B:
为了在两个不同主机上运行的两个进程之间共享读写块内存,Joe 通过 nfs 在主机之间共享文件,然后从这两个进程中都映射共享文件。
有人尝试过方案 B 吗?与方案 A 不同,方案 B 会出现哪些额外的问题?
方案 A:
为了在同一主机上运行的两个进程之间共享读写块内存,Joe 从这两个进程中都映射相同的本地文件。
方案 B:
为了在两个不同主机上运行的两个进程之间共享读写块内存,Joe 通过 nfs 在主机之间共享文件,然后从这两个进程中都映射共享文件。
有人尝试过方案 B 吗?与方案 A 不同,方案 B 会出现哪些额外的问题?
我想说情景B有各种问题(假设按照评论中的建议工作)。最明显的问题是标准并发性问题-2个进程共享1个资源,没有任何形式的锁定等。这可能会导致问题...不确定NFS在这方面是否有其自己的特殊问题。
假设你可以以某种方式解决并发问题,那么你现在就依赖于维持稳定(和快速)的网络连接。显然,如果网络掉线,你可能会错过一些更改。这是否重要取决于你的架构。
我的想法是这听起来像是在不同机器上共享一块内存的简单方法,但我没听说过有人这么做,这让我觉得它可能不太好。当我想到在进程之间共享数据时,我会想到数据库、消息传递或专用服务器。在这种情况下,如果你将一个进程作为主进程(处理并发和拥有概念-即这个人所说的数据的最佳副本),那可能会起作用...
ENODEV
错误。但编写一个尝试从 NFS 映射文件的程序比编写这个问题需要更少的按键。 - C2H5OH