讓大廠抓狂的“額外一秒”:谷歌、微軟、Meta 和亞馬遜紛紛提議放棄

谷歌、微軟、Meta 和亞馬遜一眾大廠近期共同發(fā)起了一項(xiàng)廢除閏秒的倡議:用“額外加一秒”的方式同步地球自轉(zhuǎn)時(shí)鐘,明顯是樁得不償失的買賣!
官方機(jī)構(gòu)如美國國家標(biāo)準(zhǔn)與技術(shù)研究院(NIST)以及負(fù)責(zé)維護(hù)米制公約的國際計(jì)量局(BIPM)也表達(dá)了支持態(tài)度,取消閏秒的呼聲正越來越強(qiáng)。
所謂閏秒,就是在正常計(jì)時(shí)之外再增加一秒,借此保證時(shí)鐘能與地球的實(shí)際自轉(zhuǎn)時(shí)長保持同步。
科學(xué)上有兩種時(shí)間計(jì)量系統(tǒng),一種是基于地球自轉(zhuǎn)為基礎(chǔ)的世界時(shí)(簡稱 UT),另一種是以原子振蕩周期確定的原子時(shí)(簡稱 TAI)。原子時(shí)的時(shí)間尺度更為均勻,而世界時(shí)由于地球自轉(zhuǎn)速度不均勻,兩者之間會(huì)存在差異。當(dāng)兩者之間的差異超過 0.9 秒時(shí),國際地球自轉(zhuǎn)服務(wù)組織(IERS)就會(huì)負(fù)責(zé)將世界標(biāo)準(zhǔn)時(shí)間調(diào)快或撥慢一秒,這就是閏秒。
自 1972 年以來,全球各計(jì)時(shí)機(jī)構(gòu)已經(jīng)在國際原子時(shí)(TAI)標(biāo)準(zhǔn)時(shí)鐘上添加過 27 次閏秒。而具體方法并不是直接把午夜 23:59:59 直接計(jì)作 0:0:0,而是額外增加一個(gè) 23:59:60。

因?yàn)榈厍虻淖赞D(zhuǎn)速度不規(guī)則地變化,所以閏秒的間隔也是不規(guī)則的。而從長遠(yuǎn)來看,地球的自轉(zhuǎn)是相當(dāng)不可預(yù)測的,這解釋了為什么閏秒只提前六個(gè)月宣布。
世界最高山脈上的冰蓋不斷融化和重新凍結(jié),以及潮汐摩擦都是導(dǎo)致地球自轉(zhuǎn)不規(guī)則的眾多因素之一。用一個(gè)旋轉(zhuǎn)的花樣滑冰運(yùn)動(dòng)員來打個(gè)比方,她通過控制手臂來控制角速度。當(dāng)張開雙臂時(shí),角速度會(huì)降低,從而保持滑冰者的動(dòng)量,當(dāng)手臂收回,角速度就會(huì)增加。

目前,我們只添加了正閏秒。在早期,就是通過簡單粗暴地增加一秒來完成的,從而產(chǎn)生一個(gè)不尋常的時(shí)間戳:23:59:59 -> 23:59:60 -> 00:00:00
但隨著地球自轉(zhuǎn)模式的變化,我們很可能在未來的某個(gè)時(shí)刻出現(xiàn)負(fù)閏秒。時(shí)間戳將如下所示:23:59:58 -> 00:00:00
正閏秒的跳躍會(huì)讓程序崩潰或?qū)е聰?shù)據(jù)損壞;而更重要的是我們還從未大規(guī)模測試過負(fù)閏秒的破壞性影響。無論如何,對(duì)于管理硬件基礎(chǔ)設(shè)施的人來說,每一個(gè)閏秒都是痛苦的來源。
我們?nèi)祟愖陨韺?duì)于閏秒調(diào)整幾乎是感覺不到的,但對(duì)于需要精準(zhǔn)計(jì)時(shí)的計(jì)算機(jī)系統(tǒng)和互聯(lián)網(wǎng)來說,這種簡單粗暴的“加一秒”方法好處不多,但危害可不小。
假設(shè)我們有這樣的代碼:
start := time.Now()
// do something
spent := time.Now().Sub(start)
那么最后可能會(huì)在閏秒事件期間,“spent”值會(huì)出現(xiàn)依賴負(fù)數(shù)的情況,從而導(dǎo)致了程序崩潰。
閏秒于 1972 年被引入,迄今為止已經(jīng)增加了 27 個(gè)正閏秒。每一次增加閏秒,都會(huì)在整個(gè)軟件行業(yè)中引發(fā)問題。畢竟無數(shù)計(jì)算設(shè)備需要依靠精確的計(jì)算服務(wù)器網(wǎng)絡(luò),才能有序安排事件、記錄活動(dòng)先后,比如向數(shù)據(jù)庫內(nèi)添加數(shù)據(jù)條目,如果處理不好就會(huì)出現(xiàn)腦裂或其他問題。
閏秒的變化曾在 2012 年引發(fā) Reddit 論壇的大規(guī)模中斷,同時(shí)給 Mozilla、LinkedIn、Yelp 以及船家預(yù)訂服務(wù)商 Amadeus 造成了不小的麻煩。
雖然了解了閏秒的影響,但 bug 并沒有因此而消失。最近一次閏秒是在 2017 年,網(wǎng)絡(luò)基礎(chǔ)設(shè)施服務(wù)商 Cloudflare 還是因閏秒導(dǎo)致一部分客戶服務(wù)器宕機(jī)。當(dāng)時(shí) Cloudflare 軟件比較了兩種時(shí)間,并發(fā)現(xiàn)時(shí)間似乎在“倒退”,于是因無法處理這自相矛盾的結(jié)果而陷入崩潰。
計(jì)算機(jī)在處理數(shù)字方面絕對(duì)是一把好手,但人類引入的閏秒這類不規(guī)則操作,則會(huì)打破計(jì)算機(jī)那完美無瑕的內(nèi)部邏輯。影響力最大、知名度最高的此類問題當(dāng)數(shù)“千年蟲”,當(dāng)初人類在編寫數(shù)據(jù)庫時(shí)只記錄下年份的最后兩位數(shù)字。于是當(dāng) 1999 年過去、2000 年來臨時(shí),混亂也隨之出現(xiàn)。另外還有個(gè)相關(guān)問題,一部分計(jì)算機(jī)系統(tǒng)是以 1970 年 1 月 1 日為起點(diǎn),使用 32 位數(shù)字按秒計(jì)算日期的。而 32 位數(shù)字對(duì)應(yīng)的秒最多只能表達(dá)到 2038 年,再往后數(shù)位就不夠用了。
為了解決計(jì)算機(jī)時(shí)鐘處理不了一分鐘 61 秒的難題,谷歌率先提出了“閏秒涂片”的辦法,通過調(diào)整內(nèi)部的網(wǎng)絡(luò)時(shí)間協(xié)議 (NTP) 服務(wù)器,把閏秒拆分成許多微小的步長變化、分?jǐn)偟揭徽飚?dāng)中。Meta 也采用了類似方法,一個(gè)閏秒要花 17 個(gè)小時(shí)來“抹平”。

