我在两台设备之间同步对象。对象具有lastModified
属性。如果两个设备都修改了对象,则在下次同步期间,将在两个设备上选择具有最新lastModified
的对象版本。因此,我们不进行细粒度合并,只进行“最新版本”合并。
问题是这个。当一个设备收到已更改对象的列表时,它无法可靠地将接收到的对象的lastModified与其自身进行比较,因为两个设备上的系统时间可能不同。
我考虑让每台设备在同步过程中发送当前日期/时间。然后每个计算远程时间和当地时间之间的差异,以正确比较日期。但是如果在发送日期和接收它的远程设备之间存在滞后,则会导致与同时修改的对象(或者在时间上非常接近)进行不正确的比较。即两个设备都认为远程对象更新,并且最终会得到不同的对象。
我希望我已经清楚地解释了这一点。
这种问题必须有一个共同的解决办法,但我的大脑却没有想出任何东西。有什么建议?提前谢谢......
答案 0 :(得分:0)
我想出了一个应该有效的解决方案。
客户端将其日期发送到服务器。服务器计算一个delta,用于将客户端的日期标准化为自己的时间。服务器将该delta发送回客户端,客户端使用相同的delta(否定)来执行与桌面时间相同的delta。现在,两个设备之间的任何转换都是一致的。仍然存在这样的情况:在两个之间选择较旧的对象,这些对象在彼此的<LAG>
秒内被修改,但至少现在是一致的。