2009-08-06 71 views
5

Tôi đang xây dựng một chương trình phần mềm theo kịch bản:Hệ thống phân tán, khung tốt nhất?

Tôi có nhiều máy tính và thêm mỗi máy tính vào một cụm. Mỗi máy tính trong cụm có thể thêm tệp vào bảng được phân phối (từ điển, hashmap, phải đủ nhanh).

Vì vậy, bây giờ tôi có một nơi mà tất cả mọi người có thể xem những tập tin nào nhóm/cụm chứa. Bây giờ một máy tính từ nhóm/cụm yêu cầu một tập tin. Anh ta có thể truy cập tất cả các thông tin về tập tin từ bảng phân tán (trên máy tính nào nó có thể tìm thấy tệp, v.v ...).

Theo một số cơ chế, nó sẽ lấy tệp từ điểm B (máy tính có tệp) đến điểm A (máy tính đã yêu cầu tệp).

Về cơ bản, bạn nên sao chép dữ liệu. (Nhưng cho các tập tin rất lớn)

Vì vậy, bạn có thể tự hỏi bây giờ, quy này yêu cầu là gì, ở đây là:

Các sao chép dữ liệu nên càng nhanh càng tốt. Cách tiếp cận tốt nhất là gì? Tôi nghĩ về một cái gì đó giống như các mạng thông lượng.

Khung làm việc tốt nhất, để sử dụng cho phần mềm theo kịch bản là gì?

TÔI ĐANG TÌM KIẾM KHUNG KHUNG JAVA :). (Tôi CẦN RUN CROSS-PLATFORM)

Cảm ơn bạn!

+0

Đừng quên để upvote & đánh dấu câu hỏi như trả lời nếu bạn đã tìm thấy giải pháp của bạn! –

Trả lời

0

Dường như bạn đang tìm kiếm: Project Voldemort hoặc khác Key=>Value datastores which automatic failover, replication, vv

+0

Tôi sẽ xem xét kỹ hơn. Đó là tùy chọn của tôi. –

+0

Vì Hazelcast có các tính năng liên tục là "store()", nó cũng là một tùy chọn: http://code.google.com/docreader/#p=hazelcast&s=hazelcast&t=hazelcast Rất dễ sử dụng! –

1

JXTA là của Sun Java peer-to-peer khuôn khổ, và nhiều khả năng sử dụng ở đây.

Hoặc kiểm tra Jini và khả năng cho dịch vụ cho thuê, phát hiện động và giao thức máy khách/máy chủ độc lập. Sử dụng Jini bạn có thể xuất bản từng dịch vụ với các thuộc tính cụ thể (trong trường hợp này là tên tệp của bạn?) Hoặc có thể sử dụng nó với Javaspaces (Tuy nhiên, tôi không chắc chắn về sự phù hợp của không gian tại đây)

+0

Có nó ngang hàng, nhưng tôi không muốn thực hiện một cấu trúc dữ liệu phân tán. –

+0

Lưu ý rằng bạn có vấn đề về máy báo cáo cấu trúc dữ liệu của bạn B có tệp, nhưng điều gì sẽ xảy ra khi máy B đi xuống? –

+0

Tôi đã tìm thấy một khuôn khổ, Nó được gọi là JGroups. Đã nghe về nó? –

4

Vì tôi chắc chắn bạn đã phát hiện ra có rất nhiều thư viện ở đó cho java cho phép bạn thực hiện loại bản đồ bị xáo trộn này.

  • Hazelcast - New Kids on the Block, thực sự đơn giản để sử dụng và cung cấp implmentations giao diện java tiêu chuẩn như ConcurrentMap
  • JGroups - Thật chỉ thư viện cho nhắn tin nhóm, nhưng bao gồm một thực hiện DisturbutedHashMap
  • jBoss Cache - xây dựng trên đầu trang của các nhóm cung cấp hệ thống bộ nhớ đệm rối loạn hoàn chỉnh hơn nhiều với sự kiên trì và giao dịch tùy chọn
  • Terracotta - Lớn và khá phổ biến, được hỗ trợ thương mại
  • Oracle Coherence - Bố của tất cả, với thẻ giá để khớp với

Có nhiều hơn (nhiều hơn), sở thích cá nhân của tôi vào lúc này là Hazelcast thật dễ dàng để bắt đầu.Tất cả các khung bộ nhớ đệm mà tôi đã liệt kê (tôi nghĩ) dựa vào khả năng (ít nhất là tạm thời) để có thể tải toàn bộ mục nhập vào bộ nhớ, đây có thể là vấn đề nếu bạn đang cố gắng đưa nội dung của các tệp lớn vào chúng.

Trong trường hợp của bạn, tôi có thể sử dụng bản đồ bị nhiễu để lưu trữ dữ liệu vị trí, tức là một số dữ liệu cho bất kỳ nút nào khác có tệp particalar và sau đó đi trực tiếp đến nút đó bằng cách sử dụng một số phương pháp ràng buộc như HTTP.

0

Có một vài câu trả lời hay ở trên cho bản đồ băm được phân phối.

Để thực sự sao chép tệp nếu có thể tôi không muốn sao chép bất kỳ thứ gì và chỉ có một số giải pháp lưu trữ được chia sẻ. Nếu bạn phải sử dụng các đĩa riêng biệt cho mỗi máy tính, thì một cái gì đó đơn giản như thiết lập một máy chủ FTP trên mỗi máy tính sẽ hoạt động. Điều này không phải là dựa trên Java, nhưng nếu bạn muốn giải pháp Java chỉ có một cái gì đó như Apache MINA có thể hoạt động.

Các vấn đề liên quan