AWS(亚马逊网络服务)与Microsoft服务器之间的时差为1秒

时间:2018-10-24 04:39:20

标签: c# amazon-web-services time windows-server ntp

服务器(与time.windows.com同步的Windows 2016)与第三方Web服务(在AWS-亚马逊Web服务上部署)之间的差异为1秒。

问题是:我向TPS(第三方服务)发送了一个日期参数为Date = DateTime.UtcNow.ToString("yyyy-MM-ddTHH:mm:ssZ")的请求,并获得了一个日期小于发送的响应(相差最多1秒)。请求中的日期是请求的创建日期,响应中的日期与响应的创建日期相同。

请求“时间戳”:“ 2018-10-24T01:33:12Z”

响应“时间戳记”:“ 2018-10-24T01:33:11.0000138Z”

有人可以解释时差吗?以及如何正确解决此问题

2 个答案:

答案 0 :(得分:4)

网络延迟以及两个平台之间不同的NTP服务器可以解释1s的差异。您可能在上述设置中使用了2种不同的时间参考。仅此一项就可以解释这种漂移。

当然,不同的应用程序或用例将需要或多或少的精度。 1到2秒对于某些设置可能是不可接受的。以我的经验,通过使用相同参考时钟的普通NTP可以达到100ms的同步精度/抖动。

请参阅 https://serverfault.com/questions/724409/how-accurate-can-we-get-computer-clocks-synchronized-in-a-local-network-of-any-n很好地讨论了影响NTP时间同步精度的问题。

另请参阅https://aws.amazon.com/blogs/aws/keeping-time-with-amazon-time-sync-service/,以了解AWS如何管理其参考NTP时钟。

有关NTP网络时间协议的概述,请参见https://en.m.wikipedia.org/wiki/Network_Time_Protocol

答案 1 :(得分:2)

要添加到其他有趣的答案中:

如果要对响应和请求进行排序,则应使用同一台计算机(请求的发送者)产生的时间戳,而不是信任并比较不同计算机产生的时间戳。

只有在这里,您才能保证时间戳的顺序逻辑顺序与请求/响应的顺序一致。

此外,请不要忘记,标头中写入的时间戳基本上是可以伪造的数据,如果它来自第三方来源。