11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

让大厂抓狂的“额外一秒”:谷歌、微软、Meta 和亚马逊纷纷提议放弃

  • 2022-08-19
    北京
  • 本文字数:2632 字

    阅读完需:约 9 分钟

让大厂抓狂的“额外一秒”:谷歌、微软、Meta 和亚马逊纷纷提议放弃

简单粗暴的“加一秒”已成为“服务器不能承受之重”。


谷歌、微软、Meta 和亚马逊一众大厂近期共同发起了一项废除闰秒的倡议:用“额外加一秒”的方式同步地球自转时钟,明显是桩得不偿失的买卖!


官方机构如美国国家标准与技术研究院(NIST)以及负责维护米制公约的国际计量局(BIPM)也表达了支持态度,取消闰秒的呼声正越来越强。


闰秒:人类引入的不规则操作


所谓闰秒,就是在正常计时之外再增加一秒,借此保证时钟能与地球的实际自转时长保持同步。


科学上有两种时间计量系统,一种是基于地球自转为基础的世界时(简称 UT),另一种是以原子振荡周期确定的原子时(简称 TAI)。原子时的时间尺度更为均匀,而世界时由于地球自转速度不均匀,两者之间会存在差异。当两者之间的差异超过 0.9 秒时,国际地球自转服务组织(IERS)就会负责将世界标准时间调快或拨慢一秒,这就是闰秒。


自 1972 年以来,全球各计时机构已经在国际原子时(TAI)标准时钟上添加过 27 次闰秒。而具体方法并不是直接把午夜 23:59:59 直接计作 0:0:0,而是额外增加一个 23:59:60。



因为地球的自转速度不规则地变化,所以闰秒的间隔也是不规则的。而从长远来看,地球的自转是相当不可预测的,这解释了为什么闰秒只提前六个月宣布。


世界最高山脉上的冰盖不断融化和重新冻结,以及潮汐摩擦都是导致地球自转不规则的众多因素之一。用一个旋转的花样滑冰运动员来打个比方,她通过控制手臂来控制角速度。当张开双臂时,角速度会降低,从而保持滑冰者的动量,当手臂收回,角速度就会增加。



目前,我们只添加了正闰秒。在早期,就是通过简单粗暴地增加一秒来完成的,从而产生一个不寻常的时间戳:23:59:59 -> 23:59:60 -> 00:00:00


但随着地球自转模式的变化,我们很可能在未来的某个时刻出现负闰秒。时间戳将如下所示:23:59:58 -> 00:00:00


正闰秒的跳跃会让程序崩溃或导致数据损坏;而更重要的是我们还从未大规模测试过负闰秒的破坏性影响。无论如何,对于管理硬件基础设施的人来说,每一个闰秒都是痛苦的来源。


互联网不能承受的“一秒钟”


我们人类自身对于闰秒调整几乎是感觉不到的,但对于需要精准计时的计算机系统和互联网来说,这种简单粗暴的“加一秒”方法好处不多,但危害可不小。


假设我们有这样的代码:


start := time.Now()


// do something


spent := time.Now().Sub(start)


那么最后可能会在闰秒事件期间,“spent”值会出现依赖负数的情况,从而导致了程序崩溃。


闰秒于 1972 年被引入,迄今为止已经增加了 27 个正闰秒。每一次增加闰秒,都会在整个软件行业中引发问题。毕竟无数计算设备需要依靠精确的计算服务器网络,才能有序安排事件、记录活动先后,比如向数据库内添加数据条目,如果处理不好就会出现脑裂或其他问题。


闰秒的变化曾在 2012 年引发 Reddit 论坛的大规模中断,同时给 Mozilla、LinkedIn、Yelp 以及船家预订服务商 Amadeus 造成了不小的麻烦。


虽然了解了闰秒的影响,但 bug 并没有因此而消失。最近一次闰秒是在 2017 年,网络基础设施服务商 Cloudflare 还是因闰秒导致一部分客户服务器宕机。当时 Cloudflare 软件比较了两种时间,并发现时间似乎在“倒退”,于是因无法处理这自相矛盾的结果而陷入崩溃。


计算机在处理数字方面绝对是一把好手,但人类引入的闰秒这类不规则操作,则会打破计算机那完美无瑕的内部逻辑。影响力最大、知名度最高的此类问题当数“千年虫”,当初人类在编写数据库时只记录下年份的最后两位数字。于是当 1999 年过去、2000 年来临时,混乱也随之出现。另外还有个相关问题,一部分计算机系统是以 1970 年 1 月 1 日为起点,使用 32 位数字按秒计算日期的。而 32 位数字对应的秒最多只能表达到 2038 年,再往后数位就不够用了。


为了解决计算机时钟处理不了一分钟 61 秒的难题,谷歌率先提出了“闰秒涂片”的办法,通过调整内部的网络时间协议 (NTP) 服务器,把闰秒拆分成许多微小的步长变化、分摊到一整天当中。Meta 也采用了类似方法,一个闰秒要花 17 个小时来“抹平”。



不同系统的调整方法没有一个统一标准,小网站则更多依赖公共时间服务器,直接停 1 秒或者跳 1 秒,不会把时间切分成时间片;谷歌大厂的这些方法,在调整过程中如果有突发事件,比如某些服务器宕掉了,还是会存在问题。


