袖珍分布式系統(tǒng)(三)

本文是Distributed systems for fun and profit的第三部分贮尖,本文是閱讀該文后的一些記錄既们。

Time and order

先來看第一個(gè)問題:

What is order and why is it important?

為什么我們要關(guān)心是否 A happened before B?

回答這個(gè)問題之前,我們先來看下分布式編程的定義酷含。

the art of solving the same problem that you can solve on a single computer using multiple computers.

在單機(jī)系統(tǒng)中香璃,傳統(tǒng)的模式是: a single program, one process, one memory space running on one CPU删窒。我們做了很多努力來給編程者提供一種簡單的編程模型,一種順序執(zhí)行的模型颠毙,讓程序?qū)嶋H執(zhí)行的順序就是代碼的順序斯入。

但是我們一旦來到分布式環(huán)境中,我們卻發(fā)現(xiàn)再也沒有這種簡單的編程模型了蛀蜜,程序?qū)嶋H執(zhí)行的順序你忽然間就無法預(yù)測(cè)了刻两,因?yàn)槊總€(gè)節(jié)點(diǎn)時(shí)鐘不是嚴(yán)格同步的,當(dāng)然你可以去用復(fù)雜的技術(shù)來實(shí)現(xiàn)所有節(jié)點(diǎn)的時(shí)鐘同步滴某,然后給予每個(gè)操作一個(gè)時(shí)間戳磅摹,從而得到一個(gè)全局的total order;另一個(gè)思路是通過一個(gè)communication system霎奢,給每個(gè)操作都編號(hào)户誓,從而得到一個(gè)順序,但是就像我們之前說的一樣幕侠,在分布式系統(tǒng)中帝美,通信是不可靠的,您不可能確定的知道另外一個(gè)節(jié)點(diǎn)的狀態(tài)橙依,我們可以看到以上兩種方法都很難证舟。

Total and partial order

在分布式環(huán)境中一種常見的狀態(tài)是:partial order硕旗,即部分有,在集合中不是任意兩個(gè)元素都是可比較的女责。

Total 和 partial order 都滿足 自反性和傳遞性漆枚。

If a ≤ b and b ≤ a then a = b

(antisymmetry);

If a ≤ b and b ≤ c then a ≤ c

(transitivity);

total order還滿足:

a ≤ b or b ≤ a (totality) for all a, b in X

即所有集合中的元素都是有序的,而partial order則:

a ≤ a (reflexivity) for all a in X

即集合中的元素不是都有序抵知,只滿足自反性墙基。

在單機(jī)系統(tǒng)中,所有的指令和消息的執(zhí)行都是可預(yù)測(cè)的刷喜,是有一個(gè)total order的残制,因此程序的行為是可預(yù)測(cè)的,但是在分布式系統(tǒng)中想要實(shí)現(xiàn)total order掖疮,代價(jià)是巨大的初茶,因?yàn)?/p>

communication is expensive, and time synchronization is di?cult and fragile

What is time?

Time is a source of order - it allows us to de?ne the order of operations- which coincidentally also has an interpretation that people can understand (a second, a minute, a day and so on).

什么是時(shí)間?時(shí)間有時(shí)候就像一個(gè)計(jì)數(shù)器浊闪,只不過時(shí)間這個(gè)計(jì)數(shù)器比較重要恼布,我們用這個(gè)計(jì)數(shù)器產(chǎn)生的數(shù)值來定義整個(gè)人類的最重要的概念:時(shí)間。

Timestamps really are a shorthand value for representing the state of the world from the start of the universe to the current moment - if something occurred at a particular timestamp, then it was potentially in?uenced by everything that happened before it.

什么是時(shí)間戳(Timestamps)搁宾,Timestamps定義了世界從初始到現(xiàn)在的狀態(tài)折汞,如果某件事發(fā)生在一個(gè)特定的時(shí)間點(diǎn)上,是之前影響產(chǎn)生的結(jié)果盖腿。

此處有個(gè)大前提爽待,所有的時(shí)間都以相同的速率前行著,time and timestamps在程序中應(yīng)用的時(shí)候翩腐,有3個(gè)常用的解釋:

  • Order
  • Duration
  • Interpretation

當(dāng)我說:time is a source of order鸟款,我指的是:

  • we can attach timestamps to unordered events to order them【通過給事件安排一個(gè)時(shí)間戳,從而給事件排序】
  • we can use timestamps to enforce a speci?c ordering of operations or the delivery of messages (for example, by delaying an operation if it arrives out of order)【我們可以通過時(shí)間戳給操作重新排序】
  • we can use the value of a timestamp to determine whether something happened chronologically before something else【通過時(shí)間戳知道哪個(gè)事件發(fā)生在前】

Interpretation - time as a universally comparable value.

時(shí)間戳的絕對(duì)值解釋為日期(date)栗菜,對(duì)人們非常有用的概念

Duration - durations measured in time have some relation to the real world.

像算法一般只關(guān)心Duration欠雌,通過Duration來判斷延遲,一個(gè)好的算法都希望能有低延遲疙筹。

Does time progress at the same rate everywhere?

對(duì)于問題:時(shí)間以同樣的速率進(jìn)行嗎富俄?有3個(gè)常見的回答:

  • "Global clock": yes
  • "Local clock": no, but
  • "No clock": no!

以上回答的的意思是:

  • the synchronous system model has a global clock,
  • the partially synchronous model has a local clock, and
  • in the asynchronous system model one cannot use clocks at all

下面分別來看下

Time with a "global-clock" assumption

全局時(shí)鐘(global-clock)假設(shè)是我們有個(gè)非常精確的時(shí)鐘,我們?nèi)魏稳嗽谌魏蔚胤蕉寄芸吹剿亍_@也是平時(shí)生活中我們最習(xí)以為常的時(shí)鐘霍比,對(duì)于不同時(shí)鐘間微小的差別我們并不關(guān)注。

在實(shí)際系統(tǒng)中暴备,如果我們假設(shè)有個(gè)global-clock悠瞬,即每個(gè)節(jié)點(diǎn)的時(shí)鐘都是同步的,那么我們可以通過timestamps都就可以得到一個(gè)total order,但是在系統(tǒng)間維持時(shí)鐘同步是非常難的浅妆,我們只能做到一定的范圍內(nèi)的同步望迎。

目前忽略時(shí)鐘之間的不同步問題做出來的系統(tǒng)有:

  • Facebook's Cassandra:通過時(shí)間戳來解決沖突
  • Google's Spanner:時(shí)間戳+偏差范圍來定義順序

Time with a "Local-clock" assumption

它假設(shè)了一個(gè)偏序關(guān)系

events on each system are ordered but events cannot be ordered across systems by only using a clock.

同一個(gè)機(jī)器上我們可以通過時(shí)間戳來排序,但是不同機(jī)器上的時(shí)間戳不能比較

Time with a "No-clock" assumption

不在使用時(shí)間戳凌外,而是使用counter辩尊,通過傳遞消息來交換counter,從而定義不同機(jī)器之間的事件的前后順序康辑,比較有名的論文就是:time, clocks and the ordering of events摄欲。

How is time used in a distributed system?

時(shí)間的好處是:

  1. Time can de?ne order across a system (without communication)
  2. Time can de?ne boundary conditions for algorithms

在分布式系統(tǒng)中,定義事件的順序非常重要疮薇,因?yàn)椋?/p>

  • where correctness depends on (agreement on) correct event ordering, for example serializability in a distributed database【正確性依賴于事件的順序】
  • order can be used as a tie breaker when resource contention occurs, for example if there are two orders for a widget, ful?ll the ?rst and cancel the second one【當(dāng)發(fā)生資源爭(zhēng)用的時(shí)候可以用來做裁決】

當(dāng)我們有全局時(shí)鐘的時(shí)候胸墙,我們不需要通信就能夠確定順序,不幸的是按咒,我們一般都沒有全局時(shí)鐘迟隅,因此只能通過通信來確定時(shí)序。

時(shí)間除了用來確定時(shí)序外励七,還能定義算法的邊界玻淑,特別是可以區(qū)分 high latency 和 server or network link is down,而用來探測(cè)它倆區(qū)別的算法就是:failure detectors呀伙。

Failure detectors (time for cuto?)

在分布式環(huán)境中,我們?cè)趺粗酪粋€(gè)節(jié)點(diǎn)是否宕機(jī)了呢添坊?我們可以通過等待一定時(shí)間后認(rèn)為節(jié)點(diǎn)失敗了剿另。

