分布式系統(tǒng)進程通信模型的選擇_第1頁
分布式系統(tǒng)進程通信模型的選擇_第2頁
分布式系統(tǒng)進程通信模型的選擇_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

分布式系統(tǒng)進程通信模型的選擇

進程通信是進程之間信息的交換。進程間通信是所有分布系統(tǒng)的核心。在進程之間存儲信息需要兩個消息通信原始語言:發(fā)送和發(fā)送。在分散的系統(tǒng)中,通信通常基于低級網(wǎng)絡(luò)提供的低息傳輸機制?,F(xiàn)代分布統(tǒng)計通常包含數(shù)千萬個進程,需要一種取代計算機網(wǎng)絡(luò)的原始通信功能。否則,很難開發(fā)大規(guī)模的分布式應(yīng)用程序。在分布式系統(tǒng)中,要解決的重要問題是,提供更高級的抽象以實現(xiàn)通信層接口提供的支持,以便更容易實現(xiàn)進程之間的通信。在本文中,我們分析了分散進程中的通信模型,并提出了在開發(fā)分割應(yīng)用程序時選擇通信模型的原則。1中間件協(xié)議協(xié)議的獨立分布式應(yīng)用程序可以直接使用網(wǎng)絡(luò)操作系統(tǒng)提供的編程接口如套接字,這種方法使得分布難以做到透明,不利于編寫大規(guī)模分布式應(yīng)用程序.現(xiàn)在常用的編程平臺是中間件,中間件系統(tǒng)提供多種通用的服務(wù),并通過提供高層通信功能以隱藏通過計算機網(wǎng)絡(luò)進行的低層消息傳遞,力圖實現(xiàn)訪問透明性.支持通信的具體方式,隨中間件系統(tǒng)向用戶和應(yīng)用程序提供的分布模型的不同而有較大差異,如RPC,RMI和消息隊列等.中間件包含了許多通用的協(xié)議,協(xié)議獨立于特定的應(yīng)用程序;同時,將中間件協(xié)議與應(yīng)用層協(xié)議區(qū)分開來,有利于應(yīng)用程序的開發(fā),例如認證(Authentication)協(xié)議的定位,建立認證機制來確認身份,由于認證協(xié)議并不僅限于一個特定的應(yīng)用,它用于分布式系統(tǒng)的許多方面,它應(yīng)被集成到中間件系統(tǒng)中作為一個特定的服務(wù).因此中間件需構(gòu)建在一個獨立的層次上.中間件通信協(xié)議應(yīng)支持高層通信服務(wù),如RPC支持一個進程以透明的方式調(diào)用另一臺機器上的一個過程;RMI支持一進程以透明方式訪問遠程機器上的一個對象.因此在網(wǎng)絡(luò)通信分層結(jié)構(gòu)模型的基礎(chǔ)上,分布式系統(tǒng)的通信模型可以構(gòu)成如圖1所示的六層模型,同OSI/RM相比,OSI/RM的對話層和表示層被中間件層所取代,它包含一些獨立于特定應(yīng)用程序的協(xié)議.傳輸層服務(wù)可以不加修改地作為中間層服務(wù).如圖2所示,中間件層位于應(yīng)用層和傳輸層之間.中間件層又分為兩部分:RPC,RMI等中間件服務(wù)和編碼及外部數(shù)據(jù).前者在下節(jié)將做重點說明.編碼和外部數(shù)據(jù)表示,存在兩種比較流行的風格:CORBA公共數(shù)據(jù)表示和Java對象序列化.CORBA采用的編碼數(shù)據(jù)方式要求接收者具有各個成分的類型知識,還需要編碼(如IDL)數(shù)據(jù)項類型的規(guī)范,以便生成編碼和解碼方法.相反,Java序列化數(shù)據(jù)包括了關(guān)于內(nèi)容類型的所有信息,允許接收方根據(jù)內(nèi)容重構(gòu),而且Java使用反射,進行序列化對象和解序列化串行格式的對象.2持久通信.關(guān)于用戶體驗管理在分布式系統(tǒng)中,消息的發(fā)送者和接收者有時可能都在運行中,有時可能不同時運行.根據(jù)是否要求發(fā)送者和接收者同時處于運行中,進程通信分為持久通信和暫時通信.持久通信需要傳輸?shù)南⒃谔峤恢笥赏ㄐ畔到y(tǒng)來存儲,直到將其交付給接收者為止.持久通信要求存在持久保存消息的消息服務(wù)器,消息保存在硬盤中,消息服務(wù)器給發(fā)送者和接收者起到橋梁作用,因此發(fā)送消息的應(yīng)用程序不必在提交消息后保持運行.同樣,要接收消息的應(yīng)用程序在消息提交給消息服務(wù)器時也可以不處于運行狀態(tài).暫時通信只在發(fā)送和接收消息的應(yīng)用程序運行期間存儲消息.如果路由器無法將消息遞送到下一個路由器或者接收者,消息將會被簡單地丟棄.例如傳輸層通信服務(wù)都僅僅提供暫時通信.持久通信和暫時通信各有優(yōu)缺點.暫時通信有很高的效率,實時性強,而且不需要額外的硬件支持.然而,暫時通信很難做到地域擴展,暫時通信的容錯能力也較弱,系統(tǒng)發(fā)生故障時,難于將故障屏蔽并啟動恢復(fù)過程.持久通信能克服暫時通信的缺點.分布式系統(tǒng)由局域網(wǎng)環(huán)境向互聯(lián)網(wǎng)環(huán)境擴展過程中,持久通信就能發(fā)揮重大作用.在不可靠的互聯(lián)網(wǎng)中,可能由于網(wǎng)絡(luò)故障或者進程故障導(dǎo)致訪問受到限制,并且很難做到發(fā)送應(yīng)用程序和接收應(yīng)用程序同時處于工作狀態(tài),持久通信犧牲通信延時,但可以保證消息可靠接收.持久通信的另一個優(yōu)點是,系統(tǒng)存在堅固存儲器,容易屏蔽故障及從故障中恢復(fù)出來.另一種進程通信分類方法根據(jù)通信過程中是否存在阻塞及阻塞狀態(tài),通信又分為同步通信和異步通信.異步通信的特征:發(fā)送者把要傳輸?shù)南⑻峤恢罅⒓蠢^續(xù)執(zhí)行其它程序,因此該消息存儲在發(fā)送端主機的本地緩沖區(qū)中,或者存儲在送達的第一個通信服務(wù)器上緩沖區(qū)中.在異步通信中,send操作是不阻塞的,因為只要消息被復(fù)制到一個本地緩沖區(qū),發(fā)送進程就允許繼續(xù)進行其它處理,消息的傳遞與發(fā)送進程是并行工作的.receive操作可用阻塞和非阻塞兩種.阻塞型receive的顯著優(yōu)點是根據(jù)到達的消息同步接收線程在實現(xiàn)上很簡單.盡管阻塞型原語會犧牲并發(fā)性,可是在支持多線程的系統(tǒng)環(huán)境如java中,此缺點可以克服,因為receive操作可由一個線程發(fā)出,而該進程中的其它線程仍然是活動的.同步通信的發(fā)送者在提交消息之后會被阻塞,直到消息已經(jīng)到達并存儲在接收主機的本地緩沖區(qū)中以后,才會繼續(xù)執(zhí)行其它程序.在同步通信中,發(fā)送進程和接收進程在每個消息上都同步,即send和receive都是阻塞操作.每次發(fā)送一個send后,發(fā)送進程將一直阻塞,直到發(fā)送了相應(yīng)的receive.每次發(fā)送一個receive,進程將一直阻塞,直到消息到達為止.同步通信的最強形式是基于響應(yīng),即直到接收者處理完消息之后,才將發(fā)送者從阻塞中釋放.最弱形式是基于消息接收,消息送達接收主機,接收者返回一個確認消息,發(fā)送者收到確認消息后,繼續(xù)執(zhí)行其它程序.在實踐中采用這些通信類型的多種組合形式.主要通信類型有持久異步通信、持久同步通信、暫時異步通信和暫時同步通信.圖3是幾種通信形式的示意圖.3現(xiàn)代分布式系統(tǒng)的通信模式在通用的通信模型基礎(chǔ)上,隨用戶和應(yīng)用程序提供的分布模型的不同,通信的具體方式有很大的不同.現(xiàn)在廣泛使用的中間件服務(wù)有:遠程過程調(diào)用(remoteprocedurecall,RPC)、遠程方法調(diào)用(remotemethodinvocation,RMI)、消息隊列和事件.為了分析中間件通信服務(wù)的本質(zhì)和方便用戶使用這些服務(wù),把中間件分為面向?qū)ο蟮闹虚g件和面向消息的中間件.RPC和RMI的本質(zhì)相同,RMI是RPC的擴展.RPC和RMI的目的在于實現(xiàn)訪問透明性.RPC對引用傳遞的支持比較薄弱,RMI的遠程對象可以提供更好的透明性,而且將系統(tǒng)范圍的對象引用作為參數(shù)來傳遞.因此本文以RMI為代表分析面向?qū)ο蟮闹虚g件.RMI使用戶訪問在另一主機上的對象,并遠程調(diào)用其方法.程序的對象是客戶,而遠程對象是服務(wù)器.客戶機可以像調(diào)用本地對象的方法一樣用相同語法調(diào)用遠程對象.它使得分布式環(huán)境下的應(yīng)用程序之間的網(wǎng)絡(luò)通信不再涉及底層的協(xié)議和數(shù)據(jù)的編碼解碼,從而更加簡單自然.RMI體系結(jié)構(gòu)如圖4所示.RMI中間件提供了代理、骨架和調(diào)度程序等組件,這些組件為客戶和服務(wù)器的編程人員隱藏了編碼、消息傳遞和定位遠程對象的細節(jié).面向消息的中間件模型一般提供持久異步通信,它提供消息的中介存儲能力,不需要消息發(fā)送者和接收者在消息傳輸過程中都保持激活狀態(tài).應(yīng)用程序可以通過在特定隊列中插入消息來進行通信,消息由一系列通信服務(wù)器依次進行轉(zhuǎn)發(fā),最終送達目的地.消息隊列系統(tǒng)一般支持那些時間要求較為寬松的消息傳輸.如協(xié)助將高度分散的數(shù)據(jù)庫集成進大規(guī)模信息系統(tǒng)中,又如用于電子郵件和工作流.下面對廣泛使用的分布式系統(tǒng)的通信范例的各項屬性進行對比,如表1所示.在現(xiàn)代分布式系統(tǒng)中,往往使用多種類型的通信形式.例如,CORBA包含多種通信模型,除使用通用的模型外(客戶調(diào)用對象的方法并等待回答),還有以下幾種形式:單向請求,只提供盡力傳輸?shù)姆?wù),但不向調(diào)用者保證調(diào)用請求一定會傳輸?shù)綄ο蠓?wù)器;延遲同步請求,客戶向服務(wù)器發(fā)送請求后,立即繼續(xù)工作而不等待服務(wù)器的響應(yīng);事件和通知服務(wù)和消息隊列等等.因此通信方式的使用根據(jù)分布式系統(tǒng)的不同用途來加以取舍.4進程通信的仿真進程通信是分布式系統(tǒng)的核心,是開發(fā)分布式應(yīng)用程序和研究分布式系統(tǒng)的基礎(chǔ).本文在網(wǎng)絡(luò)通信模型的基礎(chǔ)上提出了通用的進程通信模型.對進程通信的持久性和同步性進行

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論