我正在尝试实现一个简单的同步解决方案,以在我的应用程序和服务器的各种实例之间传播一些设置。这些设置的更改很少发生,并且仅发生在客户端上。我想要一些相当健壮的东西而不会过火。
我的策略是跟踪设备上未同步的更改,并在同步时将这些更改发布到服务器。服务器应该能够拒绝在该设置的先前已知同步之后发生的更改。为了实现这一点,应用程序为每个设置存储一个“更新”日期,服务器将其与它存储的相同设置的类似字段进行比较。如果客户端的日期早于服务器知道的最新设置同步(来自不同的设备),则该设置的同步将被拒绝。
最后(希望)部分是考虑客户端和服务器时钟之间的差异。
我最初的想法是发送(与更新的设置一起)客户端当前的本地日期时间。收到后,服务器会将客户端的时间与自己的时间进行比较,并知道如何调整客户端设置上的“更新”时间戳。这在我看来原则上是合理的,但我该如何解决以下两个问题?
- 如果客户端设备的时钟在设置更新后更改,然后再尝试同步,该怎么办?
- 谁知道同步请求到达服务器需要多长时间?因此,在收到它时,客户端提供的“系统时钟”实际上是几秒钟或几分钟。