2010-05-07 123 views
0

我正在两台设备之间同步对象。对象具有lastModified属性。如果两个设备都修改了一个对象,则在下一次同步时,在两个设备上都会选择具有最新lastModified的对象版本。所以我们不进行细粒度的合并,只合并“最新版本”。在两个设备之间使用不同系统时间同步对象

问题是这样的。当一个设备收到一个已更改对象的列表时,它不能可靠地比较最后修改的接收对象与它自己,因为这两个设备上的系统时间可能不同。

我认为让每个设备在同步过程中发送当前日期/时间。然后分别计算远程时间和当地时间之间的差异,以正确比较日期。但是,如果在发送日期和接收它的远程设备之间存在延迟,这会导致与同时修改的对象(或时间上非常接近)不正确的比较。即两个设备都认为远程对象更新,并且它们以不同的对象结束。

我希望我已经解释清楚了。

这种问题必须有一个共同的解决方案,但我的大脑没有任何东西。有什么建议么?在此先感谢...

回答

0

我想出了一个应该工作的解决方案。

客户端将其日期发送到服务器。服务器计算一个增量,它用来将客户的日期标准化为自己的时间。服务器将该差值发送回客户端,客户端使用相同的差值(取反)与桌面时间相同。现在任何转换在两个设备之间是一致的。仍然可能会出现这样的情况,即两个对象之间选择一个较旧的对象,在彼此间以<LAG>秒为单位进行修改,但至少现在是一致的。

相关问题