必威电竞|足球世界杯竞猜平台

分布式系統(tǒng)
來源:互聯(lián)網(wǎng)

分布式系統(tǒng)(distributed system)是建立在網(wǎng)絡(luò)之上的軟件系統(tǒng)。正是因?yàn)檐浖奶匦裕苑植际较到y(tǒng)具有高度的內(nèi)聚性和透明性。因此,網(wǎng)絡(luò)和分布式系統(tǒng)之間的區(qū)別更多的在于高層軟件(特別是操作系統(tǒng)),而不是硬件。

系統(tǒng)信息

在一個分布式系統(tǒng)中,一組獨(dú)立的計算機(jī)展現(xiàn)給用戶的是一個統(tǒng)一的整體,就好像是一個系統(tǒng)似的。系統(tǒng)擁有多種通用的物理和邏輯資源,可以動態(tài)的分配任務(wù),分散的物理和邏輯資源通過計算機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)信息交換。系統(tǒng)中存在一個以全局的方式管理計算機(jī)資源的分布式操作系統(tǒng)。通常,對用戶來說,分布式系統(tǒng)只有一個模型或范型。在操作系統(tǒng)之上有一層軟件中間件(middleware)負(fù)責(zé)實(shí)現(xiàn)這個模型。一個著名的分布式系統(tǒng)的例子是萬維網(wǎng)(World Wide Web),在萬維網(wǎng)中,所有的一切看起來就好像是一個文檔(Web頁面)一樣。

在計算機(jī)網(wǎng)絡(luò)中,這種統(tǒng)一性、模型以及其中的軟件都不存在。用戶看到的是實(shí)際的機(jī)器,計算機(jī)網(wǎng)絡(luò)并沒有使這些機(jī)器看起來是統(tǒng)一的。如果這些機(jī)器有不同的硬件或者不同的操作系統(tǒng),那么,這些差異對于用戶來說都是完全可見的。如果一個用戶希望在一臺遠(yuǎn)程機(jī)器上運(yùn)行一個程序,那么,他必須登陸到遠(yuǎn)程機(jī)器上,然后在那臺機(jī)器上運(yùn)行該程序。

分布式系統(tǒng)和計算機(jī)網(wǎng)絡(luò)系統(tǒng)的共同點(diǎn)是:多數(shù)分布式系統(tǒng)是建立在計算機(jī)網(wǎng)絡(luò)之上的,所以分布式系統(tǒng)與計算機(jī)網(wǎng)絡(luò)在物理結(jié)構(gòu)上是基本相同的。

他們的區(qū)別在于:分布式操作系統(tǒng)的設(shè)計思想和網(wǎng)絡(luò)操作系統(tǒng)是不同的,這決定了他們在結(jié)構(gòu)、工作方式和功能上也不同。網(wǎng)絡(luò)操作系統(tǒng)要求網(wǎng)絡(luò)用戶在使用網(wǎng)絡(luò)資源時首先必須了解網(wǎng)絡(luò)資源,網(wǎng)絡(luò)用戶必須知道網(wǎng)絡(luò)中各個計算機(jī)的功能與配置、軟件資源、網(wǎng)絡(luò)文件結(jié)構(gòu)等情況,在網(wǎng)絡(luò)中如果用戶要讀一個共享文件時,用戶必須知道這個文件放在哪一臺計算機(jī)的哪一個目錄下;分布式操作系統(tǒng)是以全局方式管理系統(tǒng)資源的,它可以為用戶任意調(diào)度網(wǎng)絡(luò)資源,并且調(diào)度過程是“透明”的。當(dāng)用戶提交一個作業(yè)時,分布式操作系統(tǒng)能夠根據(jù)需要在系統(tǒng)中選擇最合適的處理器,將用戶的作業(yè)提交到該處理程序,在處理器完成作業(yè)后,將結(jié)果傳給用戶。在這個過程中,用戶并不會意識到有多個處理器的存在,這個系統(tǒng)就像是一個處理器一樣。

內(nèi)聚性是指每一個數(shù)據(jù)庫分布節(jié)點(diǎn)高度自治,有本地的數(shù)據(jù)庫管理系統(tǒng)。透明性是指每一個數(shù)據(jù)庫分布節(jié)點(diǎn)對用戶的應(yīng)用來說都是透明的,看不出是本地還是遠(yuǎn)程。在分布式數(shù)據(jù)庫系統(tǒng)中,用戶感覺不到數(shù)據(jù)是分布的,即用戶不須知道關(guān)系是否分割、有無副本、數(shù)據(jù)存于哪個站點(diǎn)以及事務(wù)在哪個站點(diǎn)上執(zhí)行等。

專業(yè)測評

分布式軟件系統(tǒng)(Distributed 軟件 Systems)是支持分布式處理的軟件系統(tǒng),是在由通信網(wǎng)絡(luò)互聯(lián)的多處理機(jī)體系結(jié)構(gòu)上執(zhí)行任務(wù)的系統(tǒng)。它包括分布式操作系統(tǒng)、分布式程序設(shè)計語言及其編譯(解釋)系統(tǒng)、分布式文件系統(tǒng)和分布式數(shù)據(jù)庫系統(tǒng)等。

操作系統(tǒng)

負(fù)責(zé)管理分布式處理系統(tǒng)資源和控制分布式程序運(yùn)行。它和集中式操作系統(tǒng)的區(qū)別在于資源管理、進(jìn)程通信和系統(tǒng)結(jié)構(gòu)等方面。

程序設(shè)計語言

用于編寫運(yùn)行于分布式計算機(jī)系統(tǒng)上的分布式程序。一個分布式程序由若干個可以獨(dú)立執(zhí)行的程序模塊組成,它們分布于一個分布式處理系統(tǒng)的多臺計算機(jī)上被同時執(zhí)行。它與集中式的程序設(shè)計語言相比有三個特點(diǎn):分布性、通信性和穩(wěn)健性。

文件系統(tǒng)

具有執(zhí)行遠(yuǎn)程文件存取的能力,并以透明方式對分布在網(wǎng)絡(luò)上的文件進(jìn)行管理和存取。

數(shù)據(jù)庫系統(tǒng)

