0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳談分布式系統(tǒng)的定義及屬性

如意 ? 來源:ETHFANS ? 作者:Ajian ? 2020-06-28 10:11 ? 次閱讀

分布式系統(tǒng)經(jīng)常讓人覺得云山霧罩,主要是因?yàn)橄嚓P(guān)知識(shí)點(diǎn)比較零散不成體系。但別擔(dān)心,我很清楚這個(gè)有點(diǎn)尷尬的情況。我自學(xué)分布式計(jì)算的時(shí)候,就有很多次完全摸不著頭腦?,F(xiàn)在,經(jīng)歷過很多次嘗試和死磕之后,我終于有信心可以跟大家分享一下有關(guān)分布式系統(tǒng)的基礎(chǔ)知識(shí)了。

我還想討論一下區(qū)塊鏈技術(shù)給分布式相關(guān)的學(xué)術(shù)界和工業(yè)界已然帶來的深遠(yuǎn)影響。區(qū)塊鏈促使工程師和科學(xué)家們重新審視和反思那些在分布式計(jì)算領(lǐng)域已經(jīng)根深蒂固的范式。也許在對(duì)這個(gè)領(lǐng)域的研究發(fā)展推動(dòng)作用上,沒有什么比區(qū)塊鏈技術(shù)更強(qiáng)有力的了。

分布式系統(tǒng)肯定不能算新技術(shù)了??茖W(xué)家和工程師們過去數(shù)十年中一直在研究這個(gè)課題。那么區(qū)塊鏈跟分布式系統(tǒng)有什么關(guān)系呢?簡(jiǎn)單地說,如果沒有分布式系統(tǒng),也就不可能有區(qū)塊鏈帶來的技術(shù)貢獻(xiàn)。

本質(zhì)上,一條區(qū)塊鏈就是一種新型的分布式系統(tǒng)。區(qū)塊鏈自起源于比特幣以來就一直對(duì)分布式計(jì)算領(lǐng)域持續(xù)產(chǎn)生影響。所以想真正搞明白區(qū)塊鏈的運(yùn)行原理,深入理解分布式系統(tǒng)的原理就至關(guān)重要。

但不幸的是,大部分關(guān)于分布式計(jì)算的文獻(xiàn)資料,要么太晦澀艱深,要么散布在不計(jì)其數(shù)的學(xué)術(shù)論文中。更麻煩的是,分布式系統(tǒng)為了滿足不同的需求,可能有多達(dá)上百種不同的架構(gòu)。要把這些都?xì)w納成一個(gè)統(tǒng)一且易于理解的框架的確很困難。

因?yàn)檫@個(gè)領(lǐng)域涉及知識(shí)點(diǎn)太廣,我必須很專注在我力所能及可以講明白的部分。而且我需要一些概括性的描述以便對(duì)系統(tǒng)復(fù)雜性進(jìn)行簡(jiǎn)化。請(qǐng)注意,我不會(huì)幫你成為這個(gè)領(lǐng)域的專家。但我會(huì)幫你快速入門分布式系統(tǒng)及其共識(shí)機(jī)制。

讀完這篇長(zhǎng)文之后,你應(yīng)該會(huì)對(duì)以下內(nèi)容有更深刻的認(rèn)識(shí):

什么是分布式系統(tǒng),

分布式系統(tǒng)的特性,

分布式系統(tǒng)中的共識(shí)意味著什么,

基礎(chǔ)共識(shí)算法(比如 DLS 和 PBFT)以及

為什么中本聰共識(shí)非常重要。

嗯,不作過多解釋了,快上車。

什么是分布式系統(tǒng)?

一個(gè)分布式系統(tǒng)包括一組相互獨(dú)立的進(jìn)程(比如計(jì)算機(jī)),它們互相傳遞消息并進(jìn)行協(xié)作以完成一個(gè)共同的任務(wù)(比如解決一個(gè)計(jì)算問題)。

簡(jiǎn)單的說,一個(gè)分布式系統(tǒng)就是一組計(jì)算機(jī),它們互相協(xié)作以完成一個(gè)共同的任務(wù)。雖然組成分布式系統(tǒng)的進(jìn)程是相互獨(dú)立的,但整個(gè)系統(tǒng)對(duì)于終端用戶而言可以看成只是一臺(tái)計(jì)算機(jī)。

