新聞 > 科教 > 正文

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

現行公曆中,平年有365天,閏年有366天,這是小朋友們都知道的生活小常識。但在閏年之外,還有偶爾出現的「閏秒」,每當「閏秒」出現時,全球的「協調世界時」都會同時增加一秒。

然而不久前,Facebook母公司Meta的工程師們聯名發表了一篇博客,呼籲取消閏秒,聲稱在網際網路時代「引入閏秒是一種危險的做法」,這種做法「應該被取代」。

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

Meta的工程師們發表的博客|Engineering at Meta

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

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

科學上有兩種時間計量系統:基於地球自轉的天文測量而得出的「世界時」,和以原子振盪周期確定的「原子時」。由於兩種時間尺度對秒的測量方法不同,隨著時間推移,兩個計時系統的結果會出現差異,因此有了「協調世界時」的概念。

1972年,國際計量大會決定,當「世界時」與「原子時」之間的時刻相差超過0.9秒時,就在「協調世界時」上加上或減去1秒,以儘量接近「世界時」,這就是閏秒。自1972年至今,閏秒已經增加了27次。

這小小的一秒對於我們的生活來說也許並沒有什麼影響,很多人甚至察覺不到,但對於計算機來說,這一秒足以令系統大規模崩潰。

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

千年蟲(Year2000 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/.

責任編輯: 夏雨荷  來源:果殼Guokr 轉載請註明作者、出處並保持完整。

本文網址:https://tw.aboluowang.com/2022/1104/1825203.html

相關新聞