由分布于多個計算機(jī)結(jié)點(diǎn)上的若干個數(shù)據(jù)庫系統(tǒng)組成,它提供有效的存取手段來操縱這些結(jié)點(diǎn)上的子數(shù)據(jù)庫。分布式數(shù)據(jù)庫系統(tǒng)在使用上可視為一個完整的數(shù)據(jù)庫,而實(shí)際上它是分布在地理分散的各個結(jié)點(diǎn)上。當(dāng)然,分布在各個結(jié)點(diǎn)上的子數(shù)據(jù)庫在邏輯上是相關(guān)的。

郵件系統(tǒng)

分布式郵件系統(tǒng)的部署設(shè)計,即同一域名下,跨地域部署的郵件系統(tǒng)。適用 于在各地設(shè)有分部的政府機(jī)構(gòu)或者大型集團(tuán),有效管理各地的人員結(jié)構(gòu),同時提高了郵件服務(wù)器應(yīng)用效率。

分布式郵件系統(tǒng)由多個數(shù)據(jù)中心組成,大量分支機(jī)構(gòu)或較小的分散站點(diǎn)與數(shù)據(jù)中心的連接。分支機(jī)構(gòu)需要建立自己的郵件服務(wù)器,來加快處理當(dāng)?shù)胤种C(jī)構(gòu)的郵件。承載相應(yīng)的數(shù)據(jù)處理量。以提高郵件處理能力,郵件收發(fā)速度,郵件功能模塊化。

分布式部署方案適合以下情況

1、公司有不同分支機(jī)構(gòu)或較小的分散站點(diǎn)與公司總部的網(wǎng)絡(luò)連接通常是低帶寬、高滯后或不可靠的。

2、公司總部網(wǎng)絡(luò)無法處理中心位置的服務(wù)流量。

3、分支機(jī)構(gòu)有自己的服務(wù)器、企業(yè)網(wǎng)絡(luò)、域控制器和系統(tǒng)管理員,包含數(shù)目不定的用戶。

4、用戶要求有更快的郵箱訪問速度、更佳的用戶體驗(yàn)和可用性

5、郵箱用戶數(shù)量大,并發(fā)線程多。

6、對于安全要求高,需要把郵件服務(wù)器不同的功能分開部署。

分布式郵件系統(tǒng)方案情況

1、異地同域名分布式

此方案適用于集團(tuán)郵件系統(tǒng),各個下屬子公司為了提高郵件收發(fā)速度,降低郵件負(fù)載而提出的方案。分為同域名不同用戶數(shù)分布式和同域名同用戶數(shù)分布式。

2、功能分布式

郵件負(fù)載比較重,對于某一些功能要求比較高,需要郵件服務(wù)器功能分開部署的客戶。

3、用戶分布式

郵箱用戶數(shù)巨大,單機(jī)郵件服務(wù)器無法承載,服務(wù)器做集群。

分布式系統(tǒng),最簡單的例子是Browser--Server結(jié)構(gòu),這兩者結(jié)合起來就成了最簡單的分布式系統(tǒng),或者可以這樣理解:基于網(wǎng)絡(luò)的軟件系統(tǒng)大多都是分布式系統(tǒng),只不過在系統(tǒng)的復(fù)雜程度上有所區(qū)別而已。

容錯應(yīng)用

因?yàn)槊總€PE是自治的,所以分布式系統(tǒng)更加可靠。一個單元或資源(軟件或硬件)的故障不影響其他資源的正常功能。

固有的應(yīng)用

許多應(yīng)用是固有分布式的。這些應(yīng)用是突發(fā)模式(burstmode)而非批量模式(bulk mode)。這方面的實(shí)例有事務(wù)處理和Internet Javad,程序。

這些應(yīng)用的性能取決于吞吐量(事務(wù)響應(yīng)時間或每秒完成的事務(wù)數(shù))而不是一般多處理機(jī)所用的執(zhí)行時間。

為了達(dá)到互操作性,用戶需要一個標(biāo)準(zhǔn)的分布式計算環(huán)境,在這個環(huán)境里,所有系統(tǒng)和資源都可用。

一些其它標(biāo)準(zhǔn)基于一個特別的模型,比如CORBA(公用對象請求代理程序體系結(jié)構(gòu)),它是由OMG (對象管理組)和多計算機(jī)廠商聯(lián)盟開發(fā)的一個標(biāo)準(zhǔn)。CORBA使用面向?qū)ο竽P蛯?shí)現(xiàn)分布式系統(tǒng)中的透明服務(wù)請求。

工業(yè)界有自己的標(biāo)準(zhǔn),比如微軟的分布式構(gòu)件對象模型(DCOM)和Sun Microsystem公司的Java Beans。

系統(tǒng)優(yōu)點(diǎn)

與集中式比較

系統(tǒng)傾向于分布式發(fā)展潮流的真正驅(qū)動力是經(jīng)濟(jì)。25年前,計算機(jī)權(quán)威和評論家Herb Grosch指出CPU的計算能力與它的價格的平方成正比,后來成為Grosch定理。也就是說如果用戶付出兩倍的價錢,就能獲得四倍的性能。這一論斷與當(dāng)時的大型機(jī)技術(shù)非常吻合,因而使得許多機(jī)構(gòu)都盡其所能購買最大的單個大型機(jī)。

隨著微處理機(jī)技術(shù)的發(fā)展,Grosch定理不再適用了。到了二十一世紀(jì)初期,人們只需花幾百美元就能買到一個CPU芯片,這個芯片每秒鐘執(zhí)行的指令比80年代最大的大型機(jī)的處理機(jī)每秒鐘所執(zhí)行的指令還多。如果你愿意付出兩倍的價錢,將得到同樣的CPU,但它卻以更高的時鐘速率運(yùn)行。因此,最節(jié)約成本的辦法通常是在一個系統(tǒng)中使用集中在一起的大量的廉價CPU。所以,傾向于分布式系統(tǒng)的主要原因是它可以潛在地得到比單個的大型集中式系統(tǒng)好得多的性價比。實(shí)際上,分布式系統(tǒng)是通過較低廉的價格來實(shí)現(xiàn)相似的性能的。

