网易首页 > 网易号 > 正文 申请入驻

为什么 Google 要重新定义一秒钟?

0
分享至


本文来自微信公众号: 宇众不同的露萱 ,作者:宇众不同的露萱,原文标题:《为什么 Google 要重新定义一秒钟?》

在写代码的时候,我们习惯了调用System.currentTimeMillis(),默认拿到的就是一个平滑、单调、绝对向前的数字。这种感觉就像我们呼吸空气一样自然——时间嘛,不就是一直在往前走吗?

直到线上第一次碰到因为时间回拨导致的分布式ID重复事故,我才被现实狠狠补了一课。

后来我去翻Google关于TrueTime和Leap Second(闰秒)的工程文档,心里最大的感触不是“这套方案有多牛”,而是一种极其荒谬的落差:

我们今天支撑着整个现代文明的计算机网络,底层居然建立在一个连“一秒钟有多长”都说不清楚的脆弱基石上。

为了不让这个基石崩塌,Google干脆做了一件听起来有点霸道的事情:他们单方面决定,在某些日子里,重新定义软件世界里的“一秒钟”。

很多关于闰秒的文章,一上来就喜欢从地球自转减慢、潮汐摩擦开始讲起。

这些天文知识当然没错,但天文学家的烦恼,原本是不需要软件工程师来买单的。

天文学家的时间叫UT1,是以地球自转为基准的——地球转一圈就是一天,平分给86400秒。但现实是,地球这个大石头一点都不规整,内部岩浆在涌动,表面海水在摩擦,甚至连板块地震都会改变它的转速。所以,物理世界里的“一天”,从来都不是精准的86400秒。

而计算机科学家用的是原子钟(TAI),靠铯原子振荡来计数。原子钟极度精准,它不在乎地球怎么转,它的秒是绝对均匀的。

这两拨人凑在一起,矛盾就出来了。

天文学家说:“太阳升到最高点必须是中午12点,你原子钟走得太快,和地球自转偏了,你得等等我。”计算机派说:“我的逻辑只要求绝对单调,你一会儿走得快一会儿走得慢,我的系统怎么算高并发事务?”

最后在1972年,大家搞了个折中方案,叫协调世界时(UTC)。规则很粗暴:以原子钟为准,但如果和地球自转偏差快超过0.9秒了,就在某个月的最后一天,强行插进1秒。

这就是那个著名的23:59:60。

第一次读到这里的时候,我其实觉得挺神奇的——时间居然能出现60秒。但如果你写过基础库或者内核代码,你就会明白,这对于计算机来说根本不是神奇,这是一个噩梦。

计算机的最大愿望,其实就是大家都别改时间。

在软件工程师构筑的世界里,有一个至高无上的基本假设:时间是单调递增的,且一秒就是一秒。

你可以想想看,POSIX时间戳(Unix Timestamp)的底层定义就是“从1970年1月1日开始流逝的秒数”。整个软件生态——从Linux内核的定时器、线程锁,到数据库的MVCC事务版本号、分布式系统的Lease租约——全部建立在这个假设之上。

但23:59:60的出现,直接把这个基本假设砸碎了。

当国际地球自转服务(IERS)宣布要加一秒的时候,底层操作系统面临着一个极其尴尬的选择:

  1. 让时间出现23:59:60:大多数编程语言的标准库和POSIX API根本没有定义过第60秒。你调用时间函数返回这个值,很多解析代码直接报错崩掉。

  2. 让时间停顿一秒(把时钟冻结在59秒两次):表面上看没有非法数字了,但对于高并发系统来说,意味着在这一秒内,两个不同时刻产生的日志记录,拥有完全相同的时间戳;两个请求发起的死锁检测,时间差是0。

  3. 把时间往回拨一秒:这是最惨的。时钟倒退,直接击穿了大部分基于逻辑时钟和分布式锁的算法。

2012年那次著名的“闰秒大惨案”,本质上就是Linux内核在处理NTP传过来的闰秒标志位时,触发了一个隐藏在futex(快速用户空间互斥锁)里的死锁Bug。当时Reddit、Mozilla、Qantas航空的系统成片崩溃,服务器CPU瞬间飙到100%。

那次事故给整个工程界留下的心理阴影极其深远。

大家突然发现,天文学家为了让自转和太阳对齐而做出的“文明浪漫”,对于高并发的数字世界来说,无异于一次高空投弹。

真正的瓶颈不在于怎么写那几行代码去兼容23:59:60。

真正的瓶颈在于,在复杂的分布式系统中,你根本无法保证几万台服务器能在绝对相同的微秒级时间内,同时收到并执行“加一秒”的指令。

哪怕只有几毫秒的时间差,集群内某些节点进入了第60秒,另一些节点还在第59秒,分布式数据库的一致性就荡然无存了。

既然物理世界不可预测,而多节点同步又不可能完美,Google的工程师们在2008年前后做出了一个非常符合他们实用主义风格的决定:

