【问题标题】:How good is NTP for distributed time synchronization?NTP 对分布式时间同步有多好?
【发布时间】:2011-06-30 06:18:56
【问题描述】:

NTP 在保持一组服务器时间同步方面的准确性如何?

我正在编写一个服务,它需要一组同步到二级粒度的服务器(一些充当客户端,一些充当服务器)。我想知道 NTP 是不是最好用,还是有更好的方法?

我应该在其中一个服务器上运行 ntp 服务器,让其他服务器使用它作为源吗?还有其他关于 NTP 的推荐/恐怖故事吗?

所有服务器都是linux的。

更新:服务水平:

我希望一台服务器是准确的 UTC(秒级,而不是微秒等),并且我希望所有其他服务器都与那台服务器相同,无论其准确的 UTC 还是不是(这台服务器以不同的时间间隔从多个位置接收事件,我要求所有这些事件处于相同的“相对”ts。不,我不能让主服务器在事件进入时对事件进行 TS,因为这将需要存储一个偏移量(当事件实际发生以及它被记录时,这需要大量额外的工作),这会使事情变得不必要地复杂化。

我目前已将一台服务器设置为第 2 层时间服务器,使用一些 startum 1 GPS 源作为 ntp.conf 中的服务器,在其他服务器上,我已将此服务器设置为 ntp.conf 中的唯一服务器。

我希望这已经足够了。 谢谢!

【问题讨论】:

  • 根据您的时间安排的关键程度,可能需要注意的是,在某些年份,计算机时钟实际上会在元旦午夜倒转。有关更多信息,请参阅en.wikipedia.org/wiki/Leap_second

标签: c++ linux time distributed ntp


【解决方案1】:

对于大多数应用程序来说,NTP 可以让您在一秒钟内保持足够好。

如果您需要更高的精度,并且所有服务器都在运行 *nix,我会研究实现 Precision Time Protocol。它涉及多个父时钟和协商以在网络中找到可靠的源。这是电力行业中为事件加时间戳的建议时间协议(例如,在日志文件中为继电器动作和计量警报提供准确的时间戳以帮助调查Northeast Blackout of 2003)。

【讨论】:

    【解决方案2】:

    首先,您可以看看Wikipedia NTP page.

    基本上,首先(我经常宣扬这一点)说明您可能想要的服务水平。您需要准确的 UTC 吗?忍到什么程度?也就是说,你真的需要知道现在几点了吗?

    或者您只是想要系统之间的精确同步?

    我们谈论的是多少台机器,它们是否在地理上分布?

    一些选项:

    • 准确时间:将至少一台服务器设置为第 2 层,并使其引用至少 3 台第 1 层服务器。如果你有很多服务器,那就多做一个;显然,通过没有单点故障,您可以获得更高的可靠性。

    • 精确同步:设置 NTP 对等体。

    • 准确的时间和地理分布:多于一台第2层服务器,同上,每个集群有一个“附近”;他们可以查看第 2 层以提高投票率。

    我认为没有什么比 NTP 更广为人知的了。

    更新另一个问题提到了 PTP 精确时间协议 (IEEE 1588) 这非常适合精确同步,但依赖于多播。

    此外,值得考虑获取 GPS 时间源。

    【讨论】:

      【解决方案3】:

      是的,将您的一台服务器设置为您的内部 NTP 服务器,并将其他服务器同步到该服务器。我记得,它通常会在几毫秒内为您提供准确度。

      如果您的任何服务器出现故障——我不记得什么是“偏离”——NTP 不会修复它。有一种方法可以自动解决这个问题,但我现在不记得了。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      • 2012-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-17
      相关资源
      最近更新 更多