Python 使用NTP进行事件同步
我想在两台(或更多)有线网络Linux机器之间同步两个事件。我可以用NTP来做这个吗 NTP似乎主要关注与时间服务器的同步,我需要两台机器相互同步。这里有一个微妙的区别。例如,如果一台机器距离时间服务器的跳数是另一台机器的一半,那么如果我尝试将两台机器直接同步,而不是将两台机器都同步到时间服务器,我可能能够获得更好的同步 一个稍微不同的问题:如果我使用NTP,安排活动的最佳方式是什么?cronjob还是at脚本?如果我使用像这样的库,我能获得更好的(亚秒)同步吗 最后,是否有人知道任何时间同步软件包适用于同步两台(或更多)机器,而不一定同步到时间服务器Python 使用NTP进行事件同步,python,ntp,Python,Ntp,我想在两台(或更多)有线网络Linux机器之间同步两个事件。我可以用NTP来做这个吗 NTP似乎主要关注与时间服务器的同步,我需要两台机器相互同步。这里有一个微妙的区别。例如,如果一台机器距离时间服务器的跳数是另一台机器的一半,那么如果我尝试将两台机器直接同步,而不是将两台机器都同步到时间服务器,我可能能够获得更好的同步 一个稍微不同的问题:如果我使用NTP,安排活动的最佳方式是什么?cronjob还是at脚本?如果我使用像这样的库,我能获得更好的(亚秒)同步吗 最后,是否有人知道任何时间同步软
谢谢您的帮助。您可以尝试将一台机器委派为主机器,将其余机器委派为从机器。当同步事件发生时,主设备触发从设备开始
同步将仅受到计算机之间的延迟(ping)的限制,您不必担心系统时钟的一致性。主机之间的ping延迟变化是什么?协调过程之间的开始时间差异对您来说合适吗?我们将如何启动流程?Cron非常不精确,还需要考虑进程的启动时间 如果对不同主机的ping时间差异很大,我会这样做
- 在事件发生前几分钟,使用可靠的公共NTP服务器同步所有协调主机上的时钟。然而,由于事件频繁,每天3-4次同步应该足够了
- 使用低精度调度程序,如
,提前2-3分钟启动一个简单的包装器外壳脚本,该脚本将cron
,直到事件发生前15秒。然后,包装器脚本以高于正常优先级的优先级启动tagert应用程序等待()
- 应用程序加载(磁盘访问和动态链接速度较慢),读取所需的任何数据文件,进行所有耗时的计算等。然后使用
和usleep()
或ftime()
,以亚秒精度等待开始时刻,放在gettimeofday()
或者你的目标行动是什么firelastersatthemon()之前
显然,同步如此精确的自然不精确的动作(如网络通信)毫无意义。如果您的网络具有可预测的延迟,您只需使用
ping
的往返时间进行测量,并在一台主机上创建一个主进程,在考虑延迟的情况下,通过ssh向其他主机发送start命令。所以只需将其中一台作为ntp服务器即可?您不一定需要ntp。如果您的目标只是获得同步执行,那么您只需要一个主节点来告诉其他节点何时开始处理。然后,系统时钟不会影响执行同步。