我不陪天文学家玩了。我也不在软件里处理什么23:59:60了。从今天起,我的服务器里根本不存在这一秒。

这就是所谓的Time Smear(时间抹平/时间渐变)。

Google的做法说白了有点“自欺欺人”,但极其管用:

当闰秒要来的那一天,Google的内部NTP服务器不会向客户端下发任何“要加一秒”的警告。相反,它从闰秒发生前12小时开始,故意把自己的时钟摆频(Clock Frequency)调慢一点点——每一秒都比真正的物理秒稍微长那么一丁点。

它把那需要增加的1秒钟,均匀地拆碎成几十万份,“抹”进了这24小时(前12小时到后12小时)的每一个瞬间里。

等这24小时过去,那额外的1秒钟已经在不知不觉中被系统消化掉了。时钟平滑地贴合上了新的UTC时间,而运行在上面的任何业务代码、任何数据库、任何内核锁,全程毫无察觉。

从头到尾,没有任何时间跳跃,没有任何23:59:60,也没有任何时间回拨。

如果站在纯粹的标准制定者或者天文学家的角度来看,Google的Time Smear简直是“邪教”。

因为它在抹平的那24小时里,Google服务器所输出的时间,既不是严格的UTC(因为没有处理60秒),也不是严格的TAI(因为它故意走慢了),它是一个由Google自主定义的、只存在于它数据中心内部的“伪时间”。

在标准协议的卫道士看来,这是对国际时间标准的公然篡改。

但现实却无比真实:工业界最终全盘接受了这个代价。

因为对于软件系统来说,“符合标准”远没有“系统不崩”来得重要。

后来AWS跟进了,Meta(当时的Facebook)跟进了,微软也跟进了。大家发现,用微小的频率偏差去换取时钟的绝对单调和连续,是收益最高、风险最小的工程选择。

甚至可以说是Google的这种强硬姿配,直接倒逼了上层计量学界去重新审视闰秒的存在价值。

在经历了四十多年的折腾之后,2022年第27届国际计量大会(CGPM)终于通过了一项历史性决议:决定在2035年之前,正式取消UTC中的闰秒机制。

天文学家们最终向计算机科学家妥协了。在这个高度依赖算法和数据流转的时代,文明最终选择放弃让机械的时间去强行贴合地球的律动。

但其实,今天工程界依然留着一个尴尬的尾巴。

虽然大家都接受了“抹平”的思想,但因为当年没有统一的标准,各大云计算巨头的Smear策略并不一致:

  • Google采用的是以闰秒时刻为中心的24小时线性抹平;

  • AWS采用的是从前一天中午开始的24小时余弦/线性抹平;

  • Meta曾经使用过17.5小时(63000秒)的抹平方案;

这就导致在有闰秒出现的那一天,如果你的系统跨了云平台——比如一部分节点部署在AWS,另一部分部署在GCP——它们在抹平期间拿到的时间戳,最大可能存在几百毫秒的偏差。

在极其敏感的跨云分布式事务里,这个偏差依然有可能引发意料之外的数据不一致。

看似完美的工程妥协,只是把一个显性的崩溃Bug,变成了一个隐蔽的、概率发生的分布式漂移问题。

我们搞了几万年的时间计量,建立了如此庞大的分布式计算网络,但直到今天,我们依然无法完全消除物理世界与数字世界之间的那道时间缝隙。

本内容由作者授权发布,观点仅代表作者本人,不代表虎嗅立场。如对本稿件有异议或投诉,请联系 tougao@huxiu.com。

本文来自虎嗅,原文链接:https://www.huxiu.com/article/4881845.html?f=wyxwapp

声明:包含AI生成内容

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
太冲动了!200万砸进深圳臭豆腐火锅:450平大店日营收仅302元,每日亏6900,95后女孩哭诉创业遭滑铁卢

太冲动了!200万砸进深圳臭豆腐火锅:450平大店日营收仅302元,每日亏6900,95后女孩哭诉创业遭滑铁卢

火山詩话
2026-10-03 10:26:33
44岁姚笛独自在杭州豪宅家中煮泡面,眼神中难掩落寞

44岁姚笛独自在杭州豪宅家中煮泡面,眼神中难掩落寞

追影客栈
2026-10-03 16:08:17
邵佳一社媒被网友刷屏:让我知道国足还能这么烂,有点自知之明就下课

邵佳一社媒被网友刷屏:让我知道国足还能这么烂,有点自知之明就下课

懂球帝
2026-10-03 11:53:30
震惊!两名中国男子持美国护照入境,在机场被逮捕

震惊!两名中国男子持美国护照入境,在机场被逮捕

大洛杉矶LA
2026-10-03 06:53:56
中国夫妇澳洲车祸身亡,出事路段引出“拖延半个世纪”的扩建僵局

中国夫妇澳洲车祸身亡,出事路段引出“拖延半个世纪”的扩建僵局

红星新闻
2026-10-03 12:19:42
地下8345米,重大突破!

