賈素來(lái)
(無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院,江蘇 無(wú)錫214153)
淺議分布式系統(tǒng)
賈素來(lái)
(無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院,江蘇 無(wú)錫214153)
文章在介紹分布式系統(tǒng)的基礎(chǔ)上,討論了分布式系統(tǒng)的技術(shù)基礎(chǔ)和構(gòu)建技術(shù)。軟件復(fù)用、XML、分布式通信等技術(shù)是分布式系統(tǒng)的基礎(chǔ)。分布式系統(tǒng)按其范型可分為基于對(duì)象的分布式系統(tǒng)、基于文件的分布式系統(tǒng)、基于文檔的分布式系統(tǒng)、基于協(xié)作的分布式系統(tǒng)。文章介紹了每種類型的特點(diǎn)及典型例子。
分布式系統(tǒng);技術(shù)基礎(chǔ);構(gòu)建技術(shù)
傳統(tǒng)的客戶機(jī)/服務(wù)器體系結(jié)構(gòu),隨著業(yè)務(wù)處理對(duì)系統(tǒng)提出更高要求,也逐漸暴露出其客戶端逐漸龐大和服務(wù)器負(fù)擔(dān)過(guò)重等缺點(diǎn)。因此計(jì)算機(jī)科學(xué)家提出了三層或多層分布式系統(tǒng)(Multi-storeies Distributed System)。三層由表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)服務(wù)層組成,其中業(yè)務(wù)邏輯層又由多個(gè)子層組成,具體要看系統(tǒng)的復(fù)雜程度[1]。這樣就形成了多層分布式體系結(jié)構(gòu),分布性可以體現(xiàn)在軟件上,也可以是硬件。
在多層結(jié)構(gòu)當(dāng)中,業(yè)務(wù)邏輯從客戶端分離出來(lái),移至中間層,系統(tǒng)也就成為客戶端表示層、中間業(yè)務(wù)邏輯層和數(shù)據(jù)庫(kù)服務(wù)器的三層或多層體系結(jié)構(gòu),如圖1所示[2]。多層體系結(jié)構(gòu)將表示和業(yè)務(wù)處理分開,縮減了客戶端的規(guī)模,又將相關(guān)業(yè)務(wù)和資源分開,降低了服務(wù)器的負(fù)載,避免了服務(wù)器的性能缺陷對(duì)整個(gè)系統(tǒng)性能的影響。這種在多個(gè)服務(wù)器上分布應(yīng)用程序處理的多層可變結(jié)構(gòu)比二層體系結(jié)構(gòu)的伸縮性和擴(kuò)展性有了很大加強(qiáng)。
表示層是應(yīng)用的用戶接口部分,擔(dān)負(fù)著用戶與應(yīng)用間的對(duì)話功能,用于用戶輸入和輸出。業(yè)務(wù)邏輯層是具體業(yè)務(wù)功能組件的實(shí)現(xiàn)。根據(jù)具體情況,這些組件可詳細(xì)分成多個(gè)子層,一般可分為兩種:公共服務(wù)組件、特定領(lǐng)域組件。公共服務(wù)組件主要用于提供常見問(wèn)題的高效解決算法和提供與基礎(chǔ)設(shè)施相關(guān)的公共服務(wù),比如文件讀寫、目錄管理、報(bào)表制作等。這類組件支持水平復(fù)用,各種軟件系統(tǒng)都可能使用它們提供的服務(wù)。特定領(lǐng)域組件與實(shí)際的應(yīng)用領(lǐng)域密切相關(guān),依賴于特定的問(wèn)題和特定的問(wèn)題解決方法,具有領(lǐng)域特定性。為此,在識(shí)別、獲取和表示可復(fù)用信息時(shí),應(yīng)采用面向領(lǐng)域的策略。領(lǐng)域的需求具有一定的穩(wěn)定性,使得獲取的信息可以在較長(zhǎng)時(shí)間內(nèi)多次復(fù)用。領(lǐng)域工程是一組相似或相近系統(tǒng)的應(yīng)用工程建立基本能力和必備基礎(chǔ)的過(guò)程,覆蓋了建立可復(fù)用軟件的所有活動(dòng),可劃分為以下三個(gè)階段領(lǐng)域分析、領(lǐng)域設(shè)計(jì)和領(lǐng)域?qū)崿F(xiàn)。數(shù)據(jù)服務(wù)層為業(yè)務(wù)邏輯層組件提供從數(shù)據(jù)源的查詢、操作等數(shù)據(jù)服務(wù)。
圖1 多層分布式體系結(jié)構(gòu)模型
在分布式環(huán)境中,無(wú)論是硬件平臺(tái)還是軟件平臺(tái)都不可能做到統(tǒng)一。大規(guī)模的應(yīng)用系統(tǒng)通常要求軟硬件在各不相同的網(wǎng)絡(luò)環(huán)境中運(yùn)行,為了更好的開發(fā)和應(yīng)用能夠運(yùn)行在這種異構(gòu)平臺(tái)上的軟件,迫切需要一種基于標(biāo)準(zhǔn)的、獨(dú)立于計(jì)算機(jī)軟硬件的開發(fā)和運(yùn)行環(huán)境。因此,目前,分布式系統(tǒng)多采用軟件復(fù)用、XML、分布式通信等技術(shù)作為基礎(chǔ)。
軟件復(fù)用是利用現(xiàn)有的軟件成分來(lái)構(gòu)造新的軟件系統(tǒng)的過(guò)程。近十年來(lái)軟件復(fù)用被認(rèn)為是解決軟件危機(jī)、提高軟件生產(chǎn)率和質(zhì)量的最有效和最具潛力的手段?;跇?gòu)件的軟件復(fù)用是迄今為止最優(yōu)秀的軟件復(fù)用手段。構(gòu)件是具有內(nèi)部結(jié)構(gòu)和功能的軟件構(gòu)成元素,可通過(guò)標(biāo)準(zhǔn)接口獨(dú)立提供特定服務(wù),并且可由一些連接器及相關(guān)規(guī)則與其它構(gòu)件組裝成符合要求的新軟件或構(gòu)件。這就為分布式系統(tǒng)的開發(fā)提供了很好的支持。開發(fā)者可以將應(yīng)用系統(tǒng)的功能部件開發(fā)成一個(gè)個(gè)獨(dú)立的構(gòu)件,獨(dú)立于計(jì)算機(jī)軟硬件平臺(tái),且具有標(biāo)準(zhǔn)的程序接口和協(xié)議,使不同硬件和操作系統(tǒng)平臺(tái)上分布式應(yīng)用的數(shù)據(jù)共享和互操作。這樣就可以幫助用戶靈活、高效的開發(fā)和集成復(fù)雜的分布式應(yīng)用軟件。
XML的目的是希望借助它能夠確保在通過(guò)網(wǎng)絡(luò)進(jìn)行交互合作時(shí)具有良好的可靠性與互操作性。XML文擋具有簡(jiǎn)單的文本格式,可以用任何文本編輯器編輯,因而是一種與平臺(tái)無(wú)關(guān)的數(shù)據(jù)格式。XML具有良好的數(shù)據(jù)存儲(chǔ)格式、可擴(kuò)展性、高度結(jié)構(gòu)化和便于網(wǎng)絡(luò)傳輸?shù)忍攸c(diǎn),既可以用來(lái)描述網(wǎng)頁(yè)信息,也可以用來(lái)作為信息交換的中間數(shù)據(jù)格式。這就為分布式系統(tǒng)的開發(fā)提供了很好的支持。XML和HTML的一大區(qū)別是XML允許自定義標(biāo)簽。XML可以標(biāo)注各種類型的數(shù)據(jù),包括文檔、圖形、圖像還是數(shù)據(jù)庫(kù)中的數(shù)據(jù)等。信息交互的系統(tǒng)上只需要安裝XML解析器,就可以解讀其它系統(tǒng)傳來(lái)的XML文件中的豐富信息。因此,XML是非常理想的網(wǎng)際交流語(yǔ)言,可以用來(lái)作為異構(gòu)系統(tǒng)間的交流媒介。
進(jìn)程間通信是一切分布式系統(tǒng)的核心。目前有 4種通信模型廣泛被分布式系統(tǒng)使用:RPC、RMI、MOM和流[3]。RPC的目的在于將消息傳遞的大部分復(fù)雜性隱藏起來(lái),比較適用于客戶/服務(wù)器應(yīng)用程序。RMI是RPC的一種改進(jìn)形式,從調(diào)用消息改為調(diào)用對(duì)象,它是符合分布式對(duì)象概念的。在許多分布式系統(tǒng)中,通信并不遵循嚴(yán)格的客戶/服務(wù)器交互模式。網(wǎng)絡(luò)低層通信功能缺乏分布透明性,替代的方案是使用高層消息隊(duì)列模型,這就是MOM通信方式。多數(shù)系統(tǒng)都缺乏對(duì)諸如音頻和視頻這樣的連續(xù)媒體的通信支持,所以必須引入流的概念,支持在有限條件下支持消息的連續(xù)流。
現(xiàn)存的分布式系統(tǒng)的構(gòu)建技術(shù)按其范型可分為基于對(duì)象的分布式系統(tǒng)、基于文件的分布式系統(tǒng)、基于文檔的分布式系統(tǒng)、基于協(xié)作的分布式系統(tǒng)[4]。
3.1 基于對(duì)象的分布式系統(tǒng)
在基于對(duì)象的分布式系統(tǒng)中,所有東西都被作為對(duì)象處理,分布的特性隱藏在對(duì)象接口后面,客戶將以通過(guò)接口調(diào)用對(duì)象的方式獲得服務(wù)和資源。OMG的COBRA技術(shù)規(guī)范、微軟的DCOM、Sun公司的J2EE技術(shù)規(guī)范是目前三種主流的對(duì)象式分布式系統(tǒng)。
CORBA的目標(biāo)主要是提供一個(gè)標(biāo)準(zhǔn)的中間件平臺(tái),使來(lái)自各個(gè)不同軟件生產(chǎn)商的應(yīng)用程序可以互操作。DCOM的目標(biāo)是改善功能性,同時(shí)與組成早期windows系統(tǒng)的以前版本兼容。J2EE是一個(gè)基于JAVA的適合服務(wù)器端組件體系結(jié)構(gòu)的結(jié)合了Java Enterprise API的完整的企業(yè)級(jí)應(yīng)用系統(tǒng)開發(fā)平臺(tái)或中間件體系結(jié)構(gòu),它通過(guò)提供一組應(yīng)用組件和運(yùn)行時(shí)環(huán)境來(lái)構(gòu)造可伸縮的企業(yè)應(yīng)用。J2EE技術(shù)以核心 Java平臺(tái)或Java2平臺(tái)的標(biāo)準(zhǔn)版J2SE為基礎(chǔ),提供了對(duì)EJB、Java Servlets API、JSP以及XML技術(shù)的全面支持。
另外,對(duì)象式分布式系統(tǒng)也有一些例子,如阿姆斯特丹Vrije Universiteit的Globe、北京大學(xué)的青鳥構(gòu)件模型等。
3.2 基于文件的分布式系統(tǒng)
數(shù)據(jù)共享是分布式系統(tǒng)的基礎(chǔ),分布式文件系統(tǒng)是構(gòu)成許多分布式應(yīng)用程序的基礎(chǔ),它允許多個(gè)進(jìn)程在長(zhǎng)時(shí)期內(nèi)以一種安全、可靠的方式共享數(shù)據(jù),使得程序可以像對(duì)本地文件那樣對(duì)遠(yuǎn)程文件進(jìn)行存儲(chǔ)和訪問(wèn),從而允許用戶訪問(wèn)網(wǎng)絡(luò)中的任一計(jì)算機(jī)上的文件。Sun公司的 NFS(network file system)和卡內(nèi)基.梅隆大學(xué)的coda是文件式分布式系統(tǒng)的例子。
NFS的基本思想是每臺(tái)文件服務(wù)器提供它的本地文件系統(tǒng)的標(biāo)準(zhǔn)化視圖,但它不關(guān)心如何實(shí)現(xiàn)本地文件系統(tǒng),每臺(tái)NFS服務(wù)器支持相同的模型。這個(gè)模型帶有一個(gè)通信協(xié)議,該協(xié)議允許客戶訪問(wèn)存儲(chǔ)在另一臺(tái)服務(wù)器上的文件。這種方法允許大量異構(gòu)進(jìn)程共享一個(gè)公用的文件系統(tǒng),其中的進(jìn)程可能運(yùn)行于不同的操作系統(tǒng)和機(jī)器上。Coda在很多方面不同于NFS,尤其是在高可用性方面。Coda被設(shè)計(jì)為一個(gè)可擴(kuò)展的、安全的、高可用的分布式文件系統(tǒng)。Coda的一個(gè)重要目標(biāo)是實(shí)現(xiàn)高度的命名和位置透明性,以使系統(tǒng)對(duì)用戶來(lái)說(shuō)好像是純本地文件系統(tǒng)。在高可用性方面,Coda也試圖達(dá)到高度的故障透明性。Coda現(xiàn)已被集成到許多流行的基于UNIX的操作系統(tǒng)中,如Linux。
除了NFS和Coda,還有很多分布式文件系統(tǒng)的例子,如美國(guó)貝爾實(shí)驗(yàn)室的plan9、Berkeley NOW項(xiàng)目的xFS等。
3.3 基于文檔的分布式系統(tǒng)
基于文檔的分布式系統(tǒng)可以使用戶把文檔視為一種交換信息的簡(jiǎn)單而強(qiáng)大的手段,好比在現(xiàn)實(shí)生活中借助于備忘錄、便簽或報(bào)告來(lái)進(jìn)行通信。這種分布式系統(tǒng)的實(shí)例就是萬(wàn)維網(wǎng)和Lotus Notes。
萬(wàn)維網(wǎng)實(shí)質(zhì)上是一個(gè)巨大的客戶-服務(wù)器系統(tǒng),其數(shù)以百萬(wàn)的服務(wù)器分布在世界各地。每個(gè)服務(wù)器上都維護(hù)著一個(gè)文檔的集合,每個(gè)文檔以文件的形式存儲(chǔ)(靜態(tài)的或動(dòng)態(tài)的)。服務(wù)器接受客戶的請(qǐng)求并生成文檔傳給客戶顯示。同時(shí),服務(wù)器也可以接受新文檔并將之存儲(chǔ)起來(lái)。定位一個(gè)文檔最簡(jiǎn)單的方法就是使用URL。URL和CORBA中的IOR或Globe中的聯(lián)系地址差不多。它指定了與文檔相關(guān)服務(wù)器的DNS名稱以及文件名,服務(wù)器可以在其本地文件系統(tǒng)中根據(jù)這個(gè)文件名查找文檔,而且URL還指定了在網(wǎng)絡(luò)上傳送文檔所使用的應(yīng)用級(jí)協(xié)議,如http、ftp等??蛻艉头?wù)器通過(guò)專門軟件(瀏覽器)進(jìn)行交互。瀏覽器負(fù)責(zé)接受用戶輸入、提交請(qǐng)求并顯示文檔。
Lotus Notes是一個(gè)面向數(shù)據(jù)庫(kù)的系統(tǒng),起源于Lotus發(fā)展公司。它由 4個(gè)主要組件組成:客戶、服務(wù)器、數(shù)據(jù)庫(kù)和中間件層。每個(gè)客戶和服務(wù)器可以具有多個(gè)本地相關(guān)聯(lián)的數(shù)據(jù)庫(kù)。每個(gè)數(shù)據(jù)庫(kù)構(gòu)成一個(gè)文箋的集合,文箋是所有notes系統(tǒng)中的關(guān)鍵數(shù)據(jù)元素??蛻敉ㄟ^(guò)和瀏覽器差不多的應(yīng)用程序訪問(wèn)數(shù)據(jù)庫(kù),但它不僅可讀取數(shù)據(jù)庫(kù),還可以修改數(shù)據(jù)庫(kù)。Lotus Notes服務(wù)器稱為Domino服務(wù)器,管理與其相關(guān)聯(lián)的數(shù)據(jù)庫(kù)集合。它的主要任務(wù)是為客戶和其他服務(wù)器提供對(duì)這些數(shù)據(jù)庫(kù)的訪問(wèn)。中間件層在底層的操作系統(tǒng)和網(wǎng)絡(luò)之上實(shí)現(xiàn)了一個(gè)中間層,以允許客戶和服務(wù)器進(jìn)行通信和訪問(wèn)數(shù)據(jù)庫(kù)。
3.4 基于協(xié)作的分布式系統(tǒng)
基于協(xié)作的分布式系統(tǒng)的關(guān)鍵之處在于把計(jì)算和協(xié)作分離開來(lái)。協(xié)作部分處理進(jìn)程間的所有通信和協(xié)作,好比一個(gè)把進(jìn)程執(zhí)行的各個(gè)活動(dòng)結(jié)合起來(lái)的粘合劑。它與其它分布式系統(tǒng)不同在于它致力于為進(jìn)程提供一種無(wú)須事先得知對(duì)方情況的便利的通信方法,通信可以以匿名的方式繼續(xù)下去。這種方法的主要優(yōu)點(diǎn)是其靈活性,在系統(tǒng)繼續(xù)運(yùn)行的同時(shí),對(duì)其進(jìn)行擴(kuò)展或修改變得更容易了。目前,這個(gè)領(lǐng)域正處于研究中,很多公司或組織多有類似研究項(xiàng)目,比較成功的有TIBCO的Rendezvous Bus和sun公司的Jini。Rendezvous Bus采用發(fā)布/訂閱機(jī)制處理進(jìn)程間通信。Jini提供了把進(jìn)程結(jié)合到一起的基礎(chǔ),通信可以使用不同的方法進(jìn)行,如Java RMI。
分布式系統(tǒng)是建立在網(wǎng)絡(luò)之上的系統(tǒng),用戶感覺不到數(shù)據(jù)和處理是分布的。分布式系統(tǒng)通常增強(qiáng)了系統(tǒng)的可擴(kuò)展性、穩(wěn)定性和執(zhí)行效率。因此,分布式系統(tǒng)是多種技術(shù)的綜合使用,也存在著多種類型。普遍認(rèn)為分布式系統(tǒng)在未來(lái)幾年中會(huì)越來(lái)越重要和普及,許多機(jī)構(gòu)會(huì)將大多數(shù)計(jì)算機(jī)連接到分布式系統(tǒng)中,為用戶提供更好、更廉價(jià)和更方便的服務(wù)。
[1] 梁維海.三層體系結(jié)構(gòu)無(wú)關(guān)性的研究及實(shí)現(xiàn)[D].四川:成都理工大學(xué),2004:1-4.
[2] 潘俊虹.淺析三種主流分布式組件對(duì)象模型對(duì)比及互操作[J].南平師專學(xué)報(bào),2006,25(4):56-59.
[3] George Coulouris,Jean Dollimore,Tim Kindberg著.分布式系統(tǒng)概念與設(shè)計(jì)[M].金蓓弘,曹冬磊,譯.北京:機(jī)械工業(yè)出版社,2008:84-139.
[4] Andrew S.Tanenbaum,Maartenvan Steen著.分布式系統(tǒng)原理與范型[M].楊劍峰,常曉波,李敏,譯.北京:清華大學(xué)出版社,2004:384-571.
Discussion on distributed system
On the base of introducing the distributed system, this article discusses the technical basises and construction technologies of distributed system. Software reuse, XML, distributed communication technologies is the basises of distributed system. According to the paradigm, distributed system can be divided into object oriented distributed system, file oriented distributed system,distributed system based on document, distributed system based on collaboration. This article introduces the characteristics and typical examples of each type.
Distributed system; technical basises; construction technologies
TP311.5
A
1008-1151(2016)01-0005-02
2015-12-12
賈素來(lái)(1979-),男,江蘇泰州人,無(wú)錫商業(yè)職業(yè)技術(shù)學(xué)院公共計(jì)算機(jī)教學(xué)部講師,河海大學(xué)計(jì)算機(jī)應(yīng)用技術(shù)專業(yè)碩士研究生,研究方向?yàn)檐浖こ?,信息系統(tǒng)設(shè)計(jì)。