只要下一个闰秒还会出现,互联网企业们就还得继续面临闰秒带来的影响,花费额外精力去消除它,闰秒的那一秒也就成了“服务器不能承受之重”。


能不能废除,大厂说了不算


添加闰秒可能引发计算机故障,互联网大厂不堪其扰,因此最近 Meta 的工程博客发布了一篇语气相当强硬的文章,表达了对闰秒调整的不满,认为这是需要被废弃的概念。


他们认为闰秒机制本身也没怎么起到预期作用,因为从历史角度来看,地球的自转速度基本没什么变化。Facebook 母公司 Meta 的研究科学家 Ahmad Byagowi 表示,“我们预计,如果只使用国际原子时而不计闰秒,整个精确周期也至少可以保持 2000 年。也许到那时候,我们才需要考虑怎么做修正。”


另外,有时候还得减去一秒(负闰秒),尽管这类状况之前还没出现过,但一旦出现,就很可能引发新的问题。Meta 工程师在博客中表示,“这种负闰秒更恐怖,甚至可能对依赖计时器或调度程序的软件造成毁灭性影响。”


而据 ZDNet、CNet 媒体报道,谷歌、微软和亚马逊各家科技巨头也赞成 Meta 的提议,纷纷表示是时候跟闰秒讲拜拜了



Meta 公司的呼吁行动不是第一次,但目前全球还没有一个可以解决闰秒问题的统一方案。2015 年,在日内瓦召开的世界无线电通信大会上,国际电信联盟 (ITU) 将反闰秒的决定推迟到了 2023 年,所以关于“这一秒”的问题可能需要等到明年才能见分晓。


但是,闰秒是目前唯一把世界时、原子时联系起来的有效手段,在不同的领域有不同的意义,时间不仅有技术属性,它还社会和文化属性。而且全球时钟系统的管理权掌握在政府和科学家手中,取消闰秒需要经过科学论证,不可能由科技企业单方面说了算。


今日好文推荐


“今日头条”名字是 AB 测试定的?字节跳动用九年时间打造出了怎样的数据平台


Node.js 之父着急宣布:Deno 将迎来重大变革,更好地兼容 Node 和 npm 包


操作系统的“冷板凳”要坐多久?万字长文解读 16 年开源老兵的坚持


我认为前端的职责可能需要重新划


活动推荐


数字化能不能靠花钱买来?中小型企业的数字化转型怎样做才能“不出大错”?为什么说没有正确理念的指引,数字化越努力,管理水平越下降?锁定 InfoQ 视频号 & 霍太稳视频号,一起听听波士顿咨询公司 Platinion 全球董事总经理陈果如何理解数字化转型。



2022-08-19 15:575370

评论

发布
暂无评论
发现更多内容

入行架构师之前,这7项技能你要先了解一下

Java架构师迁哥

Hazelcast IMDG 带你瞬间进入内存计算的时代

张磊

分布式计算 内存管理 分布式缓存 分布式内存网格

架构师训练营第 1 期第 4 周学习总结

好吃不贵

架构师训练营第三周学习总结

Gosling

极客大学架构师训练营

缓存服务-技术专题-解决方案

洛神灬殇

发几张国庆的照片

亨利笔记

容器 k8s Harbor 镜像

实用威胁建模指南(一)

亚伦碎语

敏捷 安全设计 系统安全 #威胁建模

第三节课后作业

happy

架构师训练营第四周学习总结

尹斌

架构师训练营第 1 期第 4 周作业

好吃不贵

极客大学架构师训练营

架构师训练营第三周作业(9.28-10.4)

zjzj2017

spring-boot-route(九)整合JPA操作数据库

Java旅途

Java Spring Boot jpa

3. CocoaPods 命令解析 - CLAide

Edmond

ruby ios objective-c CocoaPods PackageManager

【第三周】代码重构

云龙

【第三周】课后作业

云龙

架构师训练营第三小结(9.28-10.4)

zjzj2017

架构师训练营第四周作业

尹斌

架构师训练营第三周课后作业

Gosling

极客大学架构师训练营

单例模式

魏小龙

极客时间架构 1 期:第 3 周代码重构 - 命题作业

Null

2N方定点算法

刀斧手何在

php 数据库 分布式 算法 后端

Python 为什么不支持 switch 语句?

Python猫

Python 编程

架构师1期-代码重构作业

ltl3884

极客大学架构师训练营

Redis-技术专题-基础介绍

洛神灬殇

Redis-技术专题- 热点Key如何解决

洛神灬殇

爆赞!这份《Java核心宝典》绝对是面试复习的最佳选择

Java架构之路

Java 程序员 面试 编程语言

干货 | 全面解析“数字经济”

CECBC

数字经济 经济 经济建设

LeetCode题解:226. 翻转二叉树,递归,JavaScript,详细注释

Lee Chen

大前端 LeetCode

第四周作业

极客大学架构师训练营

有这些要素,架构才完整

北风

架构 架构师之道 架构方法

Malagu 框架介绍

木香丘

云计算 开源 Serverless 架构 框架

让大厂抓狂的“额外一秒”:谷歌、微软、Meta 和亚马逊纷纷提议放弃_硬件_Tina_InfoQ精选文章