2009-09-21 2 views
7

Я пишу распределенную инфраструктуру приложения в C++. Одним из требований является предоставление распределенной общей памяти. Вместо того, чтобы писать свой собственный с нуля (и, возможно, изобретать колесо), я думал, что увижу, есть ли какие-либо ранее существовавшие библиотеки с открытым исходным кодом - быстрый поиск в Google не принес ничего полезного.Распределенная библиотека общей памяти для C++?

Есть ли у кого-нибудь опыт хорошей библиотеки C++ DSM, которую они могут порекомендовать?

В идеале библиотека будет поддерживать MRMW (несколько считывателей/нескольких авторов), но при необходимости я могу справиться с MRSW (несколько считывателей, одиночный писатель). Я развиваюсь в Linux.

ответ

3

Считаете ли вы, что memcached?

Это распределенная сеть, и это может быть очень быстро.

У этого есть привязки для множества языков, вы можете получить к нему доступ из разных ОС и поддерживает несколько писателей с несколькими читателями.

+1

Возможно, это решило практическую необходимость ОП, но оно не отвечает на вопрос. 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 library, у вас есть много хорошего материала, который вам понравится. У них есть класс Shared_memory, но я не уверен, что его DSM - если нет, у них много других сетевых/распределенных материалов, которые могут вам показаться интересными.

+0

«Этот базовый класс адаптирует как общую память System V, так и« BSD »mmap к общему API», так что это механизм IPC на одном узле, а не реализация DSM (ala, millipede http: //static.usenix .org/публикации/библиотека/материалы/usenix-nt97/presentation/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

6

Ace shared memory предназначен для совместного использования на одной платформе.

Распределенная общая память очень нетривиальна, так как есть проблемы, связанные с транзакцией. Чтобы эффективно использовать распределенную общую память (даже для копии), вы обнаружите, что вам необходимы (помимо прочего) распределенные алгоритмы синхронизации и протоколы, требующие отказоустойчивости перед сбоем. (Shshooot! Эйнт, что всегда так!)

Значительные исследовательские работы были написаны по этим вопросам (см некоторые из глав библиографии книги Taubenfield в)

Это действительно предупреждение, что «прокатка собственного» будет быть значительным проектом сам по себе.

Смежные вопросы