與這一觀點(diǎn)稍有不同的是,發(fā)現(xiàn)微處理機(jī)的集合不僅能產(chǎn)生比單個大型主機(jī)更好的性能價格比,而且還能產(chǎn)生單個大型主機(jī)無論如何都不能達(dá)到的絕對性能。例如,按二十一世初期的技術(shù),能夠用10000個現(xiàn)代CPU芯片組成一個系統(tǒng),每個CPU芯片以50 MIPS(每秒百萬指令)的速率運(yùn)行,那么整個系統(tǒng)的性能就是500,000 MIPS。而如果單個處理機(jī)(即CPU)要達(dá)到這一性能,就必須在2×10 秒(2 微微秒,0.002納秒)的時間內(nèi)執(zhí)行一條指令,然而沒有一個現(xiàn)存的計算機(jī)能接近這個速度,從理論上和工程上考慮都認(rèn)為能達(dá)到這一要求的計算機(jī)都是不可能存在的。理論上,阿爾伯特·愛因斯坦相對論指出光的傳播速度最快,它能在2 微微秒內(nèi)傳播0.6毫米。實(shí)際上,一個包含于邊長為0.6 毫米大小的立方體內(nèi)的具有上面所說的計算速度的計算機(jī)產(chǎn)生大量的熱量就能將它自己立即熔掉。所以,無論是要以低價格獲得普通的性能還是要以較高的價格獲得極高的性能,分布式系統(tǒng)都能夠滿足。

另一方面,一些作者對分布式系統(tǒng)和并行系統(tǒng)進(jìn)行了區(qū)分。他們認(rèn)為分布式系統(tǒng)是設(shè)計用來允許眾多用戶一起工作的,而并行系統(tǒng)的唯一目標(biāo)就是以最快的速度完成一個任務(wù),就像 的速度為500,000MIPS的計算機(jī)那樣。認(rèn)為,上述的區(qū)別是難以成立的,因?yàn)閷?shí)際上這兩個設(shè)計領(lǐng)域是統(tǒng)一的。更愿意在最廣泛的意義上使用“分布式系統(tǒng)”一詞來表示任何一個有多個互連的CPU協(xié)同工作的系統(tǒng)。

建立分布式系統(tǒng)的另一原因在于一些應(yīng)用本身是分布式的。一個超級市場連鎖店可能有許多分店,每個商店都需要采購當(dāng)?shù)厣a(chǎn)的商品(可能來自本地的農(nóng)場)、進(jìn)行本地銷售,或者要對本地的哪些蔬菜因時間太長或已經(jīng)腐爛而必須扔掉作出決定。因此,每個商店的本地計算機(jī)能明了存貨清單是有意義的,而不是集中于公司總部。畢竟,大多數(shù)查詢和更新都是在本地進(jìn)行的。然而,連鎖超級市場的高層管理者也會不時地想要了解他們還有多少甘藍(lán)。實(shí)現(xiàn)這一目標(biāo)的一種途徑就是將整個系統(tǒng)建設(shè)成對于應(yīng)用程序來說就像一臺計算機(jī)一樣,但是在實(shí)現(xiàn)上它是分布的,像 前面所描述的一個商店有一臺機(jī)器。這就是一個商業(yè)分布式系統(tǒng)。

另一種固有的分布式系統(tǒng)是通常被稱為計算機(jī)支持下的協(xié)同工作系統(tǒng)(CSCW,計算機(jī) Supported Cooperative Work)。在這個系統(tǒng)中,一組相互之間在物理上距離較遠(yuǎn)的人員可以一起進(jìn)行工作,例如,寫出同一份報告。就計算機(jī)工業(yè)的長期發(fā)展趨勢來說,人們可以很容易的想像出一個全新領(lǐng)域計算機(jī)支持的協(xié)同游戲(CSCG:Computer Supported Cooperative Games)。在這個游戲中,不在同一地方的游戲者可以實(shí)時的玩游戲。你可以想像,在一個多維迷宮中玩電子捉迷藏,甚至是一起玩一場電子空戰(zhàn),每個人操縱自己的本地飛行模擬器去試著擊落別的游戲者,每個游戲者的屏幕上都顯示出其飛機(jī)外的情況,包括其它飛入它的視野的飛機(jī)。

同集中式系統(tǒng)相比較,分布式系統(tǒng)的另一個潛在的優(yōu)勢在于它的高可靠性。通過把工作負(fù)載分散到眾多的機(jī)器上,單個芯片故障最多只會使一臺機(jī)器停機(jī),而其它機(jī)器不會受任何影響。理想條件下,某一時刻如果有5%的計算機(jī)出現(xiàn)故障,系統(tǒng)將仍能繼續(xù)工作,只不過損失5%的性能。對于關(guān)鍵性的應(yīng)用,如核反應(yīng)堆或飛機(jī)的控制系統(tǒng),采用分布式系統(tǒng)來實(shí)現(xiàn)主要是考慮到它可以獲得高可靠性。

最后,漸增式的增長方式也是分布式系統(tǒng)優(yōu)于集中式系統(tǒng)的一個潛在的重要的原因。通常,一個公司會買一臺大型主機(jī)來完成所有的工作。而當(dāng)公司繁榮擴(kuò)充、工作量就會增大,當(dāng)其增大到某一程度時,這個主機(jī)就不能再勝任了。僅有的解決辦法是要么用更大型的機(jī)器(如果有的話)代替現(xiàn)有的大型主機(jī),要么再增加一臺大型主機(jī)。這兩種做法都會引起公司運(yùn)轉(zhuǎn)混亂。相比較之下,如果采用分布式系統(tǒng),僅給系統(tǒng)增加一些處理機(jī)就可能解決這個問題,而且這也允許系統(tǒng)在需求增長的時候逐漸進(jìn)行擴(kuò)充。表1中總結(jié)了以上這些優(yōu)點(diǎn)。

從長遠(yuǎn)的角度來看,主要的驅(qū)動力將是大量個人計算機(jī)的存在和人們共同工作與信息共享的需要,這種信息共享必需是以一種方便的形式進(jìn)行的,而不受地理或人員、數(shù)據(jù),機(jī)器的物理分布的影響。

與獨(dú)立PC比較

