我正在考虑在我的应用程序中编写一种简单的同步功能,而出现的问题之一是两台远程计算机之间的时间同步,每台计算机都有自己的时钟(特别是关于文件/对象的修改日期)。

我敢肯定,关于此主题的研究很多,并且不想太理论化,但是我想知道是否有任何公认的最佳实践可以最大限度地减少远程时钟之间的时间差异?

例如,开始时要始终使用世界时(UTC),这样可以避免时区问题,但是不能保证两台计算机的系统时间完全相同。幸运的是,我正在做的工作不是很细致,所以这不是一个非常重要的问题,但是我仍然很好奇。

一种解决方案是始终在两端使用相同的时钟,例如全局时间服务器,而不是本地系统时钟。大概这(与共享资源锁结合使用)可以保证同步时间不会意外重叠,但这不是很实用。

突然想到的就是将每个节点(每个客户端)与先前某个时间点计算出的偏移量进行同步,也许是通过使用全局时间服务器计算系统时钟的偏移量。这仅需要偶尔执行,因为偏移量本身不可能在短时间内发生很大变化。

更新:我要补充一点,我实际上并不对同步两台计算机的系统时钟感兴趣-我假设操作系统将在大多数情况下进行处理。这只是一个有关如何确保应用程序的两个实例使用同步时间的问题,尽管在当今这个时代,我认为系统时钟几乎可以肯定地同步到某个很小的增量内。

最佳答案

正如其他人所建议的那样,将NTP依赖于您的应用程序很容易出错。正确的方法是使用Lamport的分布式时钟同步算法。他在1978年的经典论文Time, clocks, and the ordering of events in a distributed system中对此进行了解释。

关于time - 两台远程计算机之间的(时钟)同步,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/389417/

10-15 16:59