首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试系统间时间同步算法的实现?

如何测试系统间时间同步算法的实现?
EN

Stack Overflow用户
提问于 2014-03-17 19:38:53
回答 1查看 577关注 0票数 0

通过计算主服务器的偏移量,实现了一个简单的时间同步算法。在处理代码本身方面存在一些延迟,这将导致时间戳。所以我想知道如何测试我的算法--实际上是同步系统间的时间戳?

下面是我在nodejs中进行时间同步的逻辑

代码语言:javascript
复制
var onSync = function (data) {
    var diff = Date.now() - data.t1 + ((Date.now() - data.t0)/2);
    offsets.unshift(diff);
    if (offsets.length > 10)
      offsets.pop();
    console.log("Order no ",data.ord,"The offset is ",offsets[0] ,"time in server was = ",data.t1 , "time in the slave = ", Date.now() );
  };

系统使用socket.io进行通信。我使用了一个全局变量,即服务器中的全局变量,它在每次收到请求时更新,全局值作为data.ord发送到客户端。

因此,目前,我有一个主服务器和多个从服务器,它们不断地为时间戳池。下面是我得到的输出:

Node大师:

代码语言:javascript
复制
rahul@g3ck0:~/programs/dos_homework/hw2$ nodejs ob1.js 
Current server timestamp is  1395043602717 order no is  1
Current server timestamp is  1395043603263 order no is  2
Current server timestamp is  1395043603717 order no is  3
Current server timestamp is  1395043604264 order no is  4
Current server timestamp is  1395043604719 order no is  5
Current server timestamp is  1395043605265 order no is  6
Current server timestamp is  1395043605720 order no is  7
Current server timestamp is  1395043606267 order no is  8

奴隶1:

代码语言:javascript
复制
rahul@g3ck0:~/programs/dos_homework/hw2$ nodejs slave1.js
Order no  1 The offset is  2.5 time in server was =  1395043602718 time in the slave =  1395043602719
Order no  3 The offset is  2 time in server was =  1395043603717 time in the slave =  1395043603718
Order no  5 The offset is  1.5 time in server was =  1395043604719 time in the slave =  1395043604720
Order no  7 The offset is  0 time in server was =  1395043605720 time in the slave =  1395043605720

奴隶2:

代码语言:javascript
复制
rahul@g3ck0:~/programs/dos_homework/hw2$ nodejs slave2.js 
Order no  2 The offset is  6 time in server was =  1395043603263 time in the slave =  1395043603268
Order no  4 The offset is  2.5 time in server was =  1395043604264 time in the slave =  1395043604265
Order no  6 The offset is  2 time in server was =  1395043605265 time in the slave =  1395043605266
Order no  8 The offset is  2 time in server was =  1395043606267 time in the slave =  1395043606268

如你所见

偏移+时间戳(主)>时间戳(从)

但在一段时间内,这一数字一直在下降。总之,我不确定这是否正确的做法。我希望你的输入1。如何实现一个更好的算法? 2。我如何测试它?

EN

回答 1

Stack Overflow用户

发布于 2014-03-17 20:04:04

您不可能比让您的主机与Protocol同步更好。可以说服Linux和Windows与NTP同步,并在必要时充当NTP服务器(在Windows AD上,一个DC是配置得有点奇怪的NTP服务器,以便使其他机器足够接近Kerberos身份验证才能工作)。

典型的计算机时钟不太准确。如果您比较一个系统的同步启动和同步在一个周末,你会发现有明显的漂移同步关闭,但希望很少或没有同步启动。您还可以启动机器明显不同步,并查看它们需要多长时间同步。默认情况下,NTP不会同步任何超过一个小时的漂移。我发现这很让人恼火,因为我们在VMWare的设置上遇到了问题,这使得机器有些时差,有时机器出现在1970年,但我愿意相信,有一个很好的理由不同步极端的差异,所以我的目标不会超过一个小时。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22463793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档