ntp两个机器如何实现时间同步

仔细想想这个问题还是挺有意思的。如图即将见到方法:

client相对服务器的时间偏差是:
offset = ((t1-t0)+(t2-t3))/2 如何理解呢,这个假设网络往返时间是相同的(实际情况仅同一网络内可以这么理解,广域网不会一样)。 t1-t0 是 网络延迟+时间差别 t2-t3 是 负的网络延迟+时间差别 两个合起来 除2就是时间差距了。
另外:网络延迟
delay = (t3-t0) – (t2-t1) 除去服务器的处理时间。

关于时间偏差如下示例:

1
2
3
4
5
6
7
8
9
10
        timeline->
server: 0  1  2  3  4  5  6  7  8
client: 1  2  3  4  5  6  7  8  9

clock synchronization:
c          2
s             2  3
c                   5

offset: -1=((2-2) + (3-5))/2

utc 是 tai(基于铯133的物理计时(购买原子钟可以联系我))的协调时间 会有闰秒, 每年的年中 6.30 和 12.31 是采用行政的方式加1秒,地球是转速的变慢的所已会加1秒。
闰秒的存在会使得同步差别更大。集群里面有些地方是要注意这个问题的,但是有折中的解决的办法。
另外代码时间相关的需要考虑到个闰秒的影响。

参考:
关于NTP,你需要知道的一切: https://www.jianshu.com/p/8096c0477230
wiki: https://en.wikipedia.org/wiki/Network_Time_Protocol
Raspberry Pi与GPS构建NTP服务器: https://blog.csdn.net/xiaohu50/article/details/78731534
Time synchronization with a Garmin GPS: https://www.lammertbies.nl/comm/info/GPS-time.html

发表评论

邮箱地址不会被公开。 必填项已用*标注