Joh*_*ght 13 git cocoa sync ios
我正在实现我的第一个同步代码.在我的情况下,我将为每个用户提供两种类型的iOS客户端,它们将使用lastSyncTimestamp一个64位整数将记录同步到服务器,该整数表示上一次同步的毫秒时间内的Unix时期.可以随时在服务器或客户端上创建记录,并通过HTTP将记录作为JSON进行交换.
我并不担心冲突,因为很少有更新,并且总是来自同一个用户.但是,我想知道是否有一些我需要注意的常见问题,基于时间戳的方法可能会出错,例如在夏令时期间同步,同步冲突或其他陷阱.
我知道git和其他一些版本控制系统避免与基于内容的协商同步方法的时间戳同步.我可以想象我的应用程序的这种方法,使用uuid或hash对象,两个对手宣布他们拥有的对象,然后交换它们直到两个对手具有相同的集合.
如果有人知道基于内容的同步与基于时间戳的同步的任何优点或缺点,那么这也是有帮助的.
编辑 - 以下是我为时间戳和基于内容的同步提出的一些优点/缺点.请挑战/纠正.
注意 - 我将基于内容的同步定义为两组对象的简单协商,例如,如果你给两个孩子们交换卡片的每个部分,那两个相同的两组棒球卡,并告诉他们看起来像他们一样通过他们宣布并将他们找到的任何副本交给另一方,直到他们都有相同的集合.
基于时间戳的同步的优点
基于时间戳的同步的缺点
基于内容的同步的优点
基于内容的同步的缺点
我不知道它是否适用于您的环境,但您可能会考虑谁的时间是“正确的”,客户端还是服务器(或者是否重要)?如果所有客户端和所有服务器未同步到同一时间源,则客户端在使用客户端的“当前”时间同步到(或从)服务器时可能会得到意外结果,尽管这种可能性很小。
我们的开发组织实际上在几年前就遇到了一些问题。开发人员计算机并未全部同步到与 SCM 所在服务器相同的时间源(并且可能未同步到任何时间源,因此开发人员计算机时间可能会发生漂移)。几个月后,开发人员的机器可能会停机几分钟。我不记得所有的问题,但似乎构建过程试图自某个时间(上次构建)以来修改所有文件。自上次构建以来,文件可能已被检入,这些文件的修改时间(来自客户端)发生在上次构建之前。
可能是我们的 SCM 程序不太好,或者我们的 SCM 系统或构建过程太容易受到此问题的影响。即使在今天,我们所有的开发机器都应该与装有我们的 SCM 系统的服务器同步时间。
再说一次,这是几年前的事了,我不记得细节了,但我想提一下,以防它对你的情况很重要。
| 归档时间: |
|
| 查看次数: |
4731 次 |
| 最近记录: |