困扰程序员的两个问题 (困扰程序员的世纪难题)

近日,在法国巴黎闭幕的 第27届国际计量大会 上,科学家和政府代表投票决定到 2035年取消闰秒

喜大普奔,毕竟各大互联网企业和程序员们苦闰秒久矣。

今年7月,谷歌、Meta、微软、亚马逊就曾 联手倡议废除闰秒。

难怪外界都调侃: 没什么事能让Meta、谷歌、微软等巨头同暴躁的Linux之父Linus Torvalds达成一致了,除了闰秒。

而今天,这一秒,程序员们终于不用再续了!

困扰了程序员50多年的“闰秒”,终于要取消了

那什么是 闰秒

在概念上它与闰年类似,都是一种不定期地出现在我们的计时系统中的时间度量单位。

可以理解为 基于地球自转的世界时(UT) 基于原子振荡周期的国际原子时(TAI) 这两套时间标准之间的误差。

1927年,基于地球自转的 世界时 首先被确立,但是随着科技的发展,人们发现地球的自转速度还会受到潮汐、地壳运动等因素的影响。

并不是每天都是标准的24小时, 总会存在几毫秒的误差, 随着时间的推移,这个误差会越来越大。

困扰了程序员50多年的“闰秒”,终于要取消了

于是乎,1967年 国际原子时 诞生了,它采用了基于铯原子的能级跃迁原子秒作为时标,重新定义了“秒”的时长。

但由于世界时会随着地球的自转越来越慢,而原子时却非常稳定, 随着时间的推移,二者之间的差异会越来越大, 因此也就有了 协调世界时( UTC) 的出现。

协调世界时以国际原子时秒长为基础,并规定,当世界时与原子时之间时刻累计相差超过 0.9 秒 时,“协调世界时”就 加上或减去 1 秒 ,以尽量接近世界时,这 1 秒,就是闰秒

自诞生50年来,全球已经实施了 27次 闰秒调整。

这短短的1秒对我们是没什么影响,但对 服务器 来说却是“天差地别”。

因为多了一个闰秒,很多任务会因为时间条件不匹配而启动失败,程序就会一直尝试不停循环,直到服务器过载。

关键是闰秒还不像闰年一样有规律, 程序员无法预测,更没法提前写在系统里。

2012年美国著名新闻社交网站 Reddit突然瘫痪了40分钟, 与此同时就连领英、Mozilla等网站也突然崩溃,这未免太过于巧合。

罪魁祸首就是闰秒,因为那天晚上出现了一个奇怪的时间: 23:59:60 ,就因为多了这一秒,让计算机程序异常并崩溃。

目前许多科技公司采用 “闰秒弥补” 的解决方案,即将多出的一秒分成很多个小段,悄悄插入时间中,将多出的1秒抹平。

当然也有人选择直接暂停或者跳一秒......

而不管用什么方法解决,都会付出巨大的代价,每次调整,各大公司都会出动大批技术运维来维护。

还时常有意外发生......

Linux之父 也表示出对闰秒的无奈: 它真的很烦人,且难以在常规环境下测试,就要交付给用户。

而如今,闰秒终于要被取消了,程序员们的曙光终于来了!