既然使用微處理機(jī)是一種節(jié)省開支的辦法,那么為什么不給每個人一臺個人計算機(jī),讓他們各自獨(dú)立地工作呢?一則,許多用戶需要共享數(shù)據(jù)。例如,機(jī)票預(yù)訂處的工作人員需要訪問存儲航班以及現(xiàn)有座位信息的主數(shù)據(jù)庫。假如給每個工作人員都備份整個數(shù)據(jù)庫,那么在實(shí)際中這是無法工作的,因?yàn)闆]有人知道其他工作人員已經(jīng)賣出了哪些座位。共享的數(shù)據(jù)是上例和許多其它應(yīng)用的基礎(chǔ),所以計算機(jī)間必須互連。而計算機(jī)互連就產(chǎn)生了分布式系統(tǒng)。

共享并不只是僅僅涉及數(shù)據(jù)。昂貴的外設(shè),例如彩色激光打印機(jī)照相排版機(jī)以及大型存儲設(shè)備(如自動光盤點(diǎn)唱機(jī))都是共享資源。

把一組孤立的計算機(jī)連成一個分布式系統(tǒng)的第三個原因是它可以增強(qiáng)人與人之間的溝通,電子郵件比信件、電話和FAX有更多的誘人之處。它比信件快的多,不像電話需要兩人同時都在,也不像傳真,它所產(chǎn)生的文件可在計算機(jī)中進(jìn)行編輯、重排和存儲,也可以由文本處理程序來處理。

最后,分布式系統(tǒng)可能比給每個用戶一個獨(dú)立的計算機(jī)更靈活。盡管一種可能的模式是給每個人一臺personal computer并把它們通過LAN聯(lián)在一起,但這種方式并不是唯一的。另外還存在一種模式是將個人計算機(jī)和共享計算機(jī)混合連接在一起(這些機(jī)器的型號可能并不完全相同),使工作能夠在最合適的計算機(jī)上完成,而并不總是在自己的計算機(jī)上完成。這種方式可以使工作負(fù)荷能更有效地在計算機(jī)系統(tǒng)中進(jìn)行分配。系統(tǒng)中某些計算機(jī)的失效也可以通過使其工作在其它計算機(jī)上進(jìn)行而得到補(bǔ)償。表2總結(jié)了以上所介紹的各點(diǎn)。

系統(tǒng)缺點(diǎn)

盡管分布式系統(tǒng)有許多優(yōu)點(diǎn),但也有缺點(diǎn)。本節(jié)就將指出其中的一些缺點(diǎn)。前面已經(jīng)提到了最棘手的問題:軟件。就目前的最新技術(shù)發(fā)展水平,在設(shè)計、實(shí)現(xiàn)及使用分布式系統(tǒng)上都沒有太多的經(jīng)驗(yàn)。什么樣的操作系統(tǒng)、程序設(shè)計語言和應(yīng)用適合這一系統(tǒng)呢?用戶對分布式系統(tǒng)中分布式處理又應(yīng)該了解多少呢?系統(tǒng)應(yīng)當(dāng)做多少而用戶又應(yīng)當(dāng)做多少呢?專家們的觀點(diǎn)不一(這并不是因?yàn)閷<覀兣c眾不同,而是因?yàn)閷τ诜植际较到y(tǒng)他們也很少涉及)。隨著更多的研究的進(jìn)行,這些問題將會逐漸減少。但是不應(yīng)該低估這個問題。

第二個潛在的問題是通信網(wǎng)絡(luò)。由于它會損失信息,所以就需要專門的軟件進(jìn)行恢復(fù)。同時,網(wǎng)絡(luò)還會產(chǎn)生過載。當(dāng)網(wǎng)絡(luò)負(fù)載趨于飽和時,必須對它進(jìn)行改造替換或加入另外一個網(wǎng)絡(luò)擴(kuò)容。在這兩種情況下,一個或多個建筑中的某些部分必須花費(fèi)很高的費(fèi)用進(jìn)行重新布線,或者更換網(wǎng)絡(luò)接口板(例如用光纖)。一旦系統(tǒng)依賴于網(wǎng)絡(luò),那么網(wǎng)絡(luò)的信息丟失或飽和將會抵消 通過建立分布式系統(tǒng)所獲得的大部分優(yōu)勢。

最后,上面 作為優(yōu)點(diǎn)來描述的數(shù)據(jù)易于共享性也是具有兩面性的。如果人們能夠很方便地存取整個系統(tǒng)中的數(shù)據(jù),那么他們同樣也能很方便地存取與他們無關(guān)的數(shù)據(jù)。換句話說,經(jīng)常要考慮系統(tǒng)的安全性問題。通常,對必須絕對保密的數(shù)據(jù),使用一個專用的、不與其它任何機(jī)器相連的孤立的個人計算機(jī)進(jìn)行存儲的方法更可取。而且這個計算機(jī)被保存在一個上鎖的十分安全的房間中,與這臺計算相配套的所有軟盤都存放在這個房間中的一個保險箱中。分布式系統(tǒng)的缺點(diǎn)如表3所示。

表 3.分布式系統(tǒng)的缺點(diǎn)

盡管存在這些潛在的問題,許多人還是認(rèn)為分布式系統(tǒng)的優(yōu)點(diǎn)多于缺點(diǎn),并且普遍認(rèn)為分布式系統(tǒng)在未來幾年中會越來越重要。實(shí)際上,在幾年之內(nèi)許多機(jī)構(gòu)會將他們的大多數(shù)計算機(jī)連接到大型分布式系統(tǒng)中,為用戶提供更好、更廉價和更方便的服務(wù)。而在十年之后,中型或大型商業(yè)或其它機(jī)構(gòu)中可能將不再存在一臺孤立的計算機(jī)了。

系統(tǒng)應(yīng)用

分布式系統(tǒng)被用在許多不同類型的應(yīng)用中。以下列出了一些應(yīng)用。對這些應(yīng)用而言,使用分布式系統(tǒng)要比其他體系結(jié)構(gòu)如處理機(jī)和共享存儲器多處理機(jī)更優(yōu)越:

并行應(yīng)用

原則上,并行應(yīng)用也可以在共享存儲器多處理機(jī)上運(yùn)行,但共享存儲器系統(tǒng)不能很好地擴(kuò)大規(guī)模以包括大量的處理機(jī)。HPCC(高性能計算和通信)應(yīng)用一般需要一個可伸縮的設(shè)計,這種設(shè)計取決于分布式處理。

容錯應(yīng)用

