版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國(guó)]-分布式系統(tǒng)

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶(hù)提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

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

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

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

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

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

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

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

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

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

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

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

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

分布式郵件系統(tǒng)由多個(gè)數(shù)據(jù)中心組成,大量分支機(jī)構(gòu)或較小的分散站點(diǎn)與數(shù)據(jù)中心的連接。分支機(jī)構(gòu)需要建立自己的郵件服務(wù)器,來(lái)加快處理當(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ú)法處理中心位置的服務(wù)流量。

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

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

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

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

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

1、異地同域名分布式

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

2、功能分布式

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

3、用戶(hù)分布式

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

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

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

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

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

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

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

對(duì)于一組用戶(hù)而言, 分布式系統(tǒng)有一個(gè)特別的應(yīng)用稱(chēng)為計(jì)算機(jī)支持的協(xié)同工作(Computer Supported Cooperative Working,CSCW)或群件(groupware), 支持用戶(hù)協(xié)同工作。另一個(gè)應(yīng)用是分布式會(huì)議, 即通過(guò)物理的分布式網(wǎng)絡(luò)進(jìn)行電子會(huì)議。同樣,多媒體遠(yuǎn)程教學(xué)也是一個(gè)類(lèi)似的應(yīng)用。

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

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

DCE已經(jīng)被包括TRANSVARL在內(nèi)的一些r一商實(shí)現(xiàn)。TRANSVARL是最早的多廠商組(multi vendor team)的成員之一,它提出的建議已成為DCE體系結(jié)構(gòu)的基礎(chǔ)。在中可以找到利用DCE開(kāi)發(fā)分布式應(yīng)用的指南。

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

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

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

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

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

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

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

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

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

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

|| ||

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

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

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

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

最后,分布式系統(tǒng)可能比給每個(gè)用戶(hù)一個(gè)獨(dú)立的計(jì)算機(jī)更靈活。盡管一種可能的模式是給每個(gè)人一臺(tái)個(gè)人計(jì)算機(jī)并把它們通過(guò)LAN聯(lián)在一起,但這種方式并不是唯一的。另外還存在一種模式是將個(gè)人計(jì)算機(jī)和共享計(jì)算機(jī)混合連接在一起(這些機(jī)器的型號(hào)可能并不完全相同),使工作能夠在最合適的計(jì)算機(jī)上完成,而并不總是在自己的計(jì)算機(jī)上完成。這種方式可以使工作負(fù)荷能更有效地在計(jì)算機(jī)系統(tǒng)中進(jìn)行分配。系統(tǒng)中某些計(jì)算機(jī)的失效也可以通過(guò)使其工作在其它計(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)提到了最棘手的問(wèn)題:軟件。就目前的最新技術(shù)發(fā)展水平, 在設(shè)計(jì)、實(shí)現(xiàn)及使用分布式系統(tǒng)上都沒(méi)有太多的經(jīng)驗(yàn)。什么樣的操作系統(tǒng)、程序設(shè)計(jì)語(yǔ)言和應(yīng)用適合這一系統(tǒng)呢?用戶(hù)對(duì)分布式系統(tǒng)中分布式處理又應(yīng)該了解多少呢?系統(tǒng)應(yīng)當(dāng)做多少而用戶(hù)又應(yīng)當(dāng)做多少呢?專(zhuān)家們的觀點(diǎn)不一(這并不是因?yàn)閷?zhuān)家們與眾不同,而是因?yàn)閷?duì)于分布式系統(tǒng)他們也很少涉及)。隨著更多的研究的進(jìn)行,這些問(wèn)題將會(huì)逐漸減少。但是不應(yīng)該低估這個(gè)問(wèn)題。

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

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

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

|| ||

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

|| ||

本詞條內(nèi)容貢獻(xiàn)者為:

胡啟洲 - 副教授 - 南京理工大學(xué)