2011-09-05 49 views
7

Tôi đang cố gắng viết một công cụ yêu cầu kiến ​​thức về trạng thái của các máy khác trong một cụm (LAN cục bộ). Đây là một hệ thống chuyển đổi dự phòng/khả năng sẵn sàng cao tương tự như VRRP và corosync/openais, nhưng tôi muốn chứa thêm thông tin (chẳng hạn như các đặc tính tốc độ/hiệu năng gần thời gian thực) để các thiết bị có thể đưa ra nhiều lựa chọn thông minh hơn. Điều này có nghĩa là sử dụng một giao thức phức tạp hơn một cơ chế dựa trên trọng lượng định trước: bằng cách cho phép tất cả các máy phân cụm để xem trạng thái của nhau, chúng có thể đồng ý với nhau là thiết bị chính phù hợp nhất.Trạng thái phân phối trên nhiều máy

Từ tìm kiếm của tôi, tôi chưa tìm thấy bất kỳ thư viện (C, C++ hoặc JavaME) nào cung cấp cơ chế trạng thái phân tán. Lý tưởng nhất, tôi đang tìm một cái gì đó mà phát sóng/multicasts mỗi máy cá nhân nhà nước định kỳ để tham gia máy có thể xây dựng một bảng nhà nước toàn cầu và tất cả có thể xem ai là chủ. Nhà nước trong trường hợp này là các cặp khóa/giá trị tùy ý.

Tôi không muốn phát minh lại bất kỳ bánh xe nào để tò mò muốn biết liệu có ai ở đây có thể chỉ cho tôi đúng hướng không?

+0

Bạn đã kiểm tra Tăng MPI chưa. Tôi nghĩ nó dành cho máy tính phân tán. Nhưng không chắc chắn nếu nó sẽ giúp bạn hay không. – Arunmu

+4

Trông giống như một trường hợp điển hình của định lý CAP (Tính nhất quán, Tính khả dụng và Phân vùng) của Brewer. Đọc trên đó sẽ cung cấp cho bạn một sự hiểu biết tốt hơn về các vấn đề thực sự. – MSalters

+0

@MSalters - Bạn không chắc chắn ý mình là gì? Tôi hiểu rằng không thể đảm bảo mỗi nút có 100% kiến ​​thức về trạng thái của tất cả những người tham gia khác, vì sự cố ngừng hoạt động sẽ xảy ra. Tách chân trời sẽ xảy ra vv Những gì tôi đang săn bắn là một khuôn khổ tốt, mục đích chung, để tích lũy và chia sẻ nhà nước. Nếu bạn nhìn vào sự thích của OSPF và các giao thức định tuyến khác nhau, bạn sẽ thấy rằng kỹ thuật này cũng được sử dụng trong các lĩnh vực cụ thể. – Mike

Trả lời

1

Tôi không chắc chắn liệu có bất kỳ ứng dụng nào cho mục đích của bạn hay không. Nhưng tôi biết rằng bạn có thể viết một chương trình đơn giản với thư viện MPI và phát mọi thông tin mà bạn muốn.

tất cả khách hàng đều có thể gửi trạng thái của họ sang nút gốc và nút gốc sau đó phát thông báo.

chức năng mà bạn cần cho việc này là:

MPI_Bcast 
MPI_Send 
MPI_Recv 

có rất nhiều hướng dẫn về C++/MPI trên mạng, chỉ cần google nó!

2

Nếu tôi là bạn, tôi sẽ điều tra memcached (memcached.org) hoặc một trong các biến thể nosql.

+0

yup - đơn giản nhưng đúng – sehe

+0

+1 Đó là một giải pháp đơn giản, sạch sẽ, mà tôi thấy hấp dẫn. Mặt khác, tất cả các gizmos cơ sở hạ tầng từ các hệ thống khác phải được xây dựng bằng tay. – Iterator

2

Nghe có vẻ như Apache ZooKeeper có thể phù hợp. Nó được phân phối, lưu trữ khóa-giá trị phân cấp. Trích dẫn của họ Overview page:

Zookeeper được thiết kế để lưu trữ dữ liệu phối hợp: thông tin trạng thái, cấu hình, thông tin vị trí, vv

Dưới đây là một ví dụ về đơn giản Leader Election recipie, mặc dù nó sẽ đòi hỏi sự thích nghi để xác định một nhà lãnh đạo của một số tiêu chí trọng số.

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