我正在做類似的工作(儘管代碼遠沒有準備好)。我會稍微介紹一下我的預期方法,但是否適合您,取決於您需要考慮的一些關鍵設計點。不幸的是,我不知道有任何現成的項目會這樣做。
- 特別是,我們需要知道您希望使用哪種語言,或者您希望避免使用哪種語言。
- 此外,請考慮您打算如何執行peer dicovery - 您可以手動設置節點對之間的信任關係,還是希望它們自動發現?
- 大概所有同行可能會插入數據?
如果你能夠使用PHP,並且開心手動對等節點對,那麼我的方法可能是有趣的。設置一個ORM,如Doctrine,Propel或NotORM,並讓每個節點定期與網絡時間源同步。對於數據庫中的每個新行,抓取數據(在數組或ORM對象中),將其序列化,然後將其推送到與之建立信任關係的所有節點。如果推送失敗,請記下此事件並定期重試(在遠程節點未能應答大量重試之後可能放棄)。
推送可以由創建該行的應用程序啓動,也可以由每臺計算機上可用的任何調度程序調用。推送消息可以是XML,或者爲了簡單起見,可以僅僅是包含新行和任何元數據(例如,保存的時間戳,以便解析來自多個節點的INSERT命令)的POST消息。
如果您的節點沒有靜態IP地址,可以使用動態DNS尋址服務進行註冊,以便每個節點即使IP更改也能與對等方保持聯繫。您也可以考慮添加一個消息簽名系統,以確保節點之間的消息是真實的。
謝謝!我會看看Jgroups。我知道我需要自己編寫複製代碼。使用JXTA可能是相同的。這似乎比有效的P2P通信要複雜得多。 – user952460