近日,谷歌、Meta、微软和亚马逊四位科技巨头呼吁将闰秒取消,并称闰秒会对网络造成巨大影响。闰秒或将成为下一个类似“千年虫”bug的罪魁祸首。
原来,除了闰年与闰月外,还有闰秒这一说?那它又是如果波及网络世界的呢?
运行50年的闰秒,说取消就取消?
闰秒这一概念于1972年被首次提出。是指为保持“协调世界时”接近于“世界时”时刻,由国际计量局统一规定在年底或年中(也可能在季末)对“协调世界时”增加或减少1秒的调整。
科学上有两种时间计量系统:基于地球自转的天文测量而得出的“世界时”和以原子振荡周期确定的“原子时”。
“世界时”,以地球自转为基础的时间计量系统,由于地球自转不稳定会带来时间的差异。
“原子时”,由原子振荡周期得出的较恒定的时制,是一种均匀的时间计量系统。
根据“世界时”和“原子时”的速率差异进行推算,大约5000年后“原子时”会比“世界时”快1个小时,因此,1972年国际计量大会通过决议:使用“协调世界时”(即以原子时秒长为基础,在时刻上尽量接近于世界时的一种时间计量系统)来计量时间。当“协调世界时”和“世界时”之差超过0.9秒时,国际地球自转服务组织(IERS)就负责对“协调世界时”拨快或拨慢1秒,这就是闰秒。
1972年以来,闰秒已经出现过27次,上一次是2017年1月1日7时59分60秒。当“正闰秒”发生时,一分钟将有61秒。例如,当需要插入闰秒时,23:59:59之后将不是00:00:00,而是会多出另一个原本不存在的“23:59:60”。在1972年,闰秒的诞生曾让科学界和电信行业都很高兴,但如今它对数字应用行业和科技行业来说却同样糟糕。
闰秒的杀伤力不容小觑
这个小小的闰秒造成的蝴蝶效应曾令整个网络世界屡次崩溃。
闰秒曾在2012年引发了Reddit的大规模停机。开源社区Mozilla、社交平台LinkedIn、美国商户点评网站Yelp和机票预订供应商Amadeus也都遇到过相关问题。2017年,美国云安全网络公司Cloudflare因闰秒变化而遭遇的故障导致客户的一小部分服务器离线。尽管Cloudflare的程序员提前写好了软件程序比较了两个时钟,计算出时间已经倒退,但无法对这一结果作出正确处理。
然而,类似“闰秒灾难”所最著名的例子就是1999年所谓的“千年虫”,当时人类创建的数据库只记录了1999年的最后两位数,并在1999年变成2000年时带来了一系列问题。等到2038年,当一些计算机用来计算1970年1月1日开始的秒数的32位数字不再足够大时,一个相关的问题就会出现。
今年早些时候,当网络浏览器的版本号达到 100 时,一些网站因编程只处理两位数的版本号而发生了堵塞。
废除闰秒,时机已到?
针对闰秒问题,谷歌曾于2011年提出“闰秒弥补(leap smear)”方案——调整系统内部的网络时间协议(NTP)服务器,每次更新时增加几毫秒,弥补闰秒多出来的那一秒钟,以保证服务器能够正常运行。但是,只要闰秒还存活在这世上,程序员们就得一直花精力操作。
图源Engineering at Meta
在此之前,Meta的程序员们也采用过上述方法,可他们依然太害怕这些麻烦事儿了。为什么不能一劳永逸呢?他们认为改变全球计时的方式比修复代码更容易。其工程师Oleg Obleukhov和研究科学家Ahmad Byagowi就发文表示,上述方案只适用于解决“正闰秒”出现的情况,随着地球自转模式的改变,未来还可能出现“负闰秒”。不彻底解决这一问题,“将对依靠计时器或调度器的软件带来毁灭性的影响。”
同时,这两位工程师还表示,如果取消闰秒,不再继续调整时间,未来1000年内可能不会再出现类似问题。
图源Engineering at Meta
如今,谷歌、微软、Meta和亚马逊共同呼吁取消闰秒,美国国家标准与技术研究院(NIST)及国际计量局 ( BIPM )也同意这一主张。闰秒真的要走到尽头了吗?
参考资料:https://engineering.fb.com/2022/07/25/production-engineering/its-time-to-leave-the-leap-second-in-the-past/