因?yàn)槊總€P E是自治的,所以分布式系統(tǒng)更加可靠。一個單元或資源(軟件或硬件)的故障不影響其他資源的正常功能。

分布式應(yīng)用

許多應(yīng)用是固有分布式的。這些應(yīng)用是突發(fā)模式(burstmode)而非批量模式(bulk mode)。這方面的實(shí)例有事務(wù)處理和Internet Javad,程序。

這些應(yīng)用的性能取決于吞吐量(事務(wù)響應(yīng)時間J或每秒完成的事務(wù)數(shù))而不是一般多處理機(jī)所用的執(zhí)行時間。

對于一組用戶而言,分布式系統(tǒng)有一個特別的應(yīng)用稱為計算機(jī)支持的協(xié)同工作(computer supported Cooperati veworking,CSCW)或群件(groupware),支持用戶協(xié)同工作。另一個應(yīng)用是分布式會議,即通過物理的分布式網(wǎng)絡(luò)進(jìn)行電子會議。同樣,多媒體遠(yuǎn)程教學(xué)也是一個類似的應(yīng)用。由于在不同的平臺上如:Pc、工作站局域網(wǎng)廣域網(wǎng)上可獲得非常多樣的應(yīng)用,用戶希望能超出他fliP c的限制以獲得更廣泛的特十牛、功能和性能。不同網(wǎng)絡(luò)和環(huán)境(包括分布式系統(tǒng)環(huán)境)下的q 操作性變得越來越重要。為了達(dá)到互操作性,用戶需要一個標(biāo)準(zhǔn)的分布式計算環(huán)境,在這個環(huán)境里,所有系統(tǒng)和資源都可用。

DCE(分布式計算環(huán)境)是OSF (開放系統(tǒng)基金會)開發(fā)的分布式計算技術(shù)的工業(yè)標(biāo)準(zhǔn)集。它提供保護(hù)和控制對數(shù)據(jù)訪問的安全服務(wù)、容易尋找分布式資源的名字服務(wù)、以及高度可伸縮的模型用于組織極為分散的用戶、服務(wù)和數(shù)據(jù)。D C E可在所有主要的計算平臺上運(yùn)行,并設(shè)計成支持異型硬件和軟件環(huán)境下的分布式應(yīng)用。

大連商品交易所已經(jīng)被包括TRANSVARL在內(nèi)的一些廠商實(shí)現(xiàn)。TRANSVARL是最早的多廠商組(multi vendor team)的成員之一,它提出的建議已成為DCE體系結(jié)構(gòu)的基礎(chǔ)。在中可以找到利用DCE開發(fā)分布式應(yīng)用的指南。具有標(biāo)準(zhǔn)接口和協(xié)議的系統(tǒng)也叫做開放系統(tǒng)。一些其它標(biāo)準(zhǔn)基于一個特別的模型,比如CORBA (公用對象請求代理程序體系結(jié)構(gòu)),它是由OMG (對象管理組)和多計算機(jī)廠商聯(lián)盟開發(fā)的一個標(biāo)準(zhǔn)。CORBA使用面向?qū)ο竽P蛯?shí)現(xiàn)分布式系統(tǒng)中的透明服務(wù)請求。工業(yè)界有自己的標(biāo)準(zhǔn),比如微軟的分布式構(gòu)件對象模型(DCOM)和Sun Microsystem公司的Java Beans。

系統(tǒng)測試

在測試執(zhí)行過程中,對測試結(jié)果的分析是一個需要進(jìn)行深入思考的重點(diǎn)問題。分布式系統(tǒng)測試的重點(diǎn)在于對后端服務(wù)器集群的測試,而判定系統(tǒng)中是否存在Bug則是 需要解決的重要問題。那么應(yīng)該如何確定是否存在Bug呢?

對于測試結(jié)果的分析,通常觀察下面幾種情況。

觀察前端應(yīng)用的返回結(jié)果。這里需要分兩種情況來考慮:第一,按照前端應(yīng)用業(yè)務(wù)功能點(diǎn)及流程進(jìn)行操作,觀察返回結(jié)果是否符合業(yè)務(wù)方的需求預(yù)期;第二,操作后端的服務(wù)器(通常是重啟、宕機(jī)、斷網(wǎng)等操作),觀察前端應(yīng)用的返回結(jié)果是否符合系統(tǒng)的設(shè)計需求。

分析服務(wù)器日志。在功能測試過程中,當(dāng) 在啟動服務(wù)器的時候,需要將日志級別定義為Debug級別(最低級別)。這樣做的主要目的是為了能便于測試工程師來分析日志和定位問題。為了能更好地定位問題,常常需要在服務(wù)器程序代碼中進(jìn)行日志打樁,把程序中的一些重要數(shù)據(jù)通過日志的方式展現(xiàn)出來。通常情況下,需要對日志的格式進(jìn)行約定,在日志行中增加一些關(guān)鍵字來進(jìn)行分類,這將便于測試工程師進(jìn)行日志分析,也有利于開展分布式系統(tǒng)的自動化測試。另外,值得注意的是,盡可能地將打樁代碼放在Debug代碼中,避免影響系統(tǒng)代碼,引入新問題。

分析操作系統(tǒng)的一些重要信息。測試的分布式系統(tǒng)絕大多數(shù)是基于Linux操作系統(tǒng)開發(fā)的,在測試的過程中,除了詳細(xì)分析程序日志以外,還需要對操作系統(tǒng)的一些重要數(shù)據(jù)信息進(jìn)行分析,從而來診斷服務(wù)器程序是否存在異常。以Linux操作系統(tǒng)為例,常常會使用top命令、netstat命令及sar命令來查看操作系統(tǒng)的一些數(shù)據(jù)信息。例如,可以通過netstat命令檢查服務(wù)器程序是否正確地監(jiān)聽了指定的端口等。

借助其他分析工具。例如,如何判斷服務(wù)器程序是否產(chǎn)生了內(nèi)存泄漏?通常需要借助于內(nèi)存檢測工具來進(jìn)行分析。在Linux環(huán)境下,常用Valgrind來進(jìn)行內(nèi)存檢測。這是一款非常好用、功能強(qiáng)大的分析工具,可以幫助測試或者dotnet快速發(fā)現(xiàn)很多隱藏的程序Bug,尤其是在內(nèi)存檢測方面(同時它還具有很多其他優(yōu)秀的功能,讀者可以自己查看官網(wǎng)中的使用手冊)。

