分布式數(shù)據(jù)庫 MVCC 技術(shù)探秘(二):混合邏輯時鐘

邏輯時鐘可能造成人在物理視角理解事務(wù)順序的不一致性受神,而物理時鐘雖然符合人的物理視角的一致性担钮,但是沒有辦法保持整個系統(tǒng)(分布式)時鐘的一致性刀脏。?混合邏輯時鐘則嘗試著解決物理時鐘和邏輯時鐘存在的問題?渐行。

(1)

混合邏輯時鐘為了解決邏輯時鐘和物理時鐘的問題,提供了單向的因果序列檢測和排序能力(邏輯時鐘能力)叠骑,同時保持時鐘接近物理時鐘李皇。在系統(tǒng)事件時間戳上描述采用了因果序列和物理時鐘的組合削茁,而不是單純的物理時間或者單純的因果序列宙枷。?

下面是這個算法的偽碼表示,其中茧跋,混合邏輯時鐘的時間戳使用兩個值l,c來表示慰丛,物理時鐘用pt表示:

?

該算法源自論文《?Logical Physical Clocks and Consistent Snapshots in Globally Distributed Databases?》●迹混合邏輯時鐘實現(xiàn)了單向的因果檢測和排序诅病,同時能夠修正時間不一致帶來的偏差。我們再來看看論文中的一個例子:

?

從算法可以很清楚知道粥烁,它讓混合邏輯時鐘表示物理時鐘的值盡量與本地節(jié)點的物理時鐘保持一致贤笆,但是不依賴本地的物理時鐘,因此讨阻,不用擔(dān)心本地時鐘的回退芥永,如果和NTP結(jié)合使用時,也不用擔(dān)心NTP 跳變帶來的問題钝吮;混合邏輯時鐘表示的邏輯時鐘值是一個絕對值埋涧。 與Google True Time相比,不存在True Time的overlap問題奇瘦。

因為這諸多好處棘催,混合邏輯時鐘在數(shù)據(jù)庫和一些分布式系統(tǒng)中得到廣泛的應(yīng)用,比如CockroachDB耳标,HDFS(一致性快照)醇坝。

(2)

接下來,我們看看混合邏輯時鐘存在的問題次坡。

由算法可理解纲仍,混合邏輯時鐘算法其實只關(guān)心兩種情況的先后順序:

在同一個進程或者線程中發(fā)生的事件的前后順序

進程之間發(fā)送消息接收消息這兩個事件的前后順序

如果把進程理解成系統(tǒng)的一個session,它內(nèi)部的邏輯時鐘能夠保證session內(nèi)事件的順序贸毕,比如在同一個session的先執(zhí)行事務(wù)1郑叠,再執(zhí)行事務(wù)2,我們會認(rèn)為事務(wù)2一定是在事務(wù)1結(jié)束(提交或許abort)后開始執(zhí)行的明棍。 但是出現(xiàn)了跨session乡革,特別是這個session 在系統(tǒng)外的節(jié)點(application 調(diào)用系統(tǒng)的接口)這個前后關(guān)系就很難得不到保證。舉個例子:

Session1、Session2 都關(guān)聯(lián)了分布式系統(tǒng)內(nèi)的節(jié)點沸版,而Application被部署在分布式系統(tǒng)之外的節(jié)點上嘁傀。從物理時間上看,Application先在Session1執(zhí)行txn1视粮,Application接收到txn1 committed消息后细办,再在Session2上執(zhí)行txn2。Application在物理視角看起來蕾殴,txn2的開始時間一到晚于txn1的提交時間笑撞。但從邏輯時鐘的角度來看, 完全有可能存在Session2的開始時間要早于Session1的提交時間的情況(因為兩個Session 之間沒有交互钓觉,兩者之間的混亂邏輯時鐘沒有因果檢測和修正時間茴肥,在物理時鐘的偏差范圍內(nèi)就存在 Session2的開始時間要早于Session1的提交時間的可能 )。

混合邏輯時間可以讓邏輯時鐘的值盡量等于本地物理時鐘的值荡灾,但是它從本質(zhì)上還是邏輯時鐘的算法瓤狐,在物理時鐘的偏差范圍內(nèi),依然存在上述問題批幌。

這帶來一個新的問題:系統(tǒng)執(zhí)行結(jié)果的正確性是否依賴事務(wù)之間的先后順序(同一個session 之間的事務(wù)的先后順序可以保證础锐,但是不同的session之間的先后順序無法保證)。那應(yīng)該如何?保證不同的session之間的事務(wù)執(zhí)行的順序荧缘?兩種可能的解決方法:

把Application的節(jié)點包含在邏輯時鐘的分布式系統(tǒng)之內(nèi)皆警。

使用帶時間窗口的混合邏輯時鐘。

