1. 程式人生 > >作業系統學習筆記:分散式系統結構

作業系統學習筆記:分散式系統結構

分散式系統是一組不共享記憶體和時鐘的處理器的集合,即每個處理器都有它自己的記憶體,處理器之間的通訊可通過各種通訊網路加以實現。

一、動機
這裡寫圖片描述
建立分散式系統主要由4個方面的原因:
1、資源共享
2、加快計算速度
3、可靠性
4、通訊
不同站點可以有機會交換資訊

二、分散式作業系統的型別
1、網路作業系統
通過遠端登入或從遠端機器傳送資料到自己機器的方式來訪問遠端資源。

易於實現,但難用。

2、分散式作業系統
使用者可以像訪問本地資源一樣來訪問遠端資源。從一個站點到另一站點的資料和程式遷移由分散式作業系統控制。
1)資料遷移
分為整體遷移和按需遷移兩種。如果僅訪問大檔案中的小部分,按需遷移效率更高;如果訪問大部分,則複製整個檔案效率更高。這有點象資料庫的全表掃描。

2)計算遷移
系統之間傳遞計算而不是資料。比如,需要彙總不同站點的不同檔案,分別在各站點訪問,然後彙總處理結果(MapReduce)。

這種計算可用不同方法來實現:直接呼叫遠端主機的命令,或者傳送訊息到遠端主機,觸發其執行。

3)程序遷移
計算遷移的邏輯擴充套件。一個程序可能分佈在不同的站點上執行。這可以基於如下考慮:
負載平衡
計算加速
硬體偏好:程序可能更適合在特定的處理上執行
軟體偏好:程序可能需要在特定站點上的軟體加以執行
資料存取:如果使用的資料非常多,遠端命令可能比傳遞資料到本地更為有效。

WEB具有許多分散式計算的特徵。

三、網路結構
區域網、廣域網

四、網路拓撲結構
分散式系統內的站點可用多種方法物理連線,每種都有優缺點。可按下面標準來比較:
安裝成本
通訊成本
有效性

這裡寫圖片描述

五、通訊結構
通訊網路的設計必須考慮5個基本問題:
1、命名和名字解析
遠端系統的程序通常用<主機名,識別符號>來標識,其中主機名是網路內的唯一名稱,識別符號可以是程序識別符號或該主機的其他唯一號碼。為了方便使用者區分使用,主機名通常用字元標識。但對於機器而言,數字更加快速和簡單。因此有一種機制將主機名解析,把目標系統描述成連網硬體的主機ID。呵呵,不錯,就是DNS。

2、路由策略
每個站點擁有一張路由表,其中描述傳送一條訊息到其他站點的可選路徑;可能還包括各條路徑的速度和成本資訊。必要時,可以手動或通過交換路由資訊程式來更新這些資訊。最為通用的三種路由策略是
固定路由:成本最低
虛擬路由:會話期間固定。
動態路由:複雜,但在複雜環境中是最好方法

閘道器:知道如何連線到達本地網路和其他網路的節點。
路由器:計算機網路負責路由的實體。一個路由器必須至少有兩個網路連線。路由器決定訊息的傳送路徑。路由器檢查它的路由表來決定目標主機的位置,或者目標主機所在的網路。
閘道器和路由都是專用的硬體裝置。

3、包策略
訊息通常長度不定,為了簡化系統設計,通用使用固定長度的包、幀或資料報來實現通訊。

4、連線策略
一旦訊息到達目的地,程序可建立通訊會話來交換資訊。最常用的是
電路交換:
兩個程序間建立一個物理鏈路,通訊會話期間獨佔使用。

訊息交換:
兩個程序在傳送一條訊息期間建立一個暫時的鏈路。多條訊息可以共用。

包交換:
一個邏輯訊息被拆分成許多包,分別傳送,路徑可能不同,到達目的地後再組裝。每個包除了資料外,還包括源地址和目標地址。包交換是最常用的方法。以為它最大限度地利用了網路頻寬。

5、線路競爭
訊息傳遞過程中,可能會變得混亂而必須被丟棄,需要重新發送。因此有個避免重複和衝突的問題。解決方法是

衝突檢測:
傳送報文之前,站點必須偵聽鏈路是否空閒(載波偵聽多路存取),空閒開始傳輸,否則必須等待。如果兩個或更多站點同時傳輸,則必須記錄一個衝突檢測,並停止傳輸,然後每個站點在隨機時間間隔後重新嘗試。

乙太網成功地應用了這一技術。(所謂乙太網,就是應用了這一技術的網路)

令牌傳遞:
一種獨特的稱為令牌的報文在系統中迴圈,等到令牌的站點才可以傳輸,傳完後重新傳送令牌。如果令牌丟失,系統通過選舉,選出一個站點生成新令牌。

六、通訊協議
網路系統必須在一個或一組能夠支援諸如確定主機名、網路的主機定位、建立連線等操作的協議上取得一致。為簡化設計,分為多個層次。
這裡寫圖片描述

在邏輯上,協議的每一層與其他系統的同層通訊。而在物理上,一個報文從應用層或更高層出發,依次通過每一個更低的層,每一層可以修改此報文,包括新增報文頭部。我的理解就是,就好像一個快遞一個貨物,送出去前,快遞公司會先將貨物包裹一層,貼上標籤;然後送達接收人,他再剝開包裹,得到貨物。

這裡寫圖片描述

TCP/IP協議比ISO模型層少。

七、健壯性
分散式系統可能遇到各種硬體故障,比如鏈路故障、站點故障、報文丟失等。為了保證系統健壯,必須檢測到任何錯誤,重新配置系統以繼續執行,或復原。

1、故障檢測
使用握手過程來檢測鏈路或站點故障。

2、重構
站點發現故障後,必須啟動一個程式,重新配置系統並繼續正常的操作模式。比如廣播此故障,避免其他站點使用該出錯站點的服務。

3、故障恢復
當鏈路或站點的錯誤被修復後,必須能夠與系統重新整合起來。

八、設計事項
把處理器和儲存裝置的多樣性設計成對使用者透明並不是一件簡單的任務。理想的情況是,分散式系統在使用者看來就像一個傳統的集中式系統。

1、透明:一個透明的分散式系統的使用者介面不應區分本地和遠端資源,即使用者能像在本地一樣地訪問遠端分散式系統。分散式系統應該負責查詢資源以及安排適當的互動操作。

2、靈活性:透明的另一方面體現在使用者的靈活性上。它允許使用者登入到系統的任意機器,而不是強迫使用特定。

3、容錯性:系統能在一定程度上容忍各種故障,出現了問題後,仍然能夠繼續執行。

4、可擴充套件性:適應日益增長的負荷能力。具有可擴充套件的潛力。