300 likes | 649 Views
軟體工程. 第 12 章 分散式架構系統 Distributed System Architecture. 學習目標. 瞭解各種分散式系統架構的優缺點 瞭解分散式系統架構的兩種主要模型,主從式系統和分散式物件系統 瞭解物件請求訊息仲裁者( ORB )的概念和 CORBA 標準的基本原則 說明實作跨機構分散式系統的方式,包括點對點和服務導向 架構. 分散式系統( distributed system ). 分散式系統是指將原本集中在一台電腦處理的資訊,分散到多台電腦同時進行處理的系統。 使用分散式來開發系統的好處:
E N D
軟體工程 第12章 分散式架構系統 Distributed System Architecture
學習目標 • 瞭解各種分散式系統架構的優缺點 • 瞭解分散式系統架構的兩種主要模型,主從式系統和分散式物件系統 • 瞭解物件請求訊息仲裁者(ORB)的概念和CORBA標準的基本原則 • 說明實作跨機構分散式系統的方式,包括點對點和服務導向架構
分散式系統(distributed system) • 分散式系統是指將原本集中在一台電腦處理的資訊,分散到多台電腦同時進行處理的系統。 • 使用分散式來開發系統的好處: • 資源共享(resource sharing):分散式系統可以分享網路上各個不同電腦上的硬體與軟體,例如磁碟、印表機、檔案、編譯程式等。 • 開放性(openness):分散式系統通常是開放式系統,這表示系統是根據標準協定而設計的,因此可容納來自不同廠商的硬體設備和軟體。 • 並行性(concurrency):在分散式系統中,網路上的不同電腦可能會有多個行程(process)同時執行。 • 延展性(scalability):原則上,分散式系統至少都可以透過增加新的資源來擴充,以符合系統新的需求。 • 容錯性(fault tolerance):分散式系統可以容忍某些硬體和軟體的故障發生,因為使用多台電腦以及進行資訊的複製,可讓系統的可用率增加。在大多數分散式系統中,當故障發生時都只是稍微減少服務或變慢。
分散式系統也有一些缺點: • 複雜性(complexity):分散式系統比集中式系統更複雜,因此更難瞭解它們的外顯性質,也不容易測試這些系統。舉例來說,系統的執行效能不只和處理器的執行速度有關,它也和網路的頻寬以及網路上各個不同處理器的速度有關。 • 保全性(security):系統可以讓網路上各個不同電腦進行存取,因而網路上的交通流量也容易被竊聽,所以更難確保分散式系統的資料完整性,而且也不容易保持系統服務不被阻斷服務攻擊(denial-of-service attack)所影響。 • 易管理性(manageability):系統中可能有不同類型的電腦,而且可能執行不同版本的作業系統。若某部電腦發生故障,可能會擴及其他電腦而造成意想不到的結果。 • 不可預測性(unpredictability):使用過全球資訊網的使用者應該都知道,分散式系統的回應是無法預期的。它的回應會根據系統的整體負荷、組織方式和網路負載有所不同。
2種常見的分散式系統架構: • 主從式架構(client–server architecture):這種方式是將系統視為一組服務,提供給使用這些服務的用戶端使用。伺服器和用戶端在這些系統中有不同處理方式。 • 分散式物件架構(distributed object architecture):這種方式的伺服器和用戶端之間並無區別。系統可以視為是由一組互動的物件所組成,這些物件的所在位置則無關緊要。系統中的服務提供者和服務使用者之間也沒有區別。
12.1 多重處理器架構 • 分散式系統中最簡單的模型就是多重處理器系統(multiprocessor system),這種系統是由一些行程所組成,這些行程能夠在(但不一定需要)不同的處理器上執行。 • 用多重處理器可以改善系統的執行效能和彈性。
12.2 主從式架構 • 在主從式架構中,應用程式被視為一組由伺服器所提供的服務,以及一組使用這些服務的用戶端 。 • 用戶端必須知道有哪些服務可用,但是通常不會知道其他用戶端的存在。 • 用戶端和伺服器是不同的行程。
最簡單的主從式架構稱為二層式主從架構(two-tier client–server architecture) 。 • 二層式的主從架構可以分為2種型式: • 精簡型用戶端模型(thin-client model):在這種模型中,所有的應用程式處理和資料管理工作都是在伺服器上進行,用戶端則只負責執行展示的軟體。 • 肥胖型用戶端模型(fat-client model):在這種模型中,伺服器只負責資料管理,用戶端上的軟體則處理應用程式的邏輯以及和系統使用者之間的互動。
在這裡使用的三層式架構,可以讓網站伺服器和資料庫伺服器之間的資訊轉移達到最佳化。 • 這些系統之間的通訊可以使用快速而低階的通訊協定。而支援SQL(Structured Query Language,結構化查詢語言)資料庫查詢的中介軟體,可用來處理從資料庫擷取資訊的動作。 • 三層式與多層式(將應用程式的處理分散到多台伺服器)主從架構,原本就比二層式架構更具延展性。若與精簡型用戶端的二層式架構相比,這兩種架構的網路流量較少。
12.3 分散式物件架構 在分散式系統的主從式模型中,用戶端和伺服器是不同的。用戶端所使用的服務是由伺服器所提供,而不是由其他用戶端提供; 設計分散式系統更普遍的作法是消除用戶端和伺服器之間的分別,並且將系統架構設計成分散式物件架構(distributed object architecture)。 在分散式物件架構中,基本的系統元件是一些物件。這些物件都提供有使用其服務的介面。物件在呼叫其他物件提供的服務時,在邏輯上對用戶端(服務接收者)和伺服器(服務提供者)並無區別。
分散式物件模型有下列幾個優點: • 它可以讓系統設計者延後決定哪些物件要提供哪些服務。 • 它是一個非常開放的系統架構,可以依需求隨時加入新的資源。物件的通訊標準已經建立並且也已經實作,因此物件可用不同的程式語言來撰寫,並且可以和其他不同物件進行溝通與提供服務。 • 這樣的系統具有彈性及延展性。不同的系統物件實例或複製物件,可以提供相同的服務,來分擔處理不同的系統負荷。 • 物件可以依照需要在網路上轉移,所以系統可以動態的重新設定它的組態。這在服務要求沒有固定模式時非常重要。提供服務的物件可以在同一個處理器上轉移成要求服務的物件,如此可以提升系統的執行效能。
系統模型 • 使用者需求必須要以自然語言來撰寫,因為要能讓非技術專家也能看懂。不過,更詳細的系統需求則可以用比較技術的方式來表示。其中一種被廣泛使用的技術,是將系統規格記錄成一組系統模型(system model)。 • 系統模型最重要的特點是它將系統的細節省略。系統模型是對系統的抽象描述,而不是系統的另外一種表示方式。
12.4 機構之間的分散式運算 • 由於保全性與交互運作性(inter-operability),分散式計算主要都是實作在組織層級。 • 組織中會有多台伺服器,彼此分擔計算工作負荷。由於它們是在同一個組織內,因此可以規定遵循同一套標準和作業程序。 • 不過現在較新的分散式計算模型,也可以進行組織之間的(inter- organisational)分散式計算,而不只是在組織內。
點對點架構 • 點對點(peer-to-peer, p2p)系統是非集中式的(decentralised)系統,計算工作可能是由網路上的任何節點來進行,而且至少在原則上並不區分用戶端和伺服器。 • 在點對點應用程式中,整個系統是設計成要善加利用分佈在網路上的多台電腦的計算能力和儲存空間。 • 理論上,點對點系統中的每個網路節點可以得知其他所有節點,可以連結到它,也可以與它交換資料。不過在實務上這是不可能的,因此節點都會被組織成一個個區域,再搭配其中一些節點當作橋樑通往其他節點區。
服務導向系統架構 • 由某一方提供給另一方的一種行動(act)或成果(performance)。雖然這之間的過程可能會被約束在某個實體產品,但成果在本質上是無形的。 • 服務的模型有很多種,從JINI模型(Kumaran, 2001)到web服務(Stal, 2002)和網格(grid)服務 。