时间那点事儿

一、UTC 闰秒

润秒,是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少 1 秒的调整。

通俗一点说,就是某一年会凭空多出一秒来。

举个实际的例子,2012年7月1日早8点,23:59:59的下一秒记为23:59:60,然后才是第二天的00:00:00。目前,最近一次润秒时间发生在2017年1月1日7时59分59秒。

为什么会这样?首先得了解原子时,世界时,协调世界时。

 

原子时

以物质的原子内部发射的电磁振荡频率为基准的时间计量系统。原子时的秒长定义为铯133原子基态的两个超精细能级间在零磁场下跃迁辐射9192631770周所持续的时间。这种计时精度对于我们来说是最值得信赖的。

 

世界时

即格林尼治平太阳时,是表示地球自转速率的一种形式。以地球自转一圈的耗时来表示一天。地球自转速率并不均匀,一般来说是越来越慢的,十年前的一天比今天的一天要时间多几秒。

 

UTC(Coordinated Universal Time,协调世界时)

协调世界时是以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统。这是目前最流行的时间。

 

润秒

地球的一天并不是固定86400秒。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),在世界时和原子时之间相差超过到±0.9秒时,人们就把协调世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒);

 

二、NTP

 

NTP (Network Time Protocol) 简介

NTP 用于计算机的时间同步,用来将计算机的时间校准同步到 UTC。NTP 服务器获得 UTC 的时间来源可以是原子钟、天文台、卫星,也可以从Internet上获取。

 

特性

NTP 底层使用 UDP 协议。为啥不是 TCP? TCP 的重传机制反而对 NTP 协议没啥好处,可能会增加延迟或者是其他错误。

Reliable message delivery such as TCP [RFC0793] can actually make the delivered NTP packet less reliable since retries would increase the delay value and other errors.

另一个有趣的特性是,如果和 NTP 服务端时间差距过大,自动校准就会罢工,只能工程师手动操作。

 

误差

NTP 意图将所有参与计算机的协调世界时(UTC)时间同步到几毫秒的误差内。它使用 Marzullo 算法的修改版来选择准确的时间服务器,其设计旨在减轻可变网络延迟造成的影响。NTP 通常可以在公共互联网保持几十毫秒的误差,并且在理想的局域网环境中可以实现超过1毫秒的精度。不对称路由和拥塞控制可能导致100毫秒(或更高)的错误。
 
 
Linux 内核 Panic 事件
由于低版本内核 2.6.18 中在处理闰秒的事情时,对锁的使用不当造成了死锁,造成了内核崩溃。所以低版本服务器在应对闰秒的方法是关闭 ntp。
 

推荐阅读:

blog.sina.com.cn/s/blog_73e3544101016nsv.html#page=1

https://coolshell.cn/articles/5075.html

posted @ 2019-04-05 22:08  chunyi  阅读(163)  评论(0编辑  收藏  举报