分布式系統(tǒng)的時(shí)間問(wèn)題

由于在分布式系統(tǒng)中沒(méi)有絕對(duì)的全局時(shí)鐘趁耗,各個(gè)物理設(shè)備上的本地時(shí)鐘也不是準(zhǔn)確的枷踏,所以為了解決一些時(shí)序的問(wèn)題,形形色色的算法和優(yōu)化措施被提出來(lái)了肴敛。

晶振和時(shí)鐘偏移

在計(jì)算機(jī)中主要通過(guò)晶體的震蕩周期進(jìn)行計(jì)時(shí)艾君,晶體的震蕩周期決定了單機(jī)的時(shí)鐘分辨率采够。比如計(jì)算機(jī)中使用的是一個(gè)晶振12Mhz的石英,那么時(shí)鐘周期就是1/12us冰垄。計(jì)算機(jī)無(wú)法分辨更細(xì)的時(shí)間間隔了蹬癌,這對(duì)高精度要求的系統(tǒng)造成了巨大的挑戰(zhàn)。

另外,時(shí)鐘頻率也可能因?yàn)闇囟鹊韧獠恳蛩貙?dǎo)致時(shí)鐘偏移逝薪,普通的石英晶體的漂移率大約10e-6 s/s伴奥,也就是12天左右會(huì)有1s的偏差。這對(duì)微秒精度的系統(tǒng)同樣造成了困擾翼闽。比如GPS等需要精確地時(shí)間戳來(lái)定位的系統(tǒng),時(shí)間的精度影響了定位的準(zhǔn)確性洲炊。

時(shí)間正確性

我們通過(guò)外部同步和內(nèi)部同步的方式來(lái)實(shí)現(xiàn)時(shí)鐘正確性感局。

  • 外部同步: 設(shè)置同步范圍D>0, UTC時(shí)間源S,只要時(shí)鐘C與S在任意時(shí)間點(diǎn)上的歐氏距離小于D暂衡,那么就處于外部同步狀態(tài)询微。
  • 內(nèi)部同步: 系統(tǒng)內(nèi)部時(shí)鐘在D范圍內(nèi)一致,也就是說(shuō)時(shí)鐘沒(méi)有過(guò)大的偏移狂巢。

時(shí)鐘正確性在不同場(chǎng)景下有不同的提法撑毛,一種提法是時(shí)鐘的漂移率始終在一個(gè)設(shè)定范圍內(nèi)。另一種較弱的提法是要求時(shí)鐘始終保證單調(diào)性唧领。比如編譯工具make會(huì)根據(jù)時(shí)間戳重新編譯文件藻雌,假如在設(shè)置一個(gè)文件的時(shí)間戳以后,把時(shí)鐘向后偏移了一段時(shí)間斩个,然后修改了文件胯杭,那么make將會(huì)錯(cuò)誤的不編譯這些文件。另一個(gè)例子是密碼學(xué)中使用時(shí)間戳防止重放攻擊受啥,如果時(shí)間向前偏移量超過(guò)了可接受閾值做个,那么就會(huì)很容易受到攻擊。

ntp同步服務(wù)

ntp(Network Time Protocol)滚局,網(wǎng)絡(luò)時(shí)間協(xié)議定義了時(shí)間服務(wù)的體系結(jié)構(gòu)以及在互聯(lián)網(wǎng)上發(fā)布時(shí)間信息的協(xié)議居暖。ntp的主要設(shè)計(jì)特色有:

  • 提供一個(gè)服務(wù),能夠讓跨互聯(lián)網(wǎng)用戶能夠跟UTC時(shí)間精確同步
  • 提供一個(gè)能在漫長(zhǎng)的鏈接丟失中生存的服務(wù): 提供冗余的服務(wù)器并在服務(wù)器之間提供冗余的路徑
  • 提供保護(hù)藤肢,防止對(duì)時(shí)間服務(wù)的干擾太闺。