不同系統(tǒng)的調(diào)整方法沒有一個(gè)統(tǒng)一標(biāo)準(zhǔn),小網(wǎng)站則更多依賴公共時(shí)間服務(wù)器,直接停 1 秒或者跳 1 秒,不會(huì)把時(shí)間切分成時(shí)間片;谷歌大廠的這些方法,在調(diào)整過程中如果有突發(fā)事件,比如某些服務(wù)器宕掉了,還是會(huì)存在問題。
只要下一個(gè)閏秒還會(huì)出現(xiàn),互聯(lián)網(wǎng)企業(yè)們就還得繼續(xù)面臨閏秒帶來的影響,花費(fèi)額外精力去消除它,閏秒的那一秒也就成了“服務(wù)器不能承受之重”。
添加閏秒可能引發(fā)計(jì)算機(jī)故障,互聯(lián)網(wǎng)大廠不堪其擾,因此最近 Meta 的工程博客發(fā)布了一篇語氣相當(dāng)強(qiáng)硬的文章,表達(dá)了對(duì)閏秒調(diào)整的不滿,認(rèn)為這是需要被廢棄的概念。
他們認(rèn)為閏秒機(jī)制本身也沒怎么起到預(yù)期作用,因?yàn)閺臍v史角度來看,地球的自轉(zhuǎn)速度基本沒什么變化。Facebook 母公司 Meta 的研究科學(xué)家 Ahmad Byagowi 表示,“我們預(yù)計(jì),如果只使用國際原子時(shí)而不計(jì)閏秒,整個(gè)精確周期也至少可以保持 2000 年。也許到那時(shí)候,我們才需要考慮怎么做修正?!?/p>
另外,有時(shí)候還得減去一秒(負(fù)閏秒),盡管這類狀況之前還沒出現(xiàn)過,但一旦出現(xiàn),就很可能引發(fā)新的問題。Meta 工程師在博客中表示,“這種負(fù)閏秒更恐怖,甚至可能對(duì)依賴計(jì)時(shí)器或調(diào)度程序的軟件造成毀滅性影響?!?/p>
而據(jù) ZDNet、CNet 媒體報(bào)道,谷歌、微軟和亞馬遜各家科技巨頭也贊成 Meta 的提議,紛紛表示是時(shí)候跟閏秒講拜拜了。

Meta 公司的呼吁行動(dòng)不是第一次,但目前全球還沒有一個(gè)可以解決閏秒問題的統(tǒng)一方案。2015 年,在日內(nèi)瓦召開的世界無線電通信大會(huì)上,國際電信聯(lián)盟 (ITU) 將反閏秒的決定推遲到了 2023 年,所以關(guān)于“這一秒”的問題可能需要等到明年才能見分曉。
但是,閏秒是目前唯一把世界時(shí)、原子時(shí)聯(lián)系起來的有效手段,在不同的領(lǐng)域有不同的意義,時(shí)間不僅有技術(shù)屬性,它還社會(huì)和文化屬性。而且全球時(shí)鐘系統(tǒng)的管理權(quán)掌握在政府和科學(xué)家手中,取消閏秒需要經(jīng)過科學(xué)論證,不可能由科技企業(yè)單方面說了算。
<END>
