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