我有一個應用程序,有大約10種類型的對象。每種類型可能會有幾千個對象實例。這些對象列表需要在不同機器上運行的應用程序之間保持同步。如果一個對象被添加,更改或刪除,需要傳播到其他機器。用於在計算機之間同步對象列表的模式(C++中)?
這將是一個星形拓撲結構 - 有一箇中央主站,其餘都是客戶端。
我有一個會話的概念,所以可以存儲有關每個客戶端的數據。
有沒有一個好的設計模式可以遵循這一點?更好的是,有一個(基於模板的?)庫可以處理詢問容器自客戶端X出現以來發生了哪些變化,並使該變量發出?
現在我想每個對象類型的容器都有一個更新計數器。當添加/更改/刪除某些內容時,更新計數器會遞增,並且已更改的對象將使用該值進行標記。每個客戶端在獲取更新時都會保存更新計數器的值。之後它會回來並要求更新計數器值以來的任何更改。最後,刪除被保留爲邏輯刪除記錄(雖然我不確定何時清除它們)。
有一件事情會讓客戶無法知道,但客戶可以來來去去,儘管我猜可能會有超時的概念(如果服務器在5分鐘內沒有聽到客戶的聲音,客戶不在)
這是一個衆所周知的模式?任何其他建議?
您看到的方法的唯一問題是,如果對同一字段有1000個更改,則新客戶端將收到1000個更新而不是1個。 – Toad 2009-09-18 15:02:26
如果對象的只有一個副本更新計數器比客戶端存儲的更新計數器更新。 – DougN 2009-09-18 15:08:17
系統聲音有點像一個顛覆服務器(儘管admitedly簡單得多)...如果你正在尋找靈感,你可以模擬你在該應用程序。 – 2009-09-18 23:57:47