C++分布式共享内存库?

6

我正在编写一个C++分布式应用框架。其中一个要求是提供分布式共享内存。但我不想从头开始编写自己的库(可能会重复造轮子),所以我想看看是否有现成的开源库可用。但是,快速的谷歌搜索并没有找到什么有用的信息。

这里有没有人有使用过好的C++ DSM库的经验可以推荐一下?

理想情况下,该库将支持MRMW(多读/多写),但如果需要,我可以使用MRSW(多读,单写)。我正在Linux上开发。

3个回答

6
Ace共享内存是用于在一个平台上共享的。
分布式共享内存非常复杂,因为需要解决事务性问题。即使是进行复制,要有效地使用分布式共享内存,您会发现需要(除其他外)分布式同步算法和协议,需要在面对故障时具有弹性。(唉呀!这总是这样!)
已经有很多重要的研究论文涉及这些问题(请参见Taubenfield书的一些章节参考文献)。
这实际上是一个警告,“自己动手”将是一个相当大的项目。

4

你考虑过使用memcached吗?

它是网络分布式的,速度非常快。

它有许多语言的绑定,可以从不同的操作系统访问它,并支持多个写者和多个读者。


2
这可能解决了OP的实际需求,但并没有回答问题。Memcached是一个分布式键值缓存,而不是DSM(https://en.wikipedia.org/wiki/Distributed_shared_memory)。这是一个如此古老的想法[1,2],现在应该有成熟的库了。1. https://www.usenix.org/publications/library/proceedings/usenix-nt97/presentations/itzkovitz.ppt 2. https://www.usenix.org/legacy/events/osdi99/full_papers/itzkovitz/itzkovitz.pdf - ahcox

0

试试ACE库,它有很多你会喜欢的好东西。他们在里面有一个Shared_memory类,但我不确定它是否是DSM - 如果不是,他们还有很多其他网络/分布式的东西,你可能会感兴趣。


这个基类将System V共享内存和“BSD” mmap适配到一个通用的API中,因此它是单节点上的IPC机制,而不是DSM实现(例如millipede http://static.usenix.org/publications/library/proceedings/usenix-nt97/presentations/itzkovitz.ppt,millipage http://static.usenix.org/events/osdi99/full_papers/itzkovitz/itzkovitz_html/node12.html等)。http://dl.acm.org/citation.cfm?id=296806.296830#references - ahcox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接