像我之前提到的,分布式系統(tǒng)可以有上百種架構(gòu)。比如,一臺(tái)普通的計(jì)算機(jī)也可以看成是一個(gè)分布式系統(tǒng):中央處理器,內(nèi)存,輸入輸出都是獨(dú)立的進(jìn)程,互相協(xié)作以完成共同的任務(wù)。

又比如飛機(jī),下圖中的不同組件協(xié)同工作,載你從A點(diǎn)飛到B點(diǎn):

詳談分布式系統(tǒng)的定義及屬性

-圖片來源:WEETECH -

在這篇文章中,我們將重點(diǎn)看看那些由空間上隔離的計(jì)算機(jī)組成的分布式系統(tǒng)。

詳談分布式系統(tǒng)的定義及屬性

-作者制圖-

請(qǐng)注意:我可能會(huì)使用若干術(shù)語表達(dá)與“”進(jìn)程”相同的含義:“節(jié)點(diǎn)”(node、peer),“計(jì)算機(jī)”(computer),“組件”(component)。在這篇文章里它們都是同義詞。類似地,“網(wǎng)絡(luò)”(network)和“系統(tǒng)”(system)在本文中也是同義詞。

分布式系統(tǒng)的特性

每個(gè)分布式系統(tǒng)都有一組特性,如下:

A) 并發(fā)性

進(jìn)程在系統(tǒng)中是并發(fā)運(yùn)行的,即同一時(shí)刻有多個(gè)事件發(fā)生。換句話說,任一時(shí)刻,系統(tǒng)中每個(gè)節(jié)點(diǎn)的事件執(zhí)行都是相互獨(dú)立的。

這就需要協(xié)作。

詳談分布式系統(tǒng)的定義及屬性

-分布式系統(tǒng)中的時(shí)間,時(shí)鐘和事件排序,來自 Lamport, L (1978)-

B) 全局時(shí)鐘的缺失

分布式系統(tǒng)要能運(yùn)轉(zhuǎn),我們就需要一個(gè)確定事件排序的方法。但是,由于分布式系統(tǒng)中的計(jì)算機(jī)是空間上隔離且并發(fā)運(yùn)行的,有時(shí)候很難說清楚兩個(gè)事件中哪個(gè)先發(fā)生。換句話說,對(duì)于系統(tǒng)中所有計(jì)算機(jī)而言,沒有一個(gè)統(tǒng)一的全局時(shí)鐘來決定事件發(fā)生的順序。

Leslie Lamport 在他的論文《分布式系統(tǒng)中的時(shí)間,時(shí)鐘和事件排序》里,展示了如何通過以下事實(shí)來決定事件的先后順序:

消息總是先發(fā)送,而后被接收。

每臺(tái)計(jì)算機(jī)都有事件的排序。

通過確定事件之間的相對(duì)順序(哪個(gè)先發(fā)生,哪個(gè)后發(fā)生),我們就可以得到關(guān)于系統(tǒng)中事件的一個(gè)局部排序(partial ordering)。Lamport 的論文描述了一種算法,要求每臺(tái)計(jì)算機(jī)都監(jiān)聽其它計(jì)算機(jī)。這樣,所有事件就可以根據(jù)這個(gè)局部排序得到全局排序。

但是,如果完全基于每個(gè)獨(dú)立計(jì)算機(jī)監(jiān)聽到的事件進(jìn)行排序,有可能會(huì)碰到這種情況:得出的排序與外部用戶的觀察不一致。所以,論文提到該算法仍然無法完全排除異常情況。最后,Lamport 討論了如何通過適當(dāng)?shù)赝轿锢頃r(shí)鐘避免上述異常。

但是,等一下——這里有個(gè)很重要的前提:協(xié)調(diào)獨(dú)立的時(shí)鐘并使之同步是一個(gè)非常復(fù)雜的計(jì)算機(jī)科學(xué)問題。即使你一開始把一堆時(shí)鐘調(diào)成同步的狀態(tài),一段時(shí)間后它們的計(jì)時(shí)也會(huì)開始產(chǎn)生偏差。這被稱作“時(shí)鐘偏移”,是一種時(shí)鐘計(jì)時(shí)頻率發(fā)生細(xì)微差別的現(xiàn)象。

實(shí)質(zhì)上,Lamport 的論文證明了:在由空間上隔離的一組計(jì)算機(jī)組成的分布式系統(tǒng)中,時(shí)間和事件排序是導(dǎo)致系統(tǒng)可能出錯(cuò)的障礙根源。

C) 單點(diǎn)可能出錯(cuò)

理解分布式系統(tǒng)的一個(gè)關(guān)鍵點(diǎn)在于認(rèn)識(shí)到,分布式系統(tǒng)中的組件是會(huì)出錯(cuò)的。這也是分布式系統(tǒng)被稱作“容錯(cuò)分布式計(jì)算”的原因。不出錯(cuò)的系統(tǒng)是不可能存在的。現(xiàn)實(shí)當(dāng)中的系統(tǒng)總是暴露在許多可能的錯(cuò)誤和故障風(fēng)險(xiǎn)之下,這些故障包括程序崩潰;消息丟失、實(shí)真、重放;網(wǎng)絡(luò)隔離導(dǎo)致的消息延遲或丟幀;甚至是進(jìn)程完全失控、惡意發(fā)送消息。

錯(cuò)誤可以被大致分為三類:

崩潰錯(cuò)誤:組件沒有預(yù)警就停止工作(比如計(jì)算機(jī)崩潰了)。

遺漏錯(cuò)誤:組件發(fā)了一個(gè)消息但沒有被別的節(jié)點(diǎn)收到(比如這條消息丟包了)。

拜占庭錯(cuò)誤:組件不按既定規(guī)則工作。這種類型的錯(cuò)誤在可控環(huán)境中不會(huì)發(fā)生(比如谷歌和亞馬遜的數(shù)據(jù)中心),因?yàn)橐话阏J(rèn)為那種環(huán)境中系統(tǒng)里不會(huì)發(fā)生惡意行為。與之相反,拜占庭錯(cuò)誤會(huì)發(fā)生在所謂的“敵對(duì)環(huán)境”中。簡(jiǎn)單來說,當(dāng)一組去中心化的獨(dú)立參與者作為節(jié)點(diǎn)加入某個(gè)分布式網(wǎng)絡(luò)后,這些參與者可以完全不按既定規(guī)則行動(dòng),也就是說它們可以惡意地更改消息、攔截消息或者根本不發(fā)送任何消息。

了解上述概念后,那分布式系統(tǒng)的目標(biāo)就可以定義為:為一個(gè)存在可能出錯(cuò)組件的系統(tǒng)設(shè)計(jì)協(xié)議,期望該系統(tǒng)仍然能完成組件的共同任務(wù)并對(duì)用戶提供可用的服務(wù)。

考慮到所有的系統(tǒng)都可能會(huì)出錯(cuò),那我們建立一個(gè)分布式系統(tǒng)的核心考量就是,它是否可以在部分組件發(fā)生異常(無論是因?yàn)榉菒阂獾男袨楸热绫罎?出錯(cuò)或者遺漏錯(cuò)誤,還是因?yàn)閻阂庑袨楸热绨菡纪ュe(cuò)誤)的情況下繼續(xù)工作。

粗略地說,建立分布式系統(tǒng)有兩種可考慮的模式:

1) 簡(jiǎn)單容錯(cuò)

在一個(gè)簡(jiǎn)單容錯(cuò)系統(tǒng)中,我們假設(shè)系統(tǒng)中所有組件都會(huì)處于以下兩種狀態(tài)中的一個(gè):要么嚴(yán)格遵循協(xié)議工作,要么不遵循。這種類型的系統(tǒng)可以處理節(jié)點(diǎn)下線或者宕機(jī)的情況。但是它沒法處理不按既定規(guī)則工作或者惡意工作的節(jié)點(diǎn)。

2A) 拜占庭容錯(cuò)

簡(jiǎn)單容錯(cuò)系統(tǒng)在非可控環(huán)境中用處不大。在一個(gè)節(jié)點(diǎn)由獨(dú)立參與者控制,且通過無需權(quán)限的開放互聯(lián)網(wǎng)進(jìn)行通信的去中心化網(wǎng)絡(luò)里,我們需要考慮到,網(wǎng)絡(luò)中可能出現(xiàn)惡意節(jié)點(diǎn)(或者說“拜占庭式”節(jié)點(diǎn))。因此,在拜占庭容錯(cuò)系統(tǒng)中,我們假設(shè)節(jié)點(diǎn)可能會(huì)宕機(jī)或者作惡。

2B) BAR容錯(cuò)

