<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          【科普】聽(tīng)過(guò)閏年閏月,可你聽(tīng)過(guò)閏秒嗎?

          共 3204字,需瀏覽 7分鐘

           ·

          2021-01-16 13:55

          閏年閏月大家都知道,可是你聽(tīng)說(shuō)過(guò)閏秒這回事情嗎?

          閏年是為了彌補(bǔ)是我們的歷法365天和地球?qū)嶋H公轉(zhuǎn)365.25天的差距,所以每4年會(huì)一年是閏年,多出來(lái)的那一天就是2月29日。

          閏月則是和陰歷有關(guān),不同于陽(yáng)歷的以公轉(zhuǎn)制定的方式,陰歷以月亮繞地球的時(shí)間來(lái)計(jì)算,所以會(huì)和陽(yáng)歷的365.25天相差10天21小時(shí),于是,多出來(lái)的時(shí)間累積下來(lái)湊成一個(gè)月,也就是閏月了。

          那么什么是閏秒?閏秒會(huì)帶來(lái)什么影響?怎么解決閏秒帶來(lái)的問(wèn)題?

          閏秒定義

          要了解閏秒,首先需要了解幾個(gè)基本的概念。

          平均太陽(yáng)日:天空中的太陽(yáng)連續(xù)兩次出現(xiàn)最大仰角(90度)所經(jīng)歷的時(shí)間就是一個(gè)太陽(yáng)日,而又由于太陽(yáng)日的長(zhǎng)短不同,所以取一年內(nèi)的太陽(yáng)日平均值,所以可以大致的認(rèn)為一個(gè)平均太陽(yáng)日就是一天24小時(shí)。

          UTC:英文為Coordinated Universal Time,中文叫做協(xié)調(diào)世界時(shí)或者世界標(biāo)準(zhǔn)時(shí)間,相信開(kāi)發(fā)的同學(xué)都很清楚,他是世界上調(diào)節(jié)時(shí)鐘和時(shí)間的主要時(shí)間標(biāo)準(zhǔn),也是最接近格林威治標(biāo)準(zhǔn)時(shí)間GMT的時(shí)間系統(tǒng)之一。

          最早的時(shí)候,一秒根據(jù)平均太陽(yáng)日的1/86400來(lái)定義,這個(gè)時(shí)間依賴于地球的自轉(zhuǎn)和公轉(zhuǎn)。后來(lái)直到1967年,秒被物理學(xué)重新定義,以銫133的振蕩頻率來(lái)定義秒,并可以用原子鐘來(lái)測(cè)量。

          UTC的時(shí)間就是基于此來(lái)定義,而且他是一個(gè)固定的時(shí)間長(zhǎng)度。

          但是由于地球自轉(zhuǎn)的速度受到潮汐加速等眾多因素的影響,平均太陽(yáng)日的時(shí)間并不固定。

          為了讓UTC貼近平均太陽(yáng)日的時(shí)間,所以就產(chǎn)生了閏秒。

          閏秒分為兩種形式:

          1. 正閏秒,也就是在23:59:59之后一秒是23:59:60,然后才是00:00:00,很奇葩很詭異是不是。
          2. 負(fù)閏秒,23:59:58的下一秒就是00:00:00,但是目前沒(méi)有出現(xiàn)過(guò)負(fù)閏秒。

          閏秒的時(shí)間調(diào)整一般是在6月30日或者12月31日,而離我們最近的一次閏秒的調(diào)整則是在2016年的12月31日。

          從1972年到現(xiàn)在,已經(jīng)發(fā)生了20多次閏秒,對(duì)于我們的系統(tǒng)配置來(lái)說(shuō),通過(guò)NTP的服務(wù)來(lái)進(jìn)行時(shí)間同步,如果服務(wù)器收到閏秒的處理通知,則會(huì)一級(jí)級(jí)下發(fā)到最邊緣的NTP服務(wù)器,然后通知到客戶端的操作系統(tǒng),最終由操作系統(tǒng)來(lái)處理閏秒。

          下面的表格是歷年發(fā)生閏秒的時(shí)間:

          6月30日12月31日
          1972年+1+1
          1973年0+1
          1974年0+1
          1975年0+1
          1976年0+1
          1977年0+1
          1978年0+1
          1979年0+1
          1981年+10
          1982年+10
          1983年+10
          1985年+10
          1987年0+1
          1989年0+1
          1990年0+1
          1992年+10
          1993年+10
          1994年+10
          1995年0+1
          1997年+10
          1998年0+1
          2005年0+1
          2008年0+1
          2012年+10
          2015年+10
          2016年0+1

          帶來(lái)的影響

          雖然閏秒對(duì)普通人的日常生活沒(méi)有任何影響,但是對(duì)于開(kāi)啟NTP服務(wù)的Linux系統(tǒng)來(lái)說(shuō)有致命的風(fēng)險(xiǎn),在Linux kernel 2.6.29之前版本存在bug,在進(jìn)行閏秒調(diào)整時(shí)可能會(huì)引起系統(tǒng)導(dǎo)致ntpd進(jìn)程死鎖,從而導(dǎo)致crash。另外由于應(yīng)用程序不能處理閏秒的問(wèn)題導(dǎo)致時(shí)間的變化,會(huì)導(dǎo)致CPU load激增。

          在上一次閏秒產(chǎn)生,國(guó)外Reddit、Mozilla、FourSquare、Yelp、LinkedIn和Gawker都產(chǎn)生了一定的問(wèn)題,其中Reddit宕機(jī)時(shí)間超過(guò)1個(gè)半小時(shí)。其中,或許你能很明顯的看到異常錯(cuò)誤信息:kernel[81951.244556] Clock: inserting leap second 23:59:60 UTC

          另外,針對(duì)數(shù)據(jù)庫(kù)方面,23:59:60時(shí)間的問(wèn)題兼容也不盡相同。

          PostgreSQL:PostgreSQL可以兼容23:59:60的寫(xiě)法,不會(huì)報(bào)錯(cuò)。

          Mysql:Mysql還不支持60秒寫(xiě)法,閏秒時(shí)必須使用unix time來(lái)表示時(shí)間,否則會(huì)報(bào)錯(cuò)。

          根據(jù)目前的信息來(lái)看,Linux內(nèi)核版本高于2.6.29修復(fù)了這個(gè)問(wèn)題,NTP版本高于4.2.2p1-9會(huì)把這一秒的時(shí)間分散到大約2000秒中,低于該版本的話則會(huì)直接加一秒或者減一秒。

          解決方案

          最簡(jiǎn)單直接的方法就是閏秒發(fā)生前停止ntpd服務(wù),閏秒結(jié)束后再開(kāi)啟。

          提前一天停止ntp?/etc/init.d/ntpd?stop
          重置系統(tǒng)時(shí)間?date?-s?"`date`"
          重新開(kāi)啟ntp?ntp/etc/init.d/ntpd?start

          但是有一個(gè)很明顯的問(wèn)題就是,大公司一個(gè)服務(wù)上千臺(tái)機(jī)器,操作起來(lái)成功太高,而且停止同步是否會(huì)帶來(lái)其他的問(wèn)題不好評(píng)估影響面。

          目前像google、阿里、amazon都有一些具體的應(yīng)對(duì)方案,使用云服務(wù)的話可能不需要用戶關(guān)心這方面的問(wèn)題,如果是自己機(jī)房托管的話那么可能需要運(yùn)維開(kāi)發(fā)人員手動(dòng)處理了。

          以國(guó)內(nèi)阿里云的處理方案舉例,amazon同樣也是采用該方案

          阿里云的ECS云服務(wù)器的NTP服務(wù)采用忽略閏秒時(shí)刻的跳秒,緩慢同步消除閏秒帶來(lái)的1秒誤差的方案來(lái)面對(duì)閏秒事件,實(shí)際上采用的方案是閏秒發(fā)生前,每秒比UTC慢1/86400,經(jīng)過(guò)12小時(shí)(43200秒)后,會(huì)比UTC慢0.5秒,閏秒發(fā)生之后,每秒和UTC誤差減少1/86400,經(jīng)過(guò)12小時(shí)(43200秒)后,-0.5的誤差消除。國(guó)外Amazon也是這樣的解決方案。

          具體時(shí)間同步方案如下表格所示:

          UTC阿里云時(shí)間(北京時(shí)區(qū)阿里云時(shí)間和UTC誤差備注
          2016/12/31 11:59:592016/12/31 19:59:59+0和UTC完全同步
          12:00:0020:00:00+0
          12:00:01

          每秒比UTC慢1/86400,經(jīng)過(guò)12小時(shí)(43200秒)后,會(huì)比UTC慢0.5秒

          20:00:01+1/86400
          12:00:02



          20:00:02+2/86400

          23:59:59



          2017/1/1 07:59:59+43199/86400
          23:59:60

          閏秒

          2017/1/1 08:00:00-0.5秒和UTC誤差-0.5秒
          2017/1/1 00:00:00

          每秒和UTC誤差減少1/86400,經(jīng)過(guò)12小時(shí)(43200秒)后,-0.5的誤差消除

          08:00:01-43199/86400
          00:00:01



          08:00:02-43198/86400


          19:59:59-1/86400
          11:59:59
          2017/1/1 12:00:002017/1/1 20:00:000再一次和UTC同步
          12:00:0120:00:010

          如何預(yù)測(cè)避免

          實(shí)際上,由于地球自轉(zhuǎn)的時(shí)間無(wú)法計(jì)算,他有可能變快,也有可能變慢,受到潮汐、天氣和熔態(tài)金屬在地球核心的流動(dòng)等各方面因素的影響,下一次閏秒的時(shí)間無(wú)法預(yù)估,但是國(guó)際地球自轉(zhuǎn)和參考系服務(wù)(IERS)會(huì)提前6個(gè)月公布下一次閏秒的時(shí)間。

          巨人的肩膀:

          https://zh.wikipedia.org/wiki/%E9%97%B0%E7%A7%92

          https://developer.aliyun.com/article/68260

          https://yq.aliyun.com/articles/80045?spm=5176.10695662.1996646101.searchclickresult.746332ab0yvJRw

          https://www.cnblogs.com/luxianghao/p/6339470.html

          - END -

          往期推薦



          D站活了,爺青春回來(lái)了!!


          CPU被挖礦了,卻找不到哪個(gè)進(jìn)程!


          大家常說(shuō)的 32 位與 64 位 電腦啥概念?


          有趣!用太極拳講分布式理論,真舒服!

          ?

          點(diǎn)擊二維碼識(shí)別關(guān)注


          點(diǎn)在看,讓更多看見(jiàn)。

          瀏覽 26
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中文无码字幕在线 | 精品人视频 | 中文字幕永久在线 | 日本zaixian三区 | 美女被干舒服偷拍自拍 |