ntp使用以下三種模式相互同步,組播、過(guò)程調(diào)用和對(duì)稱模式:

  1. 組播模式應(yīng)用于高速LAN上谤草,一臺(tái)或多臺(tái)服務(wù)器定期將時(shí)間廣播到LAN中的其他計(jì)算節(jié)點(diǎn)上
  2. 過(guò)程調(diào)用模式跟束,類似于Cristina過(guò)程:
    進(jìn)程p估算到遠(yuǎn)程進(jìn)程q的延遲(比如多次使用ping獲得多個(gè)T_r,取最小值)丑孩,然后請(qǐng)求q獲得時(shí)間戳t冀宴,最后設(shè)置時(shí)間為t + T_r/2
  3. 對(duì)稱模式是獲得較高準(zhǔn)確精度的方法:
    設(shè)服務(wù)器B時(shí)鐘是正確的時(shí)鐘,Ta1絕對(duì)時(shí)間是指服務(wù)器A本地時(shí)鐘到達(dá)Ta1是温学,正確的時(shí)間是多少略贮。這也是A需要同步的時(shí)間;
    a. 服務(wù)器A在本地Ta1時(shí)間向B發(fā)送時(shí)間請(qǐng)求包
    b. 服務(wù)器B在本地Tb1時(shí)間收到B發(fā)來(lái)的包,Tb1 = Ta1絕對(duì)時(shí)間 + T請(qǐng)求時(shí)延
    c. 服務(wù)器B在本地Tb2=Tb1 + 1時(shí)間發(fā)送時(shí)間戳包給A
    d. 服務(wù)器A在本地Ta2時(shí)間收到B回復(fù)的時(shí)間戳包,Ta2絕對(duì)時(shí)間 = Tb2 + T回復(fù)時(shí)延
    那么A需要同步的時(shí)間 = Tb2 + T回復(fù)時(shí)延 = Tb2 + (Tb1 - Tb2 + Ta2 - Ta1) / 2
    當(dāng)然這個(gè)算法也有個(gè)缺陷逃延,就是假設(shè)了包來(lái)回的時(shí)延相等览妖,在光纖這種半雙工物理介質(zhì)中,時(shí)延不一定相等揽祥,就會(huì)造成誤差讽膏。

邏輯時(shí)鐘與向量時(shí)鐘

邏輯時(shí)鐘是一種簡(jiǎn)單的相對(duì)計(jì)時(shí)方式,通常是一個(gè)單調(diào)增長(zhǎng)的軟件計(jì)數(shù)器拄丰。Lamport Timers利用邏輯時(shí)間維護(hù)不同進(jìn)程間事件發(fā)生的時(shí)序:

  • LC1: 在進(jìn)程pi發(fā)出事件之前府树,L1+=1
  • Li: Li+=1
  • LC2: (a) 當(dāng)進(jìn)程pi收到消息m時(shí),在m中附加值t=L1
    (b)在接受(m, t)時(shí)料按,進(jìn)程pj 計(jì)算Lj: =max(Lj ,t)奄侠,然后再給receive(m)打上時(shí)間戳Lj+=1
    Lamport時(shí)鐘可以很容易根據(jù)e->e'(同一序列中) => L(e) < L(e'),但是無(wú)法根據(jù)L(e) < L(e') 推出 e->e'载矿,

向量時(shí)鐘的提出垄潮,克服了lamport 時(shí)鐘的這個(gè)缺陷:

  • VC1: 初始情況下,vi[j] = 0
  • VC2: 給事件pi加時(shí)間戳之前闷盔,vi[j] += 1
  • VC3: pi在他發(fā)送的每個(gè)消息中包括值t=Vi
  • VC4: 當(dāng)pi接收到消息中的時(shí)間戳?xí)r弯洗,設(shè)置vi[j] = max(Vi[j], t[j]), j={0,1,..N},這個(gè)過(guò)程稱為merge(合并)

向量時(shí)鐘就可以根據(jù)L(e) < L(e') => e->e'

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末馁筐,一起剝皮案震驚了整個(gè)濱河市涂召,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌敏沉,老刑警劉巖果正,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盟迟,居然都是意外死亡秋泳,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門攒菠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)迫皱,“玉大人,你說(shuō)我怎么就攤上這事辖众∽科穑” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵凹炸,是天一觀的道長(zhǎng)戏阅。 經(jīng)常有香客問(wèn)我,道長(zhǎng)啤它,這世上最難降的妖魔是什么奕筐? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任舱痘,我火速辦了婚禮,結(jié)果婚禮上离赫,老公的妹妹穿的比我還像新娘芭逝。我一直安慰自己,他們只是感情好渊胸,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布旬盯。 她就那樣靜靜地躺著,像睡著了一般翎猛。 火紅的嫁衣襯著肌膚如雪瓢捉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天办成,我揣著相機(jī)與錄音,去河邊找鬼搂漠。 笑死迂卢,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的桐汤。 我是一名探鬼主播而克,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼怔毛!你這毒婦竟也來(lái)了员萍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤拣度,失蹤者是張志新(化名)和其女友劉穎碎绎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抗果,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡筋帖,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了冤馏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片日麸。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖逮光,靈堂內(nèi)的尸體忽然破棺而出代箭,到底是詐尸還是另有隱情,我是刑警寧澤涕刚,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布嗡综,位于F島的核電站,受9級(jí)特大地震影響副女,放射性物質(zhì)發(fā)生泄漏蛤高。R本人自食惡果不足惜蚣旱,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望戴陡。 院中可真熱鬧塞绿,春花似錦、人聲如沸恤批。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喜庞。三九已至诀浪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間延都,已是汗流浹背雷猪。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晰房,地道東北人求摇。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像殊者,于是被迫代替她去往敵國(guó)和親与境。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容