盡管大多數(shù)現(xiàn)實(shí)系統(tǒng)都被設(shè)計(jì)成可以容忍拜占庭錯(cuò)誤,有些專家認(rèn)為,這些設(shè)計(jì)太過寬泛,并沒有考慮到所謂的“利己性”出錯(cuò),即節(jié)點(diǎn)可能因?yàn)槌鲇诤侠淼淖陨砝娑扇阂庑袨?。換句話說,根據(jù)不同的激勵(lì),節(jié)點(diǎn)可能誠(chéng)實(shí),也可能不誠(chéng)實(shí)。所以如果激勵(lì)足夠多,甚至可能大部分節(jié)點(diǎn)都會(huì)不誠(chéng)實(shí)。

更正式的定義一下,這就是 BAR 模式-同時(shí)考慮了拜占庭出錯(cuò)和利己性出錯(cuò)的情況。BAR 模式假設(shè)系統(tǒng)中有下列三種參與者:

拜占庭:這種節(jié)點(diǎn)是惡意的并且就是試圖讓你玩完。

利他:始終遵循系統(tǒng)協(xié)議的誠(chéng)實(shí)節(jié)點(diǎn)。

利己:這類節(jié)點(diǎn)只在遵循協(xié)議有利于自身時(shí)才會(huì)遵循。

D) 消息傳遞

如我前述,分布式系統(tǒng)總的計(jì)算機(jī)通過互相之間的“消息傳遞”來溝通和協(xié)作。消息可以通過任何一種消息協(xié)議傳遞,比如 HTTP 或者 RPC,亦或是為特定系統(tǒng)實(shí)現(xiàn)的一套定制協(xié)議。有兩種消息傳遞的環(huán)境:

1) 同步

在同步系統(tǒng)中,我們假定消息會(huì)在一個(gè)固定且已知的時(shí)間范圍內(nèi)接收到。

同步消息傳遞在概念上更簡(jiǎn)單,因?yàn)橛脩魰?huì)有一個(gè)時(shí)間上的保證:當(dāng)他們發(fā)送某條消息后,接收方會(huì)在一定時(shí)間內(nèi)收到它。這就使得用戶可以為他們的協(xié)議設(shè)置一個(gè)消息傳遞的耗時(shí)上限。

但是,這種假設(shè)在現(xiàn)實(shí)生活當(dāng)中的分布式系統(tǒng)中不切實(shí)際:因?yàn)榻M件計(jì)算機(jī)們可能會(huì)崩潰,或者下線,而且消息也可能丟包,重復(fù),延時(shí)或者沒有按照發(fā)送順序被接收。

2) 異步

