【问题标题】:Event Synchronization Using NTP使用 NTP 进行事件同步
【发布时间】:2011-02-02 16:05:08
【问题描述】:

我想在两台(或更多)有线网络 Linux 机器之间同步两个事件。我可以使用 NTP 来执行此操作吗?

NTP 似​​乎主要专注于与时间服务器同步,我需要两台机器相互同步。那里有一个微妙的区别。例如,如果一台机器距离时间服务器的跳数是第二台机器的一半,如果我尝试直接将两台机器相互同步而不是将两者同步到时间服务器,我可能能够获得更好的同步.

一个稍微不同的问题:如果我要使用 NTP,安排活动的最佳方式是什么? cronjob 还是 at 脚本?如果我要使用像 this one 这样的库,我能否获得更好的(亚秒级)同步。

最后,有没有人知道任何适合将两台(或更多)机器同步在一起的时间同步软件包,不一定要同步到时间服务器。

感谢您的帮助。

【问题讨论】:

    标签: python ntp


    【解决方案1】:

    您可以尝试将一台机器委托为主机,而将其余机器委托为从机。当同步事件应该发生时,主设备触发从设备开始。

    同步仅受机器之间的延迟(ping)限制,您无需担心系统时钟的一致性。

    【讨论】:

    • 所以只做一台ntp服务器?
    • 你不一定需要ntp。如果您的目标只是获得同步执行,您只需要一个主节点来告诉其他节点何时开始处理。那么系统时钟不会影响执行同步。
    【解决方案2】:

    您的主机之间的 ping 延迟变化是多少?协调流程之间的哪种开始时间差异适合您?将如何启动流程? Cron 非常不精确,还需要考虑进程的启动时间。

    如果对不同主机的 ping 时间差异很大,我会这样做。

    • 在事件发生前几分钟使用可靠的公共 NTP 服务器同步所有协调主机上的时钟。不过,对于频繁的事件,每天 3-4 次同步应该足够了。

    • 使用像 cron 这样的低精度调度程序,提前 2-3 分钟,启动一个简单的包装器 shell 脚本,该脚本将 wait() 直到例如活动前 15 秒。然后包装脚本以高于正常的优先级启动 tagert 应用程序。

    • 应用程序加载(磁盘访问和动态链接很慢),读取所需的任何数据文件,进行所有耗时的计算等。然后它使用 usleep() 和 @ 等到亚秒级精度的开始时刻987654324@ 或 gettimeofday(),放在 fireLasersAtTheMoon() 之前,或者您的目标操作。

    显然,如此精确地同步自然不精确的动作(例如网络通信)几乎没有意义。如果您的网络具有可预测的延迟,您只需使用 ping 的往返时间来测量它,并在一台主机上创建一个主进程,通过 ssh 向其他主机发送启动命令,同时考虑延迟。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 2019-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-21
      • 1970-01-01
      相关资源
      最近更新 更多