阿里云采用ECS云服务器NTP系统24小时“消化”闰秒

2017-01-05 20:33:46

BAT科技网:北京时间2017年1月1日7时59分59秒后,全球同步多出1秒。

这事儿,对日常生活影响不大。

若处理不当,也可能引发危机。2012年闰秒发生时,包括LinkedIn在内不少国外知名网站都曾遇到故障。

为了协助用户更好的应对2017年元旦的闰秒,2016年的12月19日阿里云在官方网站发布公告,介绍闰秒可能影响的群体,以及应对方案。

第27次闰秒,在阿里云走了1天

阿里云提供的ECS云服务器中带有自己的NTP服务。所以,2017年1月1日,阿里云为客户提供了两个选择

为用户默默解决闰秒问题。这一服务,免费提供。

有些用户技术实力强希望亲手操作闰秒修改,也是可以的。只是,需要提前确认所使用的操作系统版本已不受闰秒影响,就可以自行更改NTP配置。

北京时间1月1日07:59:60,阿里云采用ECS云服务器NTP系统24小时“消化”闰秒的方案,实现了与标准UTC时间的完美重合。

所有云上用户,在毫无感知的情况下,静静度过了这多出来的1秒。

闰秒是什么鬼

地球自转被称为“世界时间”。不过,由于潮汐、地壳运动、冰川融化、地震等自然现象,地球的自转速度并非恒定,而是有时快,有时慢。

1967 年原子钟的出现意味着人类计时不用再依赖于地球的自转,时间的计量标准正式由天文学的宏观领域过渡到物理学的微观领域,也就是所谓的“原子时间”。

细心的科学家发现,两者之间存在微妙差异。于是,国际地球自转和参考系服务会(IERS)在差异超过 0.9秒时,会协调“世界时间”加上或减去 1 秒,消除这个误差。

这多出来的1秒,就是闰秒。

闰秒的加减法

基于实际观测,地球自转和参考系服务会提前六个月公布下一次闰秒的时间。

通常在该年度的 6 月 30 日或 12 月 31 日午夜进行。

由于北京时间与格林尼治时间相差8小时,中国是在2017年1月1日迎来7时59分60秒的特殊现象。

最近四次闰秒分别发生在 2005 年 12 月 31 日、2008 年 12 月 31 日和 2012 年 6 月 30 日,2015年7月1日。

从 1988 年这一做法被确立至今,一共发生过 26 次闰秒。2017 年 1 月 2 日这次是第 27 次闰秒。

将1秒拆分成86400份

这一次,阿里云技术团队提前2个月准备了2017元旦闰秒解决方案。

与很多公司采取在在7点59分59秒增加一秒钟的做法不同,阿里云ECS云服务器采用的方案是,将多出来的这一秒分平均分配到24小时(即86400秒)中,在闰秒时刻前12小时开始,闰秒后12小时结束。

24小时背后

理论上,能直接添加闰秒那也是极好的。

现实情况是大量的操作系统和应用软件处理不了闰秒,会导致各种异常。

最常见的情况是,如果服务器操作系统是Linux,在一些老的内核版本中存在BUG无法处理闰秒。导致收到闰秒通告消息可能会down机、插入闰秒可能会down机、打印闰秒日志也能引发down机。

即便不down机,在应用层,应用程序也可能无法处理这多出来的1s导致应用core掉。甚至可能影响到那些对时间敏感、事务性较强的应用,比如DB。

目前,国际大公司通用的解决方案是将这一秒分成许多份,再平均分配到一整天中。

日本有一家股票交易所将这一秒平均分成 7200 份,分摊到两个小时里,在分摊结束时间恢复同步时,刚好赶上开市。

Google则是在闰秒时刻前的24小时开始逐步调慢时间,理论上在闰秒时刻前,和标准UTC时间最大误差趋近于1秒。

阿里云采用的方案是在闰秒时刻前12小时才开始调慢。所以,最大误差为0.5秒。

第27次闰秒,在阿里云走了1天

收藏 举报

延伸 · 阅读