2009-09-21 19 views
7

Tôi đang viết một khung ứng dụng phân tán trong C++. Một trong những yêu cầu là cung cấp bộ nhớ chia sẻ được phân phối. Thay vì viết của riêng tôi từ đầu (và có khả năng tái phát minh ra bánh xe), tôi nghĩ tôi sẽ thấy nếu có bất kỳ thư viện nguồn mở nào có sẵn - tìm kiếm nhanh trên google không mang lại lợi ích gì.Thư viện bộ nhớ chia sẻ phân tán cho C++?

Có ai ở đây có bất kỳ trải nghiệm nào về thư viện C++ DSM tốt mà họ có thể đề xuất không?

Lý tưởng nhất, thư viện sẽ hỗ trợ MRMW (Nhiều người đọc/nhiều người viết), nhưng tôi có thể thực hiện với MRSW (Nhiều người đọc, một người viết) nếu cần. Tôi đang phát triển trên Linux.

Trả lời

3

Bạn đã xem memcached chưa?

Mạng được phân phối và có thể rất nhanh.

Nó có các ràng buộc cho nhiều ngôn ngữ, bạn có thể truy cập nó từ hệ điều hành khác nhau và hỗ trợ nhiều nhà văn nhiều độc giả.

+1

Điều này có thể đã giải quyết được nhu cầu thực tế của OP nhưng không trả lời được câu hỏi. Memcached là bộ nhớ cache có giá trị khóa được phân phối, không phải DSM (https://en.wikipedia.org/wiki/Distributed_shared_memory). Đây là một ý tưởng cũ [1, 2], bây giờ phải có thư viện trưởng thành. 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

Hãy thử ACE library, nó có rất nhiều nội dung hay mà bạn sẽ thích. Họ có một lớp học Shared_memory trong đó nhưng tôi không chắc chắn một DSM của nó - nếu không, họ có rất nhiều mạng khác/phân phối những thứ bạn có thể thấy thú vị.

+0

"Lớp cơ sở này điều chỉnh cả bộ nhớ chia sẻ của Hệ thống V và" BSD "vào API chung", vì vậy đây là cơ chế IPC trên một nút, chứ không phải triển khai DSM (ala, millipede http: //static.usenix .org/publications/library/thủ tục tố tụng/usenix-nt97/presentation/itzkovitz.ppt, millipage http://static.usenix.org/events/osdi99/full_papers/itzkovitz/itzkovitz_html/node12.html, v.v ... http: // dl.acm.org/citation.cfm?id=296806.296830#references) – ahcox

6

Bộ nhớ chia sẻ Ace dùng để chia sẻ trên 1 nền tảng.

Bộ nhớ được chia sẻ phân tán rất ít không quan trọng vì có các vấn đề liên quan đến giao dịch cần giải quyết. Để sử dụng hiệu quả Bộ nhớ chia sẻ phân tán (ngay cả đối với bản sao), bạn sẽ thấy bạn cần (trong số những thứ khác) các thuật toán đồng bộ hóa phân tán và các giao thức cần khả năng phục hồi khi đối mặt với sự thất bại. (Shshooot! Aint mà lúc nào cũng là cách!)

tài liệu nghiên cứu đáng kể đã được viết về những vấn đề này (xem một số các thư mục chương của cuốn sách Taubenfield của)

Đây thực sự là một lời cảnh báo rằng "cán của riêng bạn" sẽ là một dự án quan trọng trong và của chính nó.