[英]Keep remote objects updated
具有相同 Class 的兩個 object A , B (例如 HashMaps)。
在通過互聯網連接的不同計算機上
一個( A )是源,另一個( B )只是作為更新的副本......
是否有標准/推薦的方式讓它們保持“連接”或“更新”?
例子
我正在使用 TCP 連接和 writeObject
ObjectOutputStream bufferObj = new ObjectOutputStream (out);
bufferObj.writeObject(A)
在副本方面是這樣的
ObjectInputStream bufferObj = new ObjectInputStream(in);
Object B = bufferObj.readObject();
但這有一個問題,即整個 object在每次同步中發送(例如定期或每次修改發生時)
我想要一種只發送差異的方法(對 Java 收藏特別有用) ,但至少知道差異並非易事
我想要這樣的東西(過於簡單/樂觀的方案)
在服務器源
ObjectA.serverUpdatesWarehouseAt(Port);
在客戶端副本
ObjectTemp.updateItRemotelyFrom(IP,Port);
ObjectB.merge(ObjectTemp); //根據需要更新差異添加/刪除
像這樣的東西已經做好了嗎? 所以我在這里,試圖避免重新發明輪子
謝謝閱讀
聽起來您可能會受益於分布式 Hash Map ( http://en.wikipedia.org/wiki/Distributed_hash_table )。
有很多框架提供了這樣的功能——http://code.google.com/p/hazelcast/就是一個例子。
冒着明顯的風險 - 如果您的更新率很高,您可以使用大量帶寬來保持兩者同步。
如果您使用 RMI,您可以獲得分布式 object,因此您完全不必擔心保持更新。 一旦您引用了 object(在客戶端),它就會自動與服務器的 object 保持同步。
你可以看看Terracotta ,它就是做這種事情的。 它們允許在保持同步的 JVM 之間創建共享對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.