壓力性能測試

對于分布式系統(tǒng)而言,壓力測試和性能測試非常重要。在進(jìn)行壓力測試和性能測試的時候,可能會碰到下面一些難點(diǎn)。

數(shù)據(jù)準(zhǔn)備。如何準(zhǔn)備海量的測試數(shù)據(jù)并保證模擬數(shù)據(jù)的真實(shí)性?以一個分布式的文件系統(tǒng)為例,預(yù)先存入100GB的數(shù)據(jù)還是存入100TB的數(shù)據(jù)、存入的文件是大小基本一致差別不大還是各不相同甚至差異很大(例如,從幾十字節(jié)至幾十兆字節(jié)不等),這些因素對于分布式系統(tǒng)的性能影響是有很大差異的。另外,如果需要預(yù)先存入100TB的數(shù)據(jù),若按每秒寫入100MB數(shù)據(jù)來計算,寫入100TB數(shù)據(jù)需要100×1024×1024/100=1048576秒=291.27小時=12天。是否能忍受這么長時間的數(shù)據(jù)準(zhǔn)備工作?為了解決這樣的問題,需要對系統(tǒng)架構(gòu)設(shè)計進(jìn)行深入分析,設(shè)計好測試場景,并提前進(jìn)行測試用例的設(shè)計,以盡早開始準(zhǔn)備測試數(shù)據(jù)。

性能或壓力測試工具。通常來說,分布式系統(tǒng)的測試需要開發(fā)一些測試工具來滿足性能測試的需求。如果可以的話,建議這樣的測試工具最好由測試工程師自己來實(shí)現(xiàn),因?yàn)闇y試工程師更清楚自己的測試需求。當(dāng)需要自己開發(fā)測試工具的時候,有兩個關(guān)鍵問題需要重點(diǎn)關(guān)注:第一,一些關(guān)鍵數(shù)據(jù)的收集方式與計算將成為性能測試工具的關(guān)鍵,例如,TPS(每秒請求數(shù))、Throughput(吞吐量)計算的準(zhǔn)確性;第二,要保證性能測試工具的性能,如果工具本身的性能不好,將無法給予分布式系統(tǒng)足夠強(qiáng)大的壓力來進(jìn)行測試。另外,當(dāng)考慮到多并發(fā)(例如有10萬客戶端同時并發(fā)連接)時,如果性能測試工具在一臺測試機(jī)器上只能運(yùn)行50個或者更少的話,那么需要的測試機(jī)器數(shù)量也將會很龐大(例如2000臺測試機(jī)),這個成本或許是許多公司不能承受的。因此,性能測試工具本身的性能必須要足夠好才能滿足需求、降低測試成本。

自動化測試

自動化測試是測試行業(yè)發(fā)展的必然趨勢,對于分布式系統(tǒng)測試而言也不例外。在實(shí)施分布式系統(tǒng)自動化測試的過程中,可能會碰到下面兩個難點(diǎn)問題。

涉及平臺多且硬件雜,測試流程控制困難。在實(shí)施自動化測試的過程中,測試腳本需要控制的操作系統(tǒng)和應(yīng)用程序很多,而且存在跨平臺的特性,同時還有可能需要控制一些網(wǎng)絡(luò)設(shè)備。因此,選擇一個優(yōu)秀的自動化測試框架成為了非常重要的工作之一。以 的實(shí)踐經(jīng)驗(yàn)來看,STAF是一個不錯的選擇,它的平臺(Windows及Linux各版本)支持及開發(fā)語言的支持都很全面。

測試結(jié)果驗(yàn)證復(fù)雜。對于分布式系統(tǒng)的自動化測試來說,需要通過測試腳本來收集各種測試結(jié)果數(shù)據(jù)以驗(yàn)證測試結(jié)果的正確性。在實(shí)施自動化測試的過程中,可以將測試結(jié)果數(shù)據(jù)收集部分模塊化,通過各子模塊來檢測各項(xiàng)數(shù)據(jù)是否正確。例如,會設(shè)計一個日志分析模塊,主要負(fù)責(zé)從服務(wù)器應(yīng)用程序的日志中收集相應(yīng)數(shù)據(jù)進(jìn)行對比驗(yàn)證(本文前面提到的在打樁日志中增加關(guān)鍵字部分就顯得格外重要)。

隨著互聯(lián)網(wǎng)的發(fā)展,大型分布式系統(tǒng)也越來越多、越來越復(fù)雜、越來越重要。如何有效地保證大型分布式系統(tǒng)7×24小時全天候持續(xù)穩(wěn)定地運(yùn)行也就成為了一個重要課題。

系統(tǒng)目標(biāo)

計算機(jī)網(wǎng)絡(luò)異同

分布式計算機(jī)系統(tǒng)與計算機(jī)網(wǎng)絡(luò)既有類似之處又有不同點(diǎn),其主要的異同如下:

(1)在計算機(jī)網(wǎng)絡(luò)中,每個用戶或任務(wù)通常只使用一臺計算機(jī),若要利用網(wǎng)絡(luò)中的另一臺計算機(jī),則需要遠(yuǎn)程注冊。在分布式計算機(jī)系統(tǒng)中,用戶進(jìn)程在系統(tǒng)內(nèi)各個計算機(jī)上動態(tài)調(diào)度,并根據(jù)運(yùn)行情況由分布式操作系統(tǒng)動態(tài)地、透明地將機(jī)器分配給用戶進(jìn)程或任務(wù)。

(2)在計算機(jī)網(wǎng)絡(luò)中,用戶知道它們的文件存放在何處,并用顯示的文件傳輸命令在機(jī)器之間傳送文件。在分布式計算機(jī)系統(tǒng)中,文件的放置由操作系統(tǒng)管理,用戶可用相同方式訪問系統(tǒng)中的所有文件而不管它們位于何處。

