簡體   English   中英

保持遠程對象更新

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM