賈素來
(無錫商業職業技術學院,江蘇 無錫214153)
淺議分布式系統
賈素來
(無錫商業職業技術學院,江蘇 無錫214153)
文章在介紹分布式系統的基礎上,討論了分布式系統的技術基礎和構建技術。軟件復用、XML、分布式通信等技術是分布式系統的基礎。分布式系統按其范型可分為基于對象的分布式系統、基于文件的分布式系統、基于文檔的分布式系統、基于協作的分布式系統。文章介紹了每種類型的特點及典型例子。
分布式系統;技術基礎;構建技術
傳統的客戶機/服務器體系結構,隨著業務處理對系統提出更高要求,也逐漸暴露出其客戶端逐漸龐大和服務器負擔過重等缺點。因此計算機科學家提出了三層或多層分布式系統(Multi-storeies Distributed System)。三層由表示層、業務邏輯層和數據服務層組成,其中業務邏輯層又由多個子層組成,具體要看系統的復雜程度[1]。這樣就形成了多層分布式體系結構,分布性可以體現在軟件上,也可以是硬件。
在多層結構當中,業務邏輯從客戶端分離出來,移至中間層,系統也就成為客戶端表示層、中間業務邏輯層和數據庫服務器的三層或多層體系結構,如圖1所示[2]。多層體系結構將表示和業務處理分開,縮減了客戶端的規模,又將相關業務和資源分開,降低了服務器的負載,避免了服務器的性能缺陷對整個系統性能的影響。這種在多個服務器上分布應用程序處理的多層可變結構比二層體系結構的伸縮性和擴展性有了很大加強。
表示層是應用的用戶接口部分,擔負著用戶與應用間的對話功能,用于用戶輸入和輸出。業務邏輯層是具體業務功能組件的實現。根據具體情況,這些組件可詳細分成多個子層,一般可分為兩種:公共服務組件、特定領域組件。公共服務組件主要用于提供常見問題的高效解決算法和提供與基礎設施相關的公共服務,比如文件讀寫、目錄管理、報表制作等。這類組件支持水平復用,各種軟件系統都可能使用它們提供的服務。特定領域組件與實際的應用領域密切相關,依賴于特定的問題和特定的問題解決方法,具有領域特定性。為此,在識別、獲取和表示可復用信息時,應采用面向領域的策略。領域的需求具有一定的穩定性,使得獲取的信息可以在較長時間內多次復用。領域工程是一組相似或相近系統的應用工程建立基本能力和必備基礎的過程,覆蓋了建立可復用軟件的所有活動,可劃分為以下三個階段領域分析、領域設計和領域實現。數據服務層為業務邏輯層組件提供從數據源的查詢、操作等數據服務。

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