Android 手机与网络的同步算法

Android 手机与网络的同步算法,android,ios,windows,algorithm,web,Android,Ios,Windows,Algorithm,Web,我在两个平台上有一个简单的note应用程序,一个是移动平台(Android和iOS),另一个是基于web的。我要这两个同步 我的问题是:我如何确定哪个版本的便笺(android或web)较新,并且该文本必须同步?事实上,我需要一个同步算法。若我使用时间戳,若用户在手机上的日期时间出现错误,同步系统就会出现问题。我想要最新的编辑同步到所有客户端 例如,如果移动应用程序处于脱机状态并进行了一些更改,同时我们在同一注释中对服务器进行了更改,并且当移动应用程序联机时,应该保留哪些更改?解决办法是什么 最

我在两个平台上有一个简单的note应用程序,一个是移动平台(Android和iOS),另一个是基于web的。我要这两个同步

我的问题是:我如何确定哪个版本的便笺(android或web)较新,并且该文本必须同步?事实上,我需要一个同步算法。若我使用时间戳,若用户在手机上的日期时间出现错误,同步系统就会出现问题。我想要最新的编辑同步到所有客户端

例如,如果移动应用程序处于脱机状态并进行了一些更改,同时我们在同一注释中对服务器进行了更改,并且当移动应用程序联机时,应该保留哪些更改?解决办法是什么


最后,最好的方法是什么?我想要最好的同步方法

客户端不应该使用本地时间。只有服务器有正确的时间。客户机具有时区,可用于向用户显示适当的时间。粗略地说,同步算法可能如下所示:

  • 客户端A编辑一个
    X注释
    ,并向服务器发送更新注释的事件(请求)
  • 服务器接收事件并更新消息的时间戳。然后它广播更新了
    注释X
    的新事件
  • 客户端B从服务器接收事件(带有更新的注释和时间戳),并在适当的时间向用户显示更新的注释

  • 如果移动应用程序处于脱机状态并进行了一些更改,同时我们在同一注释中对服务器进行了更改,并且当移动应用程序联机时,应该保留哪些更改?解决方案是什么?当您需要在服务器上实现
    merge
    机制时就是这种情况。这是一件相对复杂的事情。基本思想是在客户端上存储编辑的历史记录,并发送更改的历史记录,而不仅仅是更新的注释。然后服务器应该比较更改的历史记录并进行合并。没有100%有效的合并算法,例如,即使
    Evernote
    有时也无法合并注释。