我正在考虑在我的应用程序中编写一个简单的同步功能,其中一个问题是两台远程计算机之间的时间同步,每台计算机都有自己的时钟(特别是关于文件/对象的修改日期)。
我确信在这个主题上已经做了很多研究,并且不想过于理论化,但是我想知道是否有任何被接受的最佳实践来最小化远程时钟之间的时间差异?
例如,开始时总是使用通用时间(UTC),因为这样可以避免时区问题,但不能保证两台计算机的系统时间完全相同。幸运的是,我所做的工作并不是很细粒度,所以这并不是一个非常重要的问题,但我仍然很好奇。
一种解决方案是始终在两端使用相同的时钟,例如全局时间服务器,而不是本地系统时钟。据推测,这(与共享资源锁相结合)可以保证同步时间的意外重叠,但这并不是很实际。
我突然想到的一个想法是,将每个节点(每个客户端)与之前某个时间点计算的偏移量同步,也许是通过使用全局时间服务器计算系统时钟的偏移量来实现的。这只需要偶尔进行,因为抵消本身不大可能在短时间内发生很大变化。
更新:--让我补充一下,我对同步两台计算机的系统时钟并不感兴趣--我假设操作系统在大多数情况下都会处理这个问题。这只是一个如何确保应用程序的两个实例使用同步时间的问题,尽管在这个时代,我认为系统时钟几乎肯定会同步到某个非常小的增量中。
发布于 2008-12-23 17:25:25
您的应用程序依赖于NTP,正如其他人所建议的那样,这是一种简单的捏造。正确的方法是使用Lamport的分布式时钟同步算法。他在1978年的经典论文“分布式系统中的时间、时钟和事件排序”中对此作了解释。
发布于 2008-12-23 16:57:52
查看"网络时间协议“(NTP)规范。
发布于 2013-03-07 17:26:09
您可以尝试PTP,精确时间协议(PTP)是一种用于在计算机网络中同步时钟的协议。在局域网上,它在亚微秒范围内达到时钟精度,适合于测控系统。协议
https://stackoverflow.com/questions/389417
复制相似问题