在異步消息傳遞系統(tǒng)中,我們假定系統(tǒng)可能導(dǎo)致某條消息一直被延誤,導(dǎo)致消息重放,或者亂序發(fā)送消息。換句話說,在這種環(huán)境下,消息傳遞的預(yù)期耗時(shí)是沒有上限的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 分布式
    +關(guān)注

    關(guān)注

    1

    文章

    899

    瀏覽量

    74502
  • 分布式系統(tǒng)
    +關(guān)注

    關(guān)注

    0

    文章

    146

    瀏覽量

    19226
  • 區(qū)塊鏈
    +關(guān)注

    關(guān)注

    111

    文章

    15562

    瀏覽量

    106030
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    分布式軟件系統(tǒng)

    分布式軟件系統(tǒng)分布式軟件系統(tǒng)(Distributed Software Systems)是支持分布式處理的軟件系統(tǒng),是在由通信網(wǎng)絡(luò)互聯(lián)的多處
    發(fā)表于 07-22 14:53

    分布式控制系統(tǒng)

    分布式控制系統(tǒng)分布式控制系統(tǒng) (distributed control systems,簡(jiǎn)稱DCS),又稱為分散控制系統(tǒng),分散型控制系統(tǒng),集散控制系統(tǒng).行業(yè)內(nèi)業(yè)稱4C技術(shù)既Contro
    發(fā)表于 03-01 22:19

    分布式文件系統(tǒng)和fastDFS

    項(xiàng)目(1)(分布式文件系統(tǒng)、fastDFS,代碼實(shí)現(xiàn)fastDFS 文件上傳和下載)
    發(fā)表于 05-10 08:51

    關(guān)于分布式系統(tǒng)的全面介紹

    操作系統(tǒng)-----分布式系統(tǒng)概述
    發(fā)表于 07-25 06:59

    如何設(shè)計(jì)分布式干擾系統(tǒng)?

    什么是分布式干擾系統(tǒng)分布式干擾系統(tǒng)是一種綜合化、一體化、小型化、網(wǎng)絡(luò)化和智能化系統(tǒng),是將眾多體積小,重量輕,廉價(jià)的小功率偵察干擾機(jī)裝置在易
    發(fā)表于 08-08 06:57

    分布式系統(tǒng)的優(yōu)勢(shì)是什么?

    當(dāng)討論分布式系統(tǒng)時(shí),我們面臨許多以下這些形容詞所描述的 同類型: 分布式的、刪絡(luò)的、并行的、并發(fā)的和分散的。分布式處理是一個(gè)相對(duì)較新的領(lǐng)域,所以還沒有‘致的
    發(fā)表于 03-31 09:01

    分布式軟總線子系統(tǒng)

    分布式軟總線子系統(tǒng)簡(jiǎn)介目錄約束使用涉及倉(cāng)簡(jiǎn)介設(shè)備通信方式多種多樣(USB/WIFI/BT等),不同通信方式使用差異很大且繁瑣,同時(shí)通信鏈路的融合共享和沖突無法處理,通信安全問題也不好保證。本項(xiàng)
    發(fā)表于 04-23 17:12

    如何對(duì)分布式天線系統(tǒng)(DAS)進(jìn)行優(yōu)化?

    什么是分布式天線系統(tǒng)?如何對(duì)分布式天線系統(tǒng)(DAS)進(jìn)行優(yōu)化?
    發(fā)表于 05-24 06:03

    如何高效完成HarmonyOS分布式應(yīng)用測(cè)試?

    作者:liuxun,HarmonyOS測(cè)試架構(gòu)師HarmonyOS是新一代的智能終端操作系統(tǒng),給開發(fā)者提供了設(shè)備發(fā)現(xiàn)、設(shè)備連接、跨設(shè)備調(diào)用等豐富的分布式API。隨著越來越多的開發(fā)者投入到
    發(fā)表于 12-13 18:07

    分布式電源分布式電源裝置是指什么?有何特點(diǎn)

    區(qū)的電力供應(yīng),節(jié)約輸變電投資,提高供電可靠性等。含義簡(jiǎn)明的分布式電源定義為:35kV及以下電壓等級(jí)的電源,不能直接連接到中央輸電系統(tǒng),主要包括發(fā)電設(shè)備和儲(chǔ)能裝置。特點(diǎn)分布式能源
    發(fā)表于 12-29 06:51

    分布式系統(tǒng)硬件資源池原理和接入實(shí)踐

    一個(gè)無中心對(duì)稱的分布式硬件外設(shè)管理系統(tǒng)。同時(shí),分布式硬件框架定義了外設(shè)熱插拔,虛擬硬件?;畹葯C(jī)制,保證業(yè)務(wù)可靠性。在運(yùn)行時(shí),各個(gè)硬件外設(shè)的業(yè)務(wù)運(yùn)行于獨(dú)立進(jìn)程中,在進(jìn)程層面保證不同硬件的
    發(fā)表于 12-06 10:02

    分布式系統(tǒng)原理與范例 pdf

    分布式系統(tǒng)-原理與范例結(jié)構(gòu)上本書可分為“原理”和“范例”兩大部分。第1章為總論,分布式系統(tǒng)定義
    發(fā)表于 09-26 08:28 ?0次下載
    <b class='flag-5'>分布式</b><b class='flag-5'>系統(tǒng)</b>原理與范例 pdf

    如何才能同步分布式系統(tǒng)中的所有時(shí)鐘

    分布式系統(tǒng)由Tanenbaum定義,“分布式系統(tǒng)是一組獨(dú)立的計(jì)算機(jī),在”分布式
    發(fā)表于 02-21 13:40 ?6851次閱讀
    如何才能同步<b class='flag-5'>分布式</b><b class='flag-5'>系統(tǒng)</b>中的所有時(shí)鐘

    關(guān)于分布式系統(tǒng)的幾個(gè)問題

    本文摘自:華為云社區(qū) 作者:華為加拿大研究院軟件專家 Jet老師 小引 分布式系統(tǒng)是一個(gè)古老而寬泛的話題,而近幾年因?yàn)?大數(shù)據(jù) 概念的興起,又煥發(fā)出了新的青春與活力。本文將會(huì)通過對(duì)如下幾個(gè)問題展開談
    的頭像 發(fā)表于 09-23 16:28 ?3063次閱讀

    如何才能同步分布式系統(tǒng)中的所有時(shí)鐘?

    分布式系統(tǒng)由Tanenbaum定義,“分布式系統(tǒng)是一組獨(dú)立的計(jì)算機(jī),在”分布式
    的頭像 發(fā)表于 02-06 11:00 ?1327次閱讀