我有一个服务器-客户端应用程序,该应用程序的一般用途是让一个客户端同时连接到多个服务器。DateTime
客户端请求每个服务器从给定的一些开始在服务器本地记录数据TimeSpan
。发出请求后,客户端与服务器断开连接。然后,一段时间后,客户端重新连接到服务器以检索记录的数据。为了让客户端正确解析记录的数据,所有服务器之间的时间参考必须匹配(在某种合理的准确度范围内,例如 1 秒)。
因此,我需要能够在记录期间实现该客户端引用的所有服务器的同步时间。
我不能保证服务器在线(它们可能仅在本地 LAN 上),因此我不能让它们轮询某些 Internet 数据库的 UTC 时间。我不能保证客户端在整个录制过程中都会保持连接,因此我不能让客户端不断发送它的时间作为参考。
我想这只留下了一个选择:客户端必须告诉每个服务器它认为设置记录的时间,并且服务器必须找出该时间与他们认为的时间之间的增量。然后服务器必须将该增量应用于任何记录的数据。
我对这种方法感到担忧。它会在很长一段时间内(比如 10 天)在服务器上保持准确的时间吗?如果其中一台服务器无法保持良好的时间,增量会随着时间的推移而漂移吗?
或者,有没有更好的方法来做到这一点?