軟體工程

Download Report

Transcript 軟體工程

軟體工程
第12章 分散式架構系統
Distributed System Architecture
1
學習目標




瞭解各種分散式系統架構的優缺點
瞭解分散式系統架構的兩種主要模型,主
從式系統和分散式物件系統
瞭解物件請求訊息仲裁者(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,結構化查詢語言)資料庫查詢的中
介軟體,可用來處理從資料庫擷取資訊的動作。
三層式與多層式(將應用程式的處理分散到多
台伺服器)主從架構,原本就比二層式架構更
具延展性。若與精簡型用戶端的二層式架構相
比,這兩種架構的網路流量較少。
不同主從式架構的用法
架構
應用程式
使用精簡型用戶端的
二層式主從架構
無法將應用程式的處理和資料管理分開的舊系統
只有很少或完全沒有資料管理的大量計算應用程式,如編譯程式
只有很少或完全沒有應用程式處理的大量資料應用程式,如瀏覽
與查詢程式
使用肥胖型用戶端的
二層式主從架構
應用程式的處理是由用戶端的現成軟體(如Microsoft Excel)所
提供
處理資料時需要大量計算(如資料視覺化)的應用程式
在系統管理建構完善的環境中,使用具有相當穩定終端使用者功
能的應用程式
三層或多層式主從架
構
具有成百上千個用戶端的大型應用程式
應用程式的資料和應用都只是暫時的
應用程式的資料是從多種資源整合而來的
12.3 分散式物件架構



在分散式系統的主從式模型中,用戶端和伺服
器是不同的。用戶端所使用的服務是由伺服器
所提供,而不是由其他用戶端提供;
設計分散式系統更普遍的作法是消除用戶端和
伺服器之間的分別,並且將系統架構設計成分
散式物件架構(distributed object
architecture)。
在分散式物件架構中,基本的系統元件是一些
物件。這些物件都提供有使用其服務的介面。
物件在呼叫其他物件提供的服務時,在邏輯上
對用戶端(服務接收者)和伺服器(服務提供
者)並無區別。
分散式物件架構圖
分散式物件模型有下列幾個優點:




它可以讓系統設計者延後決定哪些物件要提供哪些服務。
它是一個非常開放的系統架構,可以依需求隨時加入新
的資源。物件的通訊標準已經建立並且也已經實作,因
此物件可用不同的程式語言來撰寫,並且可以和其他不
同物件進行溝通與提供服務。
這樣的系統具有彈性及延展性。不同的系統物件實例或
複製物件,可以提供相同的服務,來分擔處理不同的系
統負荷。
物件可以依照需要在網路上轉移,所以系統可以動態的
重新設定它的組態。這在服務要求沒有固定模式時非常
重要。提供服務的物件可以在同一個處理器上轉移成要
求服務的物件,如此可以提升系統的執行效能。
資料探勘系統的分散式架構
系統模型


使用者需求必須要以自然語言來撰寫,因
為要能讓非技術專家也能看懂。不過,更
詳細的系統需求則可以用比較技術的方式
來表示。其中一種被廣泛使用的技術,是
將系統規格記錄成一組系統模型(system
model)。
系統模型最重要的特點是它將系統的細節
省略。系統模型是對系統的抽象描述,而
不是系統的另外一種表示方式。
12.4 機構之間的分散式運算



由於保全性與交互運作性(interoperability),分散式計算主要都是實作在
組織層級。
組織中會有多台伺服器,彼此分擔計算工
作負荷。由於它們是在同一個組織內,因
此可以規定遵循同一套標準和作業程序。
不過現在較新的分散式計算模型,也可以
進行組織之間的(inter- organisational)分
散式計算,而不只是在組織內。
點對點架構



點對點(peer-to-peer, p2p)系統是非集中式的
(decentralised)系統,計算工作可能是由網
路上的任何節點來進行,而且至少在原則上並
不區分用戶端和伺服器。
在點對點應用程式中,整個系統是設計成要善
加利用分佈在網路上的多台電腦的計算能力和
儲存空間。
理論上,點對點系統中的每個網路節點可以得
知其他所有節點,可以連結到它,也可以與它
交換資料。不過在實務上這是不可能的,因此
節點都會被組織成一個個區域,再搭配其中一
些節點當作橋樑通往其他節點區。
服務導向系統架構


由某一方提供給另一方的一種行動(act)
或成果(performance)。雖然這之間的過
程可能會被約束在某個實體產品,但成果
在本質上是無形的。
服務的模型有很多種,從JINI模型
(Kumaran, 2001)到web服務(Stal, 2002)
和網格(grid)服務 。
服務導向系統的觀念架構圖