2009-09-21 177 views
7

我正在用C++编写分布式应用程序框架。其中一个要求是提供分布式共享内存。我认为自己不会从头开始编写自己的程序(并可能重新发明方向盘),而是会看看是否有任何预先存在的开源库 - 快速谷歌搜索没有提供任何有用的东西。C++的分布式共享内存库?

上没有人在这里有很好的C++库DSM,他们可以推荐的经验吗?

理想的情况下,图书馆将支持MRMW(多读者/多作家),但我可以凑合着用MRSW(多读者,单作家),如果需要的话。我正在开发Linux。

回答

3

你有没有考虑memcached

它是网络分布式,它可以非常快。

它有很多的语言绑定,就可以从不同的操作系统进行访问,并支持多种作家多读者。

+1

这可能已经解决了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 2016-03-03 01:54:35

0

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

+0

“此基类将System V共享内存和”BSD“mmap调整为通用API”,因此它是单个节点上的IPC机制,而不是DSM实现(ala,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 2012-04-24 11:24:45

6

Ace共享内存用于在1个平台上共享。

分布式共享存储是非常不平凡的,因为有关于事务性来解决问题。为了有效地使用分布式共享内存(即使是副本),您会发现需要(除其他外)分布式同步算法和协议,这些算法和协议在出现故障时需要弹性。 (Shshooot!AINT总是这样!)

重要的研究论文已被写入有关这些问题(见一些Taubenfield的书的章节书目)

这的确是“滚你自己”会警告本身就是一个重要的项目。