如何处理服务器之间不同步的时间

时间:2018-11-05 10:21:54

标签: java networking design-patterns time

我很好奇是否有人对我的情况有最佳实践或建议:

  • 我对服务器没有任何影响的服务器通过REST提供数据。
  • 该数据仅在特定时间范围内有效,并会定期刷新。
  • 通过http标头字段知道下次刷新的时间。标头中还有服务器的当前时间。
  • 服务器上的时间关闭几秒钟(似乎未通过NTP同步)

我的任务如下:

  • 在服务器刷新后,尽可能短地获取新数据

我的问题是:

  • 我应该只保存每个请求的服务器时间与目标服务器之间的偏移秒数,并相应地调整下一个拉动吗?
  • 我应该创建某种“ otherserver”时钟,该时钟定期与另一台服务器的时钟同步,并且其偏移量触发我的下一次拉动吗?

我的问题不是关于:时间/时区的处理。

最好的解决方案将使我能够在另一台服务器更新数据后立即获取数据。

最良好的祝愿, 弗洛里安

1 个答案:

答案 0 :(得分:1)

如果另一台服务器的时间与您的时间不同,那么我认为您不应该尝试通过使用偏移量等来“同步”您的时间。这可能有用,但是知道您没有正确的同步,它将赢得不可靠(时差可能随时改变)。

如果第三方REST服务器为您提供了他们的当前时间以及下一次数据刷新的时间(也包括他们的服务器时间),那么您可以计算出请求何时应及时计入而不考虑在内您的服务器时间。例如,如果他们的当前时间是12:00:07,下一次刷新是12:00:10,那么您知道应该在3秒后执行下一个请求。只需根据预期的刷新时间将其调度到您先前的请求即可。

基本上,您不在乎他们的时间。它可以在某个奇怪的时区或某个奇怪的时间单位中,但是无论它们是什么,它们都会告诉您距您上一次请求有几秒钟的时间。