那問題是這個(gè)一定時(shí)間是多久呢?

這依賴于節(jié)點(diǎn)之間的延遲贬蛙,算法一般不會(huì)直接設(shè)置一個(gè)精確的值雨女,而是會(huì)對(duì)“一定時(shí)間”這個(gè)概念做個(gè)很好的抽象。

A failure detector is a way to abstract away the exact timing assumptions. Failure detectors are implemented using heartbeat messages and timers. Processes exchange heartbeat messages. If a message response is not received before the timeout occurs, then the process suspects the other process.

而failure detector是一個(gè)解決方案阳准,通過心挑信息來探測(cè)存活性氛堕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市野蝇,隨后出現(xiàn)的幾起案子讼稚,更是在濱河造成了極大的恐慌,老刑警劉巖绕沈,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锐想,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡乍狐,警方通過查閱死者的電腦和手機(jī)赠摇,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人藕帜,你說我怎么就攤上這事烫罩。” “怎么了洽故?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵贝攒,是天一觀的道長。 經(jīng)常有香客問我收津,道長饿这,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任撞秋,我火速辦了婚禮长捧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吻贿。我一直安慰自己串结,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布舅列。 她就那樣靜靜地躺著肌割,像睡著了一般。 火紅的嫁衣襯著肌膚如雪帐要。 梳的紋絲不亂的頭發(fā)上把敞,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音榨惠,去河邊找鬼奋早。 笑死,一個(gè)胖子當(dāng)著我的面吹牛赠橙,可吹牛的內(nèi)容都是我干的耽装。 我是一名探鬼主播,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼期揪,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼掉奄!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起凤薛,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤姓建,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后缤苫,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體引瀑,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年榨馁,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了憨栽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖屑柔,靈堂內(nèi)的尸體忽然破棺而出屡萤,到底是詐尸還是另有隱情,我是刑警寧澤掸宛,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布死陆,位于F島的核電站,受9級(jí)特大地震影響唧瘾,放射性物質(zhì)發(fā)生泄漏措译。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一饰序、第九天 我趴在偏房一處隱蔽的房頂上張望领虹。 院中可真熱鬧,春花似錦求豫、人聲如沸塌衰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽最疆。三九已至,卻和暖如春蚤告,著一層夾襖步出監(jiān)牢的瞬間努酸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國打工杜恰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蚊逢,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓箫章,卻偏偏與公主長得像,于是被迫代替她去往敵國和親镜会。 傳聞我的和親對(duì)象是個(gè)殘疾皇子檬寂,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 你們冬天會(huì)洗冷水澡嗎桶至? 聽說,游冬泳匾旭,一年四季洗冷水澡的人镣屹,身體會(huì)好很多,真的是這樣嗎价涝? 記得以前聽我爸說女蜈,他一個(gè)...
    小小南南南閱讀 2,274評(píng)論 0 2
  • 我讀高中時(shí)伪窖,有個(gè)哥們逸寓,特別胖。一米七多點(diǎn)覆山,得有100多公斤竹伸。因?yàn)轶w重近乎0.1噸,我們就給他取了個(gè)外號(hào)簇宽,叫噸哥勋篓。 ...
    怪物德瑞克閱讀 996評(píng)論 8 21
  • 在7.9季中版本改動(dòng)后,很多玩家沉迷于三大坦克英雄和新坦克裝備的改動(dòng)魏割,但峽谷先鋒成為了這個(gè)版本最大受益者譬嚣。 在7....
    LOL小雪琪閱讀 206評(píng)論 0 0
  • 有好多好多的話想要同別人講,講上一輩子见妒,有些不安就像針一樣要從身體里扎出成千上百個(gè)窟窿孤荣,每一個(gè)都是靈魂的傷口,而你...
    kitakimi閱讀 198評(píng)論 0 1
  • 來大理已有旬日须揣,日日見蒼山負(fù)雪巍立盐股,心向往之,知有今日之登臨也耻卡。 至蒼山腳下疯汁,仰望,青松被覆卵酪。以其山之高也幌蚊,故綠有...
    胡斐閱讀 644評(píng)論 3 4