因為地球越轉越慢,網際網路可能會崩潰

現行公曆中,平年有365天,閏年有366天,這是小朋友們都知道的生活小常識。但在閏年之外,還有偶爾出現的“閏秒”,

每當“閏秒”出現時,全球的“協調世界時”都會同時增加一秒

然而不久前,Facebook母公司Meta的工程師們聯名發表了一篇部落格,

呼籲取消閏秒

,聲稱在網際網路時代“引入閏秒是一種危險的做法”,這種做法“應該被取代”。

包括微軟、谷歌和亞馬遜在內的科技巨頭紛紛表示贊同,美國和法國的計時機構也認同了這一請願。

因為地球越轉越慢,網際網路可能會崩潰

Meta的工程師們發表的部落格|Engineering at Meta

這套已經沿用了五十年、寫進了各國中小學課本的閏秒制度,為什麼突然就成了各大科技公司的眼中釘呢?

時間加一秒,計算機大崩潰

科學上有兩種時間計量系統:基於地球自轉的天文測量而得出的“

世界時

”,和以原子振盪週期確定的“

原子時

”。由於兩種時間尺度對秒的測量方法不同,隨著時間推移,兩個計時系統的結果會出現差異,因此有了“協調世界時”的概念。

1972年,國際計量大會決定,

當“世界時”與“原子時” 之間的時刻相差超過0.9秒時,就在“協調世界時”上加上或減去1秒

,以儘量接近“世界時”,這就是閏秒。自1972年至今,閏秒已經增加了27次。

這小小的一秒對於我們的生活來說也許並沒有什麼影響,很多人甚至察覺不到,

但對於計算機來說,這一秒足以令系統大規模崩潰

說到因為時間計量造成的計算機崩潰,大家更熟悉的可能是“千年蟲”。

因為地球越轉越慢,網際網路可能會崩潰

千年蟲(Year 2000 problem)

上世紀60年代,當時電腦記憶體和外部儲存介質的成本很高,為了節省硬體成本,最早的女性程式設計師之——葛麗絲·霍普開發了六位數的日期儲存方式,分別用兩位數字來表示年、月、日,四位數的年份,只保留最後兩位的數字。

這個習慣被COBOL語言繼承了下來,進而傳播到了整個計算機程式界。但當人們步入二十一世紀時,一些使用六位數日期的電腦很可能無法識別2000年的00究竟指的是1900年還是2000年,從而導致了大規模的程式錯亂。

每次閏秒的調整也會給網際網路帶來類似的麻煩。

和千年蟲不同,由於地球的自轉受到海洋、大氣、地核運動等多種因素影響,所以

閏秒的增加時機不確定

,無法被提前寫進系統,一旦網際網路上的時間突然多出1秒,很多程式會認為“時間沒有繼續向前走,而是退回去了”,這違反了計算機的內在邏輯,錯誤就會由此而生。

因為地球越轉越慢,網際網路可能會崩潰

閏秒出現時,時鐘在走到一天的盡頭時,不會直接變成0點,而是會多出一個“59分60秒”|Qualys

在網際網路承載了越來越多功能的今天,這樣的事件屢見不鮮。2012年6月30日午夜,當閏秒被新增入世界原子鐘時,Reddit伺服器無法與之同步,整個論壇宕機了40分鐘。Mozilla、Gawker以及使用各種Linux伺服器都遭遇了同樣的閏秒問題。

2015年1月,兩家澳大利亞航空公司的系統因為閏秒癱瘓了48分鐘,工作人員只能被迫用紙張辦理登記手續。2015年的6月30日,閏秒的增加同樣產生了影響,讓推特的推文時間顯示出現了錯誤。Instagram、Pinterest、Netflix和亞馬遜等網站伺服器崩潰,多個網站離線了約40分鐘。

因為地球越轉越慢,網際網路可能會崩潰

還有使用者表示,他們的安卓手機和手錶在距離7月1日還有幾個小時時就把日期設為了7月1日。

因為地球越轉越慢,網際網路可能會崩潰

哪怕是提前做好準備,也免不了在閏秒來臨時遭遇宕機。2015年6月30日,為了避免閏秒帶來的更不可控的影響,美國洲際交易所集團在經歷閏秒時主動停止運營了61分鐘。

為了這一秒鐘的修正,可是耽誤了無數程式設計師和使用者的時間,更造成了難以計算的經濟損失。也難怪各大科技公司都呼籲要取消閏秒。

你說的秒是什麼秒

閏秒這麼麻煩的東西,到底為什麼存在呢?

