-
分佈式系統
(建立在網絡之上的軟件系統)
鎖定
分佈式系統(distributed system)是建立在網絡之上的軟件系統。正是因為軟件的特性,所以分佈式系統具有高度的內聚性和透明性。因此,網絡和分佈式系統之間的區別更多的在於高層軟件(特別是操作系統),而不是硬件。
[1]
分佈式系統簡介
在一個分佈式系統中,一組獨立的計算機展現給用户的是一個統一的整體,就好像是一個系統似的。系統擁有多種通用的物理和邏輯資源,可以動態的分配任務,分散的物理和邏輯資源通過計算機網絡實現信息交換。系統中存在一個以全局的方式管理計算機資源的分佈式操作系統。通常,對用户來説,分佈式系統只有一個模型或範型。在操作系統之上有一層軟件中間件(middleware)負責實現這個模型。一個著名的分佈式系統的例子是萬維網(World Wide Web),在萬維網中,所有的一切看起來就好像是一個文檔(Web頁面)一樣。
[1]
在計算機網絡中,這種統一性、模型以及其中的軟件都不存在。用户看到的是實際的機器,計算機網絡並沒有使這些機器看起來是統一的。如果這些機器有不同的硬件或者不同的操作系統,那麼,這些差異對於用户來説都是完全可見的。如果一個用户希望在一台遠程機器上運行一個程序,那麼,他必須登陸到遠程機器上,然後在那台機器上運行該程序。
[1]
他們的區別在於:分佈式操作系統的設計思想和網絡操作系統是不同的,這決定了他們在結構、工作方式和功能上也不同。網絡操作系統要求網絡用户在使用網絡資源時首先必須瞭解網絡資源,網絡用户必須知道網絡中各個計算機的功能與配置、軟件資源、網絡文件結構等情況,在網絡中如果用户要讀一個共享文件時,用户必須知道這個文件放在哪一台計算機的哪一個目錄下;分佈式操作系統是以全局方式管理系統資源的,它可以為用户任意調度網絡資源,並且調度過程是“透明”的。當用户提交一個作業時,分佈式操作系統能夠根據需要在系統中選擇最合適的處理器,將用户的作業提交到該處理程序,在處理器完成作業後,將結果傳給用户。在這個過程中,用户並不會意識到有多個處理器的存在,這個系統就像是一個處理器一樣。
[1]
內聚性是指每一個數據庫分佈節點高度自治,有本地的數據庫管理系統。透明性是指每一個數據庫分佈節點對用户的應用來説都是透明的,看不出是本地還是遠程。在分佈式數據庫系統中,用户感覺不到數據是分佈的,即用户不須知道關係是否分割、有無副本、數據存於哪個站點以及事務在哪個站點上執行等。
[1]
分佈式系統分類
分佈式計算機系統的體系結構可用處理機之間的耦合度為主要標誌來加以描述。耦合度是系統模塊之間互聯的緊密程度,它是數據傳輸率、響應時間、並行處理能力等性能指標的綜合反映,主要取決於所選用體系結構的互聯拓撲結構和通信鏈路的類型。
[2]
分佈式系統特徵
分佈式系統是多個處理機通過通信線路互聯而構成的鬆散耦合的系統。從系統中某台處理機來看,其餘的處理機和相應的資源都是遠程的,只有它自己的資源才是本地的。至今,對分佈式系統的定義尚未形成統一的見解。一般認為,分佈式系統應具有以下四個特徵:
[3]
(1)分佈性。分佈式系統由多台計算機組成,它們在地域上是分散的,可以散佈在一個單位、一個城市、一個國家,甚至全球範圍內。整個系統的功能是分散在各個節點上實現的,因而分佈式系統具有數據處理的分佈性。
[3]
(2)自治性。分佈式系統中的各個節點都包含自己的處理機和內存,各自具有獨立的處理數據的功能。通常,彼此在地位上是平等的,無主次之分,既能自治地進行工作,又能利用共享的通信線路來傳送信息,協調任務處理。
[3]
(4)全局性。分佈式系統中必須存在一個單一的、全局的進程通信機制,使得任何一個進程都能與其他進程通信,並且不區分本地通信與遠程通信。同時,還應當有全局的保護機制。系統中所有機器上有統一的系統調用集合,它們必須適應分佈式的環境。在所有CPU上運行同樣的內核,使協調工作更加容易。
[3]
分佈式系統優缺點
分佈式系統優點
(1)資源共享。若干不同的節點通過通信網絡彼此互聯,一個節點上的用户可以使用其他節點上的資源,如分佈式系統允許設備共享,使眾多用户共享昂貴的外部設備,如彩色打印機;允許數據共享,使眾多用户訪問共用的數據庫;可以共享遠程文件,使用遠程特有的硬件設備(如高速陣列處理器),以及執行其他操作。
[3]
(2)加快計算速度。如果一個特定的計算任務可以劃分為若干個並行運行的子任務,則可把這些子任務分散到不同的節點上,使它們同時在這些節點上運行,從而加快計算速度。另外,分佈式系統具有計算遷移功能,如果某個節點上的負載太重,則可把其中一些作業移到其他節點去執行,從而減輕該節點的負載。這種作業遷移稱為負載平衡。
[3]
系統必須能夠檢測節點的故障,採取適當的手段,使它從故障中恢復過來。系統確定故障所在的節點後,就不再利用它來提供服務,直至其恢復正常工作。如果失效節點的功能可由其他節點完成,則系統必須保證功能轉移的正確實施。當失效節點被恢復或者修復時,系統必須把它平滑地集成到系統中。
[3]
(4)通信方便、快捷。分佈式系統中各個節點通過一個通信網絡互聯在一起。通信網絡由通信線路、調制解調器和通信處理器等組成,不同節點的用户可以方便地交換信息。在低層,系統之間利用傳遞消息的方式進行通信,這類似於單CPU系統中的消息機制。單CPU系統中所有高層的消息傳遞功能都可以在分佈式系統中實現,如文件傳遞、登錄、郵件、Web瀏覽和遠程過程調用( Remote Procedure call,RPC)。
[3]
分佈式系統實現了節點之間的遠距離通信,為人與人之間的信息交流提供了很大方便不同地區的用户可以共同完成一個項目,通過傳送項目文件,遠程登錄進入對方系統來運行程序,如發送電子郵件等,協調彼此的工作。
[3]
分佈式系統缺點
儘管分佈式系統具備眾多優勢,但它也有自身的缺點,主要是可用軟件不足,系統軟件、編程語言、應用程序以及開發工具都相對很少。此外,還存在通信網絡飽和或信息丟失和網絡安全問題,方便的數據共享同時意味着機密數據容易被竊取。雖然分佈式系統存在這些潛在的問題,但其優點遠大於缺點,而且這些缺點也正得到克服。因此,分佈式系統仍是人們研究、開發和應用的方向。
分佈式系統應用
分佈式系統並行
分佈式系統容錯應用
分佈式系統固有的應用
對於一組用户而言, 分佈式系統有一個特別的應用稱為計算機支持的協同工作(Computer Supported Cooperative Working,CSCW)或羣件(groupware), 支持用户協同工作。另一個應用是分佈式會議, 即通過物理的分佈式網絡進行電子會議。同樣,多媒體遠程教學也是一個類似的應用。
[4]
DCE(分佈式計算環境)是OSF(開放系統基金會)開發的分佈式計算技術的工業標準集。它提供保護和控制對數據訪問的安全服務、容易尋找分佈式資源的名字服務、以及高度可伸縮的模型用於組織極為分散的用户、服務和數據。D C E可在所有主要的計算平台上運行, 並設計成支持異型硬件和軟件環境下的分佈式應用。
[4]
DCE已經被包括TRANSVARL在內的一些廠商實現。TRANSVARL是最早的多廠商組(multi vendor team)的成員之一,它提出的建議已成為DCE體系結構的基礎。在中可以找到利用DCE開發分佈式應用的指南。
[4]
一些其它標準基於一個特別的模型,比如CORBA(公用對象請求代理程序體系結構),它是由OMG (對象管理組)和多計算機廠商聯盟開發的一個標準。CORBA使用面向對象模型實現分佈式系統中的透明服務請求。
[4]
分佈式系統與計算機網絡異同
(1)在計算機網絡中,每個用户或任務通常只使用一台計算機,若要利用網絡中的另一台計算機,則需要遠程註冊。在分佈式計算機系統中,用户進程在系統內各個計算機上動態調度,並根據運行情況由分佈式操作系統動態地、透明地將機器分配給用户進程或任務。
[5]
(2)在計算機網絡中,用户知道它們的文件存放在何處,並用顯示的文件傳輸命令在機器之間傳送文件。在分佈式計算機系統中,文件的放置由操作系統管理,用户可用相同方式訪問系統中的所有文件而不管它們位於何處。
[5]
(3)在計算機網絡中,各結點計算機均有自己的操作系統,資源歸局部所有並被局部控制,網絡內的進程調度是通過進程遷移和數據遷移實現的。在分佈式計算機系統中,每個場點上運行一個局部操作系統,執行的任務可以是獨立的,可以是某任務的一個部分,也可以是其他場點上的(部分)任務,且各場點相互協同,合作平衡系統內的負載。
[5]
分佈式系統系統設計難點
1.部分失效問題
由於分佈式系統通常由若干部分組成,各個部分由於各種原因可能發生故障,如硬件故障、軟件錯誤及錯誤操作等。如果一個分佈式系統不對這些故障進行有效的處理,系統某一組成部分的故障可能導致整個系統的癱瘓。
[6]
2.性能和可靠性過分依賴於網絡
3.缺乏統一控制
一個分佈式系統的控制通常是一個典型的分散控制,沒有統一的中心控制。因此,分佈式系統通常需要相應的同步機制來協調系統中各個部分的工作。設計與實現一個對用户來説是透明的且具有容錯能力的分佈式系統是一項具有挑戰性的工作,而且所需的機制和策略尚未成熟。因此什麼樣的程序設計模型、什麼樣的控制機制最適合分佈式系統仍是需要繼續研究的課題。
[6]
4.難以合理設計資源分配策略
在集中式系統中,所有的資源都由操作系統管理和分配,但在分佈式系統中,資源屬於各節點,所以調度的靈活性不如集中式系統,資源的物理分佈可能與用户請求的分佈不匹配,某些資源可能空閒,而另一些資源可能超載。
[6]
5.安全保密性問題