Tôi đang làm việc trên một cái gì đó tương tự (mặc dù mã đã sẵn sàng). Tôi sẽ mô tả một chút về cách tiếp cận dự định của tôi, nhưng cho dù đó là thích hợp cho bạn phụ thuộc vào một số điểm thiết kế quan trọng bạn cần phải xem xét. Tôi không biết về bất kỳ dự án xây dựng sẵn nào sẽ làm điều này, thật không may.
- Cụ thể, chúng tôi cần biết ngôn ngữ bạn muốn sử dụng hoặc ngôn ngữ nào bạn muốn tránh.
- Ngoài ra, hãy xem xét cách bạn dự định thực hiện phân loại ngang hàng - bạn có thể thiết lập sự tin cậy giữa các cặp nút theo cách thủ công hay bạn muốn chúng tự động khám phá?
- Có lẽ tất cả các đồng nghiệp đều có thể chèn dữ liệu?
Nếu bạn có thể sử dụng PHP và hài lòng khi nhìn thủ công các cặp nút thì phương pháp tiếp cận của tôi có thể được quan tâm. Thiết lập một ORM như Doctrine, Propel hoặc NotORM và nhận mỗi nút để đồng bộ hóa thường xuyên với một nguồn thời gian internet. Đối với mỗi hàng mới trong một db, lấy dữ liệu (hoặc trong một mảng hoặc đối tượng ORM), serialise nó, và đẩy nó ra cho tất cả các nút mà bạn có một mối quan hệ tin cậy với. Trong trường hợp push không thành công, hãy lưu ý điều này và thử lại trong các khoảng thời gian định kỳ (có khả năng từ bỏ sau khi một nút từ xa không trả lời được một số lượng lớn các lần thử lại).
Các ứng dụng của bạn có thể tạo ra hàng hoặc có thể gọi bằng bất kỳ công cụ lên lịch nào trên mỗi máy. Thông báo đẩy có thể là XML hoặc để đơn giản có thể chỉ là thông báo POST chứa hàng mới và bất kỳ siêu dữ liệu nào (ví dụ: dấu thời gian lưu, để giải quyết lệnh INSERT từ nhiều nút).
Nếu các nút của bạn không có địa chỉ IP tĩnh, chúng có thể được đăng ký với dịch vụ địa chỉ DNS động để cho phép mỗi nút giữ liên lạc với các đồng nghiệp ngay cả khi IP của chúng thay đổi. Bạn cũng có thể xem xét thêm một hệ thống ký tin nhắn, để đảm bảo rằng các thông điệp giữa các nút là chính hãng.
Cảm ơn! Tôi sẽ xem xét các nhóm Jgroups. Tôi hiểu rằng tôi cần phải tự mình viết mã. Với JXTA có lẽ là như nhau. Có vẻ như một vấn đề phức tạp hơn rất nhiều so với giao tiếp P2P hiệu quả. – user952460