地下8345米,重大突破!

证券时报
2026-10-03 15:45:04
花旗重磅报告:中国住房供应下降 30%!第三轮房价上涨很快开启

花旗重磅报告:中国住房供应下降 30%!第三轮房价上涨很快开启

专业聊房君
2026-10-02 18:51:25
女选手晒马拉松个人最好成绩,称“前15km跑得很舒服”,结果被拍到坐自行车比赛!当事人凌晨道歉

女选手晒马拉松个人最好成绩,称“前15km跑得很舒服”,结果被拍到坐自行车比赛!当事人凌晨道歉

南方都市报
2026-10-03 15:32:29
安世半导体被荷兰强行接管一年后,将晶圆供应和封测全都搬到印度,闻泰科技超300亿的收购资金“打水漂”了吗?

安世半导体被荷兰强行接管一年后,将晶圆供应和封测全都搬到印度,闻泰科技超300亿的收购资金“打水漂”了吗?

逍遥漠
2026-10-03 12:45:25
阿根廷推出“投资换国籍”计划

阿根廷推出“投资换国籍”计划

界面新闻
2026-10-03 14:02:48
APEC深圳开会在即,高市头衔被摘!中方拒给“首相级”外交承认

APEC深圳开会在即,高市头衔被摘!中方拒给“首相级”外交承认

凡知
2026-10-03 14:27:44
太离谱了!一女生偷偷篡改男友博士学位论文,添加虚构爱情告白文献,当作送给男友的毕业礼物,引发争议

太离谱了!一女生偷偷篡改男友博士学位论文,添加虚构爱情告白文献,当作送给男友的毕业礼物,引发争议

火山詩话
2026-10-03 14:43:43
太争气!国足获亚运铜牌连创4大纪录 单届成绩首次超越男篮+女足

太争气!国足获亚运铜牌连创4大纪录 单届成绩首次超越男篮+女足

我爱英超
2026-10-03 16:20:31
郭富城对方媛绝对是爱的,看他俩坐下脚贴脚就知道了

郭富城对方媛绝对是爱的,看他俩坐下脚贴脚就知道了

动物奇奇怪怪
2026-10-03 13:57:02
我们都被课本骗了几十年:白求恩根本不是普通好人,当拨开课本简略的文字才发现,这段传奇不能只用善良概括

我们都被课本骗了几十年:白求恩根本不是普通好人,当拨开课本简略的文字才发现,这段传奇不能只用善良概括

回京历史梦
2026-10-02 08:35:16
美内政部证实:夏威夷火山国家公园标志性的霍莱海蚀拱门坍塌,坠入太平洋

美内政部证实:夏威夷火山国家公园标志性的霍莱海蚀拱门坍塌,坠入太平洋

环球网资讯
2026-10-03 16:08:17
兰兰继续「无人认领」 ,华人已被排斥……

兰兰继续「无人认领」 ,华人已被排斥……

家传编辑部
2026-10-03 12:20:03
“这辈子活到头了!”苏州电网清华男相亲被嫌弃,女方实属高攀了

“这辈子活到头了!”苏州电网清华男相亲被嫌弃,女方实属高攀了

熙熙说教
2026-10-03 12:52:26
外交部:中方欢迎普京总统出席APEC深圳峰会

外交部:中方欢迎普京总统出席APEC深圳峰会

界面新闻
2026-10-03 19:50:30
马斯克与四孩母亲分手,女方称“从相爱到放手,一周之内毫无预兆”,希望今后能够与马斯克成为好朋友,共同承担养育责任

马斯克与四孩母亲分手,女方称“从相爱到放手,一周之内毫无预兆”,希望今后能够与马斯克成为好朋友,共同承担养育责任

台州交通广播
2026-10-03 12:26:37
2026-10-03 21:36:49
虎嗅APP incentive-icons
虎嗅APP
个性化商业资讯与观点交流平台
27905文章数 688108关注度
往期回顾 全部

科技要闻

英伟达盘中创历史新高,市值逼近6万亿美元

头条要闻

美国女囚死刑执行到打呼 已成植物人"死不成又活不了"

头条要闻

美国女囚死刑执行到打呼 已成植物人"死不成又活不了"

体育要闻

这个讨论了一夏天的问题,马刺有答案了吗

娱乐要闻

马思纯一家爬山祈福!素颜出镜笑容甜

财经要闻

4亿台电视挂墙落灰 为何没人愿意开了?

汽车要闻

方程豹9月热销破4万 首款皮卡鲨鱼将于四季度上市

态度原创

教育
时尚
艺术
游戏
亲子

教育要闻

选专业别只追“热门”:数字时代,这4个方向值得重点了解

Chemena Kamali写给Chloé的又一封情书

艺术要闻

Ulisse Caputo:意大利著名印象派画家

《博德之门3》价格永降!玩家:不管 续作赶紧端上来

亲子要闻

只要有好奇心的,就不会活的太差

无障碍浏览 进入关怀版