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)服務 。
服務導向系統的觀念架構圖