(3)在計算機(jī)網(wǎng)絡(luò)中,各結(jié)點(diǎn)計算機(jī)均有自己的操作系統(tǒng),資源歸局部所有并被局部控制,網(wǎng)絡(luò)內(nèi)的進(jìn)程調(diào)度是通過進(jìn)程遷移和數(shù)據(jù)遷移實(shí)現(xiàn)的。在分布式計算機(jī)系統(tǒng)中,每個場點(diǎn)上運(yùn)行一個局部操作系統(tǒng),執(zhí)行的任務(wù)可以是獨(dú)立的,可以是某任務(wù)的一個部分,也可以是其他場點(diǎn)上的(部分)任務(wù),且各場點(diǎn)相互協(xié)同,合作平衡系統(tǒng)內(nèi)的負(fù)載。

(4)在計算機(jī)網(wǎng)絡(luò)中,系統(tǒng)幾乎無故障容許度能力。在分布式計算機(jī)系統(tǒng)中有系統(tǒng)自動重構(gòu)、適度降級使用及錯誤恢復(fù)功能。

(5)兩者透明性的程度和級別不同。

(6)就資源共享而言,計算機(jī)網(wǎng)絡(luò)和分布式計算機(jī)系統(tǒng)是類似的。

系統(tǒng)設(shè)計難點(diǎn)

雖然分布式系統(tǒng)具有很多優(yōu)點(diǎn),然而由于分布式系統(tǒng)自身的特點(diǎn)及應(yīng)用環(huán)境的復(fù)雜性,分布式系統(tǒng)設(shè)計有如下的很多難題需要解決:

1.部分失效問題

由于分布式系統(tǒng)通常由若干部分組成,各個部分由于各種原因可能發(fā)生故障,如硬件故障、軟件錯誤及錯誤操作等。如果一個分布式系統(tǒng)不對這些故障進(jìn)行有效的處理,系統(tǒng)某一組成部分的故障可能導(dǎo)致整個系統(tǒng)的癱瘓

2.性能和可靠性過分依賴于網(wǎng)絡(luò)

由于分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的,而網(wǎng)絡(luò)本身是不可靠的,可能經(jīng)常發(fā)生故障,網(wǎng)絡(luò)故障可能導(dǎo)致系統(tǒng)服務(wù)的終止。另外,網(wǎng)絡(luò)超負(fù)荷會導(dǎo)致性能的降低,增加系統(tǒng)的響應(yīng)時間。

3.缺乏統(tǒng)一控制

一個分布式系統(tǒng)的控制通常是一個典型的分散控制,沒有統(tǒng)一的中心控制。因此,分布式系統(tǒng)通常需要相應(yīng)的同步機(jī)制來協(xié)調(diào)系統(tǒng)中各個部分的工作。設(shè)計與實(shí)現(xiàn)一個對用戶來說是透明的且具有故障容許度能力的分布式系統(tǒng)是一項(xiàng)具有挑戰(zhàn)性的工作,而且所需的機(jī)制和策略尚未成熟。因此什么樣的程序設(shè)計模型、什么樣的控制機(jī)制最適合分布式系統(tǒng)仍是需要繼續(xù)研究的課題。

4.難以合理設(shè)計資源分配策略

在集中式系統(tǒng)中,所有的資源都由操作系統(tǒng)管理和分配,但在分布式系統(tǒng)中,資源屬于各節(jié)點(diǎn),所以調(diào)度的靈活性不如集中式系統(tǒng),資源的物理分布可能與用戶請求的分布不匹配,某些資源可能空閑,而另一些資源可能超載。

5.安全保密性問題

開放性使得分布式系統(tǒng)中的許多軟件接口都提供給用戶,這樣的開放式結(jié)構(gòu)對于開發(fā)人員非常有價值,但同時也為破壞者打開了方便之門。

針對分布式系統(tǒng)存在的上述難點(diǎn),要保證一個分布式系統(tǒng)的正常運(yùn)行,就必須對系統(tǒng)資源進(jìn)行有效的管理,對計算機(jī)之間的通信、故障、安全等問題提供有效的處理手段和支持機(jī)制。

用戶對分布式系統(tǒng)的要求是透明性、安全性、靈活性、簡單性、可靠性,也要求方便在局部失效時重構(gòu)系統(tǒng),以及集成不均勻子系統(tǒng)的能力。

資源的分布性、缺乏全局狀態(tài)信息及傳輸延遲,意味著集中式操作系統(tǒng)的某些方法和技術(shù)不能應(yīng)用于分布式系統(tǒng)中。即使集中式系統(tǒng)中的某些技術(shù)滿足上面的要求,其實(shí)現(xiàn)通常也是要付出很大代價的。

分類

分布式計算機(jī)系統(tǒng)的體系結(jié)構(gòu)可用處理機(jī)之間的耦合度為主要標(biāo)志來加以描述。耦合度是系統(tǒng)模塊之間互聯(lián)的緊密程度,它是數(shù)據(jù)傳輸率、響應(yīng)時間、并行處理能力等性能指標(biāo)的綜合反映,主要取決于所選用體系結(jié)構(gòu)的互聯(lián)拓?fù)浣Y(jié)構(gòu)和通信鏈路的類型。?

按地理環(huán)境衡量耦合度,分布式系統(tǒng)可以分為機(jī)體內(nèi)系統(tǒng)、建筑物內(nèi)系統(tǒng)、建筑物間系統(tǒng)和不同地理范圍的區(qū)域系統(tǒng)等,它們的耦合度依次由高到低按應(yīng)用領(lǐng)域的性質(zhì)決定耦合度,可以分成三類:?

第一種是面向計算任務(wù)的分布并行計算機(jī)系統(tǒng)和分布式多用戶計算機(jī)系統(tǒng),它們要求盡可能高的耦合度,以便發(fā)展成為能分擔(dān)大型計算機(jī)和分時計算機(jī)系統(tǒng)所完成的工作。?

第二種是面向管理信息的分布式數(shù)據(jù)處理系統(tǒng)。耦合度可以適當(dāng)降低。?

第三種是面向過程控制的分布式計算機(jī)控制系統(tǒng)。耦合度要求適中,當(dāng)然對于某些實(shí)時應(yīng)用,其耦合度的要求可能很高。

特征

分布式系統(tǒng)是多個處理機(jī)通過通信線路互聯(lián)而構(gòu)成的松散耦合的系統(tǒng)。從系統(tǒng)中某臺處理機(jī)來看,其余的處理機(jī)和相應(yīng)的資源都是遠(yuǎn)程的,只有它自己的資源才是本地的。至今,對分布式系統(tǒng)的定義尚未形成統(tǒng)一的見解。一般認(rèn)為,分布式系統(tǒng)應(yīng)具有以下四個特征:?