方法1雖然能解決問題胜宇,但對現(xiàn)有系統(tǒng)的入侵性太大耀怜,因此并不實用。方法2似乎只有Google True Time可以很好的解決桐愉。

總結(jié)

混合邏輯時鐘可以保證同一個process內(nèi)部事件的先后順序财破,但是解決不了系統(tǒng)外事件發(fā)生邏輯前后順序與物理時間前后順序的一致性。即使存在這樣的問題从诲,Cockroach依然還在使用該機制左痢,下篇文章將介紹Cockroach MVCC實現(xiàn)流程。

關(guān)于"NoSQL漫談"

NoSQL主要泛指一些分布式的非關(guān)系型數(shù)據(jù)存儲技術(shù)系洛,這其實是一個非常廣泛的定義俊性,可以說涉及到分布式系統(tǒng)技術(shù)的方方面面。隨著人工智能描扯、物聯(lián)網(wǎng)定页、大數(shù)據(jù)云計算以及區(qū)塊鏈技術(shù)的不斷普及绽诚,NoSQL技術(shù)將會發(fā)揮越來越大的價值典徊。

1杭煎、具有1-5工作經(jīng)驗的,面對目前流行的技術(shù)不知從何下手卒落,

需要突破技術(shù)瓶頸的可以加羡铲。

2、在公司待久了儡毕,過得很安逸也切,

但跳槽時面試碰壁。

需要在短時間內(nèi)進修腰湾、跳槽拿高薪的可以加雷恃。

3、如果沒有工作經(jīng)驗檐盟,但基礎(chǔ)非常扎實褂萧,對java工作機制押桃,

常用設(shè)計思想葵萎,常用java開發(fā)框架掌握熟練的,可以加唱凯。

4羡忘、覺得自己很牛B,一般需求都能搞定磕昼。

但是所學(xué)的知識點沒有系統(tǒng)化卷雕,很難在技術(shù)領(lǐng)域繼續(xù)突破的可以加。

5. 群號:高級架構(gòu)群 Java進階群:180705916備注好信息票从!

6.阿里Java高級大牛直播講解知識點漫雕,分享知識,

多年工作經(jīng)驗的梳理和總結(jié)峰鄙,帶著大家全面浸间、

科學(xué)地建立自己的技術(shù)體系和技術(shù)認(rèn)知!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吟榴,一起剝皮案震驚了整個濱河市魁蒜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吩翻,老刑警劉巖兜看,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狭瞎,居然都是意外死亡细移,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門熊锭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來弧轧,“玉大人缔刹,你說我怎么就攤上這事×诱耄” “怎么了校镐?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長捺典。 經(jīng)常有香客問我鸟廓,道長,這世上最難降的妖魔是什么襟己? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任引谜,我火速辦了婚禮,結(jié)果婚禮上擎浴,老公的妹妹穿的比我還像新娘员咽。我一直安慰自己,他們只是感情好贮预,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布贝室。 她就那樣靜靜地躺著,像睡著了一般仿吞。 火紅的嫁衣襯著肌膚如雪滑频。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天唤冈,我揣著相機與錄音峡迷,去河邊找鬼。 笑死你虹,一個胖子當(dāng)著我的面吹牛绘搞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播傅物,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼夯辖,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了挟伙?” 一聲冷哼從身側(cè)響起楼雹,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎尖阔,沒想到半個月后贮缅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡介却,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年谴供,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片齿坷。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡桂肌,死狀恐怖数焊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情崎场,我是刑警寧澤佩耳,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站谭跨,受9級特大地震影響干厚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜螃宙,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一蛮瞄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谆扎,春花似錦挂捅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至苗缩,卻和暖如春饵蒂,著一層夾襖步出監(jiān)牢的瞬間声诸,已是汗流浹背酱讶。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留彼乌,地道東北人泻肯。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像慰照,于是被迫代替她去往敵國和親灶挟。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

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

  • 除了開會毒租,讓我覺得最浪時間的就是培訓(xùn)了稚铣。最近參與了幾場單位組織的培訓(xùn),算是讓我徹底對培訓(xùn)活動死了心墅垮。 前一段時間參...
    汲思廣溢閱讀 547評論 0 2
  • 談?wù)勀男┛坦倾懶牡膼蹜? 在情人節(jié)的夜晚惕医,看到兒同學(xué)查媽曬出與查爸深情相擁,嘴里含著一支藍色妖姬親...
    煙雨程程閱讀 319評論 0 0
  • 翻譯p81頁會話算色。 (在運動場) 木村:早上好抬伺。 小李:早上好。 木村:小李經(jīng)常來運動場嗎灾梦? 小李:是啊峡钓,經(jīng)常來運...
    淺淺清清YUJING閱讀 389評論 1 0