遠古時期,人們就開始用太陽的東昇西落來計算時間,古代學者將平均太陽日平分為24小時,再以60進製為基礎,創造了分和現代的秒作為時間單位,這種以地球自轉對太陽的週期為基準測量得出的時間就是太陽時。

但地球自轉的週期並不是恆定的,而是在不斷變慢,每天的日子也越變越長。13億年前,地球每年有500多天,每年有13-14個月。因為太陽和月亮的潮汐力作用引起了摩擦,產生的熱量被耗散掉,消耗了地球自轉的動能,使得其轉動變慢。

因為地球越轉越慢,網際網路可能會崩潰

隨著時代發展,傳統的世界時計量法很難再滿足人們的需要,特別在太空探測、通訊導航、天文觀測、工業自動化等對時間精確度要求極高的領域更是如此。所以人們發明了計時更準確的原子鐘。原子內部震盪不受外界環境影響,因此非常穩定和精確,以這種固定秒長計量的時間,其精確度每天快慢不超過千萬分之一秒。

因為地球越轉越慢,網際網路可能會崩潰

但隨著時間推移,國際原子時和世界時這兩個系統會出現差異,時間越長,這種差異就會越大。於是,國際計量大會在1972年決定,當“世界時”與“原子時” 之間時刻相差超過0。9秒時,就在“協調世界時”上加上或減去1秒,以儘量接近“世界時”,這就是閏秒。

由於地球自轉週期難以預測,所以國際地球自轉服務只能

每半年宣佈一次是否會在未來六個月後插入閏秒

從1972年到今天,

閏秒已經增加了27次

不要閏秒,我們怎麼辦?

哪怕執行140億年,原子鐘的時間精度差也能保持在十分之一秒之內,為了讓原子鐘和世界時儘量保持一致,人們只能不斷地插入閏秒,讓程式設計師們們加班加點地處理bug。

但除了現行的方法,也不是沒有其他處理閏秒問題。

最簡單粗暴的方法就是在插入閏秒前停止NTP時鐘同步服務,待閏秒結束後再開啟,斷同步保平安。但這個方法成本太高,並且可能會帶來其他影響。

目前,

國際大公司通用的解決方案就是“閏抹”

,提前將一閏秒分成許多份,再平均分配到一大段時間中慢慢增加。谷歌和亞馬遜會將一閏秒平均插入到24小時中,屆時剛好和“協調世界時”同步。2015年,日本股票交易所提前將這一秒平均分成7200份,分攤到兩個小時裡,在分攤結束時間恢復同步時,剛好趕上開市。

因為地球越轉越慢,網際網路可能會崩潰

“閏抹”示意圖 | 彭博社

時間是文明的座標,是跨文化地區合作的基準,因為有了時間的概念,我們才能夠穿越空間相約在一起。時間不完全準確就沒有意義,可以說計時能力是文明發展程度的度量衡之一。

如今,我們的文明已經走到了能用原子鐘來計時這一步,如果繼續向下深入,說不定還會有更準確的方法來掌控時間。但目前看來,我們還是隻能透過人工干預的“笨辦法”讓原子時和世界時的差距保持在合理範圍內,也許在未來,會出現比閏秒和閏抹更好的解決方案。

參考文獻

[1]“Leap Second - Wikipedia”。 2022。 En。Wikipedia。Org。 https://en。wikipedia。org/wiki/Leap_second。

[2]Phillips, By Alexa, By Hannah Furness, By Chanel Zagon, By Gareth Davies, By Raven Saunt, and By Gary Buchanan。 2015。 [3]“Leap Second Confuses Twitter And Android ”。 The Telegraph。 https://www。telegraph。co。uk/news/science/science-news/11710148/Leap-Second-confuses-Twitter-and-Android。html。

[4]“Bloomberg - Are You A Robot?”。 2022。 Bloomberg。Com。 https://www。bloomberg。com/news/articles/2015-06-28/with-61-seconds-in-a-minute-markets-brace-for-trouble。

[5]Nast, Condé。 2012。 “‘Leap Second’ Bug Wreaks Havoc Across Web”。 WIRED。 https://www。wired。com/2012/07/leap-second-bug-wreaks-havoc-with-java-linux/。

作者:莎士比利

編輯:翻翻,Steed

封面圖來源:Qualys

一個AI

雖然至今為止出現的閏秒都是加一秒,但隨著冰川的消融和地球自轉週期的變化,有學者提出,在未來也可能出現減一秒的“負閏秒”。負閏秒的情況更加危險,網際網路可能真的會認為時間在向後走而崩潰。有什麼解決辦法嗎?

因為地球越轉越慢,網際網路可能會崩潰

TAG: 閏秒時間一秒2015自轉