(1)分布性。分布式系統(tǒng)由多臺計算機(jī)組成,它們在地域上是分散的,可以散布在一個單位、一個城市、一個國家,甚至全球范圍內(nèi)。整個系統(tǒng)的功能是分散在各個節(jié)點(diǎn)上實(shí)現(xiàn)的,因而分布式系統(tǒng)具有數(shù)據(jù)處理的分布性。?

(2)自治性。分布式系統(tǒng)中的各個節(jié)點(diǎn)都包含自己的處理機(jī)和內(nèi)存,各自具有獨(dú)立的處理數(shù)據(jù)的功能。通常,彼此在地位上是平等的,無主次之分,既能自治地進(jìn)行工作,又能利用共享的通信線路來傳送信息,協(xié)調(diào)任務(wù)處理。?

(3)并行性。一個大的任務(wù)可以劃分為若干個子任務(wù),分別在不同的主機(jī)上執(zhí)行。?

(4)全局性。分布式系統(tǒng)中必須存在一個單一的、全局的進(jìn)程通信機(jī)制,使得任何一個進(jìn)程都能與其他進(jìn)程通信,并且不區(qū)分本地通信與遠(yuǎn)程通信。同時,還應(yīng)當(dāng)有全局的保護(hù)機(jī)制。系統(tǒng)中所有機(jī)器上有統(tǒng)一的系統(tǒng)調(diào)用集合,它們必須適應(yīng)分布式的環(huán)境。在所有CPU上運(yùn)行同樣的內(nèi)核,使協(xié)調(diào)工作更加容易。

優(yōu)缺點(diǎn)

優(yōu)點(diǎn)

(1)資源共享。若干不同的節(jié)點(diǎn)通過通信網(wǎng)絡(luò)彼此互聯(lián),一個節(jié)點(diǎn)上的用戶可以使用其他節(jié)點(diǎn)上的資源,如分布式系統(tǒng)允許設(shè)備共享,使眾多用戶共享昂貴的外部設(shè)備,如彩色打印機(jī);允許數(shù)據(jù)共享,使眾多用戶訪問共用的數(shù)據(jù)庫;可以共享遠(yuǎn)程文件,使用遠(yuǎn)程特有的硬件設(shè)備(如高速陣列處理器),以及執(zhí)行其他操作。?

(2)加快計算速度。如果一個特定的計算任務(wù)可以劃分為若干個并行運(yùn)行的子任務(wù),則可把這些子任務(wù)分散到不同的節(jié)點(diǎn)上,使它們同時在這些節(jié)點(diǎn)上運(yùn)行,從而加快計算速度。另外,分布式系統(tǒng)具有計算遷移功能,如果某個節(jié)點(diǎn)上的負(fù)載太重,則可把其中一些作業(yè)移到其他節(jié)點(diǎn)去執(zhí)行,從而減輕該節(jié)點(diǎn)的負(fù)載。這種作業(yè)遷移稱為負(fù)載平衡。?

(3)可靠性高。分布式系統(tǒng)具有高可靠性。如果其中某個節(jié)點(diǎn)失效了,則其余的節(jié)點(diǎn)可以繼續(xù)操作,整個系統(tǒng)不會因?yàn)橐粋€或少數(shù)幾個節(jié)點(diǎn)的故障而全體崩潰。因此,分布式系統(tǒng)有很好的故障容許度性能。?

系統(tǒng)必須能夠檢測節(jié)點(diǎn)的故障,采取適當(dāng)?shù)氖侄危顾鼜墓收现谢謴?fù)過來。系統(tǒng)確定故障所在的節(jié)點(diǎn)后,就不再利用它來提供服務(wù),直至其恢復(fù)正常工作。如果失效節(jié)點(diǎn)的功能可由其他節(jié)點(diǎn)完成,則系統(tǒng)必須保證功能轉(zhuǎn)移的正確實(shí)施。當(dāng)失效節(jié)點(diǎn)被恢復(fù)或者修復(fù)時,系統(tǒng)必須把它平滑地集成到系統(tǒng)中。?

(4)通信方便、快捷。分布式系統(tǒng)中各個節(jié)點(diǎn)通過一個通信網(wǎng)絡(luò)互聯(lián)在一起。通信網(wǎng)絡(luò)由通信線路、調(diào)制解調(diào)器和通信處理器等組成,不同節(jié)點(diǎn)的用戶可以方便地交換信息。在低層,系統(tǒng)之間利用傳遞消息的方式進(jìn)行通信,這類似于單CPU系統(tǒng)中的消息機(jī)制。單CPU系統(tǒng)中所有高層的消息傳遞功能都可以在分布式系統(tǒng)中實(shí)現(xiàn),如文件傳遞、登錄、郵件、Web瀏覽和遠(yuǎn)程過程調(diào)用( Remote Procedure call,RPC)。?

分布式系統(tǒng)實(shí)現(xiàn)了節(jié)點(diǎn)之間的遠(yuǎn)距離通信,為人與人之間的信息交流提供了很大方便不同地區(qū)的用戶可以共同完成一個項(xiàng)目,通過傳送項(xiàng)目文件,遠(yuǎn)程登錄進(jìn)入對方系統(tǒng)來運(yùn)行程序,如發(fā)送電子郵件等,協(xié)調(diào)彼此的工作。?

缺點(diǎn)

盡管分布式系統(tǒng)具備眾多優(yōu)勢,但它也有自身的缺點(diǎn),主要是可用軟件不足,系統(tǒng)軟件、編程語言、應(yīng)用程序以及開發(fā)工具都相對很少。此外,還存在通信網(wǎng)絡(luò)飽和或信息丟失和網(wǎng)絡(luò)安全問題,方便的數(shù)據(jù)共享同時意味著機(jī)密數(shù)據(jù)容易被竊取。雖然分布式系統(tǒng)存在這些潛在的問題,但其優(yōu)點(diǎn)遠(yuǎn)大于缺點(diǎn),而且這些缺點(diǎn)也正得到克服。因此,分布式系統(tǒng)仍是人們研究、開發(fā)和應(yīng)用的方向。

參考資料 >

生活家百科家居網(wǎng)