time - 两台远程计算机之间的(时钟)同步

标签 time synchronization clock

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

我确信已经对这个主题进行了大量研究,并且不想过于理论化,但我想知道是否有任何公认的最佳实践来最小化远程时钟之间的时间差异?

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

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

我突然想到的一个想法是将每个节点(每个客户端)与之前某个时刻计算的偏移量同步,也许通过计算系统时钟与全局时间服务器的偏移量来实现。这只是偶尔需要执行的操作,因为偏移量本身在短时间内不太可能发生很大变化。

更新:让我补充一点,我对实际同步两台计算机的系统时钟不感兴趣——我假设操作系统在大多数情况下会处理这个问题。这只是一个如何确保应用程序的两个实例使用同步时间的问题,尽管在当今时代,我认为系统时钟几乎肯定会同步到一些非常小的增量内。

最佳答案

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

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

相关文章:

time - Rsync 校验和仅适用于相同大小的文件

javascript - 在网站上花费的 AJAX 时间

c - 时间测量、CPU 滴答声和可调节的 CPU 频率?

java - 等待功能不起作用 Android Studio

c++ - 需要同步全局变量的使用

jquery - 如何在时钟界面上获取用户输入

c - 数字时钟 C 代码不会显示正确的时间

c# - 如何正确获取 Java 中的当前时间?

node.js - Node.js 和 MongoDb 中同步应用程序的结构

c - 格式字符串未使用数据参数 - 输出长整型