2010-05-07 88 views
0

我正在兩臺設備之間同步對象。對象具有lastModified屬性。如果兩個設備都修改了一個對象,則在下一次同步時,在兩個設備上都會選擇具有最新lastModified的對象版本。所以我們不進行細粒度的合併,只合並「最新版本」。在兩個設備之間使用不同系統時間同步對象

問題是這樣的。當一個設備收到一個已更改對象的列表時,它不能可靠地比較最後修改的接收對象與它自己,因爲這兩個設備上的系統時間可能不同。

我認爲讓每個設備在同步過程中發送當前日期/時間。然後分別計算遠程時間和當地時間之間的差異,以正確比較日期。但是,如果在發送日期和接收它的遠程設備之間存在延遲,這會導致與同時修改的對象(或時間上非常接近)不正確的比較。即兩個設備都認爲遠程對象更新,並且它們以不同的對象結束。

我希望我已經解釋清楚了。

這種問題必須有一個共同的解決方案,但我的大腦沒有任何東西。有什麼建議麼?在此先感謝...

回答

0

我想出了一個應該工作的解決方案。

客戶端將其日期發送到服務器。服務器計算一個增量,它用來將客戶的日期標準化爲自己的時間。服務器將該差值發送回客戶端,客戶端使用相同的差值(取反)與桌面時間相同。現在任何轉換在兩個設備之間是一致的。仍然可能會出現這樣的情況,即兩個對象之間選擇一個較舊的對象,在彼此間以<LAG>秒爲單位進行修改,但至少現在是一致的。

相關問題