2009-09-21 12 views
7

Piszę rozproszone ramy aplikacji w C++. Jednym z wymagań jest zapewnienie rozproszonej pamięci współdzielonej. Zamiast pisać własne od podstaw (i potencjalnie ponownie wymyślać koło), pomyślałem, że sprawdzę, czy istnieją wcześniej istniejące biblioteki Open Source - szybkie wyszukiwanie google nie przyniosło niczego użytecznego.Rozproszona biblioteka pamięci współużytkowanej dla C++?

Czy ktokolwiek tutaj ma jakieś doświadczenie z dobrą biblioteką DSM C++, którą może polecić?

Idealnie, biblioteka będzie obsługiwać MRMW (wielu czytelników/wielu pisarzy), ale mogę zrobić z MRSW (wielu czytelników, jednego pisarza), jeśli zajdzie taka potrzeba. Pracuję nad Linuksem.

Odpowiedz

3

Czy brałeś pod uwagę memcached?

Jest rozpowszechniany w sieci i może być naprawdę szybki.

Posiada powiązania dla wielu języków, można uzyskać do niego dostęp z różnych systemów operacyjnych i obsługuje wielu pisarzy wielu czytelników.

+1

Mogło to rozwiązać praktyczną potrzebę PO, ale nie odpowiada na pytanie. Memcached jest rozproszoną pamięcią podręczną o wartości klucz-wartość, a nie DSM (https://en.wikipedia.org/wiki/Distributed_shared_memory). To jest taki stary pomysł [1, 2], powinny istnieć już dojrzałe biblioteki. 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

Wypróbuj ACE library, ma wiele dobrych rzeczy, które Ci się spodobają. Mają tam klasę Shared_memory, ale nie jestem pewien, czy jest to DSM - jeśli nie, mają mnóstwo innych rzeczy sieciowych/rozproszonych, które mogą Cię zainteresować.

+0

"Ta klasa bazowa dostosowuje zarówno pamięć dzieloną System V jak i" BSD "mmap do wspólnego API", więc jest to mechanizm IPC na pojedynczym węźle, a nie implementacja DSM (ala, stonoga http: //static.usenix .org/publications/library/procedures/usenix-nt97/presentationations/itzkovitz.ppt, millipage http://static.usenix.org/events/osdi99/full_papers/itzkovitz/itzkovitz_html/node12.html, itp. http: // dl.acm.org/citation.cfm?id=296806.296830#references) – ahcox

6

Ace pamięć współużytkowana służy do udostępniania na 1 platformie.

Rozproszona pamięć współdzielona jest bardzo nietrywialna, ponieważ istnieją problemy dotyczące transakcji do rozwiązania. Aby efektywnie korzystać z rozproszonej pamięci współdzielonej (nawet dla kopii), będziesz potrzebować (między innymi) rozproszonych algorytmów synchronizacji i protokołów, które wymagają odporności w obliczu awarii. (Shshooot Aint! Że zawsze droga!)

Znaczące prace badawcze zostały napisane na temat tych zagadnień (patrz część bibliografii rozdziałów książki Taubenfield'S)

Tak naprawdę jest to ostrzeżenie, że „toczenia własne” będzie być znaczącym projektem samym w sobie.

Powiązane problemy