【问题标题】:Syncing objects between two devices with different system times在具有不同系统时间的两个设备之间同步对象
【发布时间】:2010-05-08 01:05:37
【问题描述】:

我正在两个设备之间同步对象。对象具有lastModified 属性。如果两个设备都修改了一个对象,那么在下一次同步期间,两个设备上都会选择具有最新lastModified 的对象版本。所以我们不做细粒度的合并,只做“最新版本”的合并。

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

我考虑让每台设备在同步期间发送其当前日期/时间。然后每个计算远程时间和本地时间之间的差异以正确比较日期。但是,如果在发送日期和远程设备接收日期之间存在延迟,则会导致与同时修改(或时间非常接近)的对象进行不正确的比较。即两个设备都认为远程对象较新,最终得到不同的对象。

我希望我已经解释得足够清楚了。

这类问题必须有一个通用的解决方案,但我的大脑没有想出任何东西。有什么建议么?提前谢谢...

【问题讨论】:

    标签: datetime synchronization


    【解决方案1】:

    我想出了一个可行的解决方案。

    客户端将其日期发送到服务器。服务器计算一个增量,用于将客户端的日期标准化为它自己的时间。服务器将该增量发送回客户端,客户端使用相同的增量(取反)对桌面时间执行相同操作。现在,两个设备之间的任何转换都是一致的。仍然可能存在这样一种情况,即在两个在 <LAG> 秒内修改的对象之间选择了一个较旧的对象,但至少现在是一致的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-30
      • 2017-11-30
      • 1970-01-01
      • 1970-01-01
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多