1. 程式人生 > >分散式系統中的通訊機制

分散式系統中的通訊機制

1 分散式系統及其透明性

分散式系統是由多個相互連線的處理資源組成的計算系統,它們在整個系統的控制下可合作執行一個共同任務,最少依賴於集中的程式、資料或硬體。進一步說明如下:

1) 系統由多個處理器組成 。

2) 這些計算機資源可以是物理上相鄰的、使用機器內部匯流排或開關連線處理器,通過共享主存進行通訊;也可以是地理上分開的、使用計算機通訊網路(遠端網或區域性網)連線的計算機系統,使用報文(message)進行通訊。

3) 這些計算資源組成一個整體,對使用者是透明的,即使用者使用任何資源時不必知道這些資源在哪裡。

4) 一個程式可以分散到各計算機上執行 。

5) 各計算機地位平等,除了受全系統的作業系統控制外,不存在主從控制和集中控制環節。

透明性:分散式系統追求這樣一個目標——開啟一個檔案時,不管此檔案是在本地還是在遠處,都應能用同一種方式,網路對使用者或程式設計師來說是透明的,也就是說,使用者或程式設計師看不見網路的存在,正像虛擬儲存器中隱匿了外儲存器一樣,這樣,從使用者開看,網路中的全部機器表現為一個,使用者看不到(隱匿了的)機器的邊界和網路本身。透明性包括資料透明和程序透明,也就是說使用者不必知道資料放在什麼地方以及程序在何處執行。

2 遠端程序通訊

一個良好的程序間通訊機制很重要,原因在於,我們必須以與語言、網路位置,甚至主機作業系統無關的統一方式訪問分佈於區域網(甚至廣域網)中的各種資源。為了達到這個目標,程序間通訊設施必須同時提供能影響通訊程序之間、程序與資源之間的區域性通訊和遠端通訊的策略及機制。

遠端程序通訊可使用不同的原語集,最常用的有訊息傳遞、遠端過程呼叫(RPC)、事務處理等三種。它們按抽象級別進行了遞增排序,並且每一種均可由前面的進行構造。

遠端程序之間的訊息傳遞與客戶(程序)——伺服器(程序)模型相關,是集中式系統的程序間通訊的擴充。資訊流單向從順客程序(傳送程序)傳送到接收程序.然而,對高階的資訊傳送,如會合,資訊流是雙向的,也就是說,對每一個初始請求都返回一條響應訊息。

2.1 訊息傳遞

在分散式系統中,程序相互通訊是通過彼此交換訊息進行的。一個訊息是從一個程序發往另一些程序的資訊單位。源程序通過執行send操作傳送訊息,宿程序則通過執行receive操作來獲取訊息;如果必要,在其獲取訊息後再通過執行reply操作給傳送者一個回覆。因此,分散式作業系統通常提供send、receive和reply等基本通訊原語來實現程序間的通訊和同步。

訊息轉移原語分為兩類:同步型和非同步型。在非同步型通訊機制中,轉移訊息的程序不等待接受者的回覆,允許傳送方可任意超前於接收方;而同步型訊息轉移正好相反,總是要求傳送方等待接收方的回覆,然後傳送方與接收方同步繼續向下執行。

訊息本身要佔用儲存空間,並常常存放在系統的緩衝區中。當使用非同步訊息轉移機制時,系統中的每個程序在某一時刻可能有多個尚未處理的訊息。由於訊息緩衝區是一個有窮的資源,因此當使用非同步訊息傳遞方式傳遞訊息時,可能會發生訊息緩衝區溢位的情況。使用同步訊息傳遞方式時,系統中的每個程序絕不可能存在一個以上尚未處理的訊息,其訊息緩衝區的管理演算法比較簡單。

2.2 遠端過程呼叫(RPC)

遠端過程呼叫(RemoteProcedure Call)是將單機環境下的過程呼叫加以擴充後延伸到分散式系統環境。指使用者可以向呼叫本地過程一樣呼叫不同地域的不同計算機上的過程從而使得應用程式設計人員不必設計和開發有關傳送和接收資訊的實現細節。機制組成:

1)    stub:客戶、伺服器各一個

2)    binding:使客戶能定位到相應的伺服器

3)    控制部分:為跟蹤RPC的呼叫狀態設定

4)    傳送部分:確定如何將資訊從一個節點傳送到另一個節點。

遠端過程呼叫的目的是為了能夠將分散式程式當作集中式系統中的常規程式,以同樣的形式書寫。這種通訊方法的主要優點是,程式設計師無需知道呼叫的是一個遠端過程還是一個本地過程。

RPC這個通用概念可以使用下面這個簡單的模型,當呼叫一個遠端過程時:(1)呼叫環境被掛起。 (2)將引數由網路傳送給執行過程的環境,並複製到過程的環境中。(3)執行所需的過程。當在過程完成併產生結果時,將結果傳回給呼叫環境,並分配給結果變元。然後就像從過程呼叫返回一樣繼續執行。

RPC的實現要考慮兩個方面的問題。第一,當進行遠端過程呼叫時,呼叫場點必須能定位出被呼叫的過程實際上執行在哪個場點上;第二,相關的兩個場點必須能協同合作交換資訊。所有這些對使用者都是透明的,這些的工作是依次進行的。

遠端過程呼叫機制具有以下優點:(1)它有整潔的、簡單的語義—這使得分散式計算變得容易,且能得到正確的結果。 (2)它是遠端程序間遠端通訊的一種高效形式—過程呼叫簡單,通訊速度比較快。(3)它是一種通用的方法—在單計算機通訊中,過程是一個演算法各部分之間通訊的最重要機制。因此,可以利用RCP機制來實現單客戶程序和單伺服器程序間能通訊。這種機制可擴育成具有多客戶多伺服器程序的系統。

2.3 事務處理

分散式的計算機系統由於在不同結點上提供了冗餘資源的可能性,它的可靠性是很高的。然而,冗餘資源的分佈也會帶來某些嚴重問題,如沒有全域性的狀態資訊,可能發生部分故障及某些並行操作的效能等。這些問題表明,保持資料的一致性有一定的困難。為了維護資料的一致性,產生了分散式的原子事務處理。

事務處理的概念主要來自於資料庫技術,對於分散式作業系統,事務的定義為一個事務就是一次互動,包括一個請求和一個響應,這個請求程序向向響應程序請求一個給定的函式,並將結果向請求者報告。分散式事務處理可以定義為對多個網路節點的多個分割槽和複製型資料庫所儲存的資料進行事務的執行。