500 likes | 806 Views
分散式系統架構. 為在多個處理器上執行的軟體所做的架構設計. 本章目的. 說明分散式的統架構的主要的優缺點 描述開發主從式架構的不同方法 說明主從式和分散式物件架構的不同 描述物件訊息仲裁者( ORB )的概念和 CORBA 標準的基本原則. 本章內容. 多重處理器架構 主從式架構 分散式物件架構 CORBA. 分散式系統 . 事實上,目前所有的大型電腦系統都是分散式系統 資訊處理分散於多部電腦上,而不是限制於某一部單一機器 分散式的軟體工程已愈趨重要. 系統類型. 個人系統: 專門設計放在個人電腦或工作站上執行的非分散式系統 。
E N D
分散式系統架構 為在多個處理器上執行的軟體所做的架構設計
本章目的 • 說明分散式的統架構的主要的優缺點 • 描述開發主從式架構的不同方法 • 說明主從式和分散式物件架構的不同 • 描述物件訊息仲裁者(ORB)的概念和CORBA標準的基本原則
本章內容 • 多重處理器架構 • 主從式架構 • 分散式物件架構 • CORBA
分散式系統 • 事實上,目前所有的大型電腦系統都是分散式系統 • 資訊處理分散於多部電腦上,而不是限制於某一部單一機器 • 分散式的軟體工程已愈趨重要
系統類型 • 個人系統:專門設計放在個人電腦或工作站上執行的非分散式系統。 • 嵌入式系統:可在單一處理器或一群經整合的處理器上執行的系統,例如包括內部裝置控制系統、設備與工具管理系統等。 • 分散式系統:系統軟體可以在經由網路鬆散整合的一群協同處理器上執行,例如銀行的ATM 系統、預約系統、群組軟體系統等。
分散式系統的特性 • 資源共享 (Resource sharing) • 開放性 (Openness) • 並行執行 (Concurrency) • 可延展性 (Scalability) • 容錯性 (Fault tolerance) • 透通性 (Transparency)
分散式系統的缺點 • 複雜性 (Complexity) • 安全性 (Security) • 可管理性 (Manageability) • 不可預測性 (Unpredictability)
分散式系統架構 • 主從式架構 • 這種方式可以將系統視為一組服務,專門提供給使用這些服務的用戶端使用。伺服器和用戶端在這些系統中有不同處理方式 • 分散式物件架構 • 在這種情況下,伺服器和用戶端之間並無區別,系統可以視為是由一組互動的物件所組成,這些物件的所在位置則無關緊要。系統中的服務提供者和服務使用者之間也無任何區別
中介軟體 (Middleware) • 管理與支援分散式系統中不同元件的軟體,基本上,這個軟體位於系統的「中間」 • 中界軟體通常是購買現成的軟體,而非特別撰寫 • 範例 • 交易處理監視軟體 • 資料轉換程式 • 通訊控制器
多重處理器架構 • 最簡單的分散式系統模型 • 系統是由多重處理程序所組成,這些處理程序可以(但是不一定需要)在不同處理器上執行 • 許多大型即時系統所採用的架構模型 • 將處理分散到不同處理器的動作可以事先預定,或是透過「分派器」(despatcher)來控制
主從式架構 • 應用程式是由數部伺服器所提供的服務以及使用這些服務的用戶端所組成 • 用戶端知道有哪些伺服器;但是伺服器不知道有哪些用戶端 • 用戶端和伺服器都屬於邏輯上的處理程序 • 處理器和處理程序的對應關係不一定是 1 : 1
分層式的應用系統架構 • 展示層(Presentation layer) • 主要用來表示將資料展示給使用者知道以及和所有使用者的互動行為 • 應用處理層(Application processing layer) • 提供應用系統的特定功能,例如,銀行系統中的功能包括有開戶、關閉帳戶等功能 • 資料管理層(Data management layer) • 管理系統的資料庫
精簡和複雜用戶端 • 精簡型用戶端模型 (Thin-client model) • 在這種模型中,所有的應用程式處理層和資料管理層都放在伺服器上實行,用戶端則只負責執行展示的軟體。 • 複雜型用戶端模型 (Fat-client model) • 在這種模型中,伺服器只負責資料管理,用戶端上的軟體則實作應用程式的邏輯以及和系統使用者的互動。
精簡型用戶端模型 • 用在當有既有舊系統(legacy systems)要移轉成主從式架構時。 • 既有舊系統本身是一部伺服器,它的圖形化使用者介面則實作在各用戶端上 • 主要缺點是它的處理負荷同時落於伺服器和網路上
複雜型用戶端模型 • 將較多的處理委派給用戶端,因為應用處理是在區域的本機上執行 • 大部分適用於主從式系統,而且必須事先知道用戶端系統的處理能力 • 比精簡型用戶端模型簡單,尤其是在管理方面。但是新版的應用軟體必須安裝到所有的用戶端上
三層式架構 • 三層式架構中,每一個應用架構層可以在不同處理器上執行 • 它比精簡型用戶端有更好的執行效能,管理上則比複雜型用戶端更簡單 • 此架構的延展性更好,可以在需求增加時加入額外的伺服器
分散式物件架構 • 分散式物件架構和用戶端/伺服器(主從架構)之間沒有什麼區別 • 每一個可分散的實體都是一個物件,這些物件都可以提供服務給其他物件使用,或是使用其他物件的服務 • 物件之間的溝通則是透過稱為「物件訊息仲裁者」(軟體匯流排)的中介軟體系統來達成 • 不過,它的設計比主從式系統更複雜
分散式物件架構的優點 • 它可以讓系統設計者延後決定哪些物件要提供哪些服務 • 它是一個非常開放的系統架構,可以依照需求隨時加入新的資源 • 這樣的系統具有彈性及延展性 • 物件可以依照需要在網路上做轉移,所以系統可以動態地重新設定它的組態
分散式物件架構的運用 • 做為建構與組織系統的邏輯模型。這種情況專門以服務和服務的組合為主,考慮如何提供應用程式的功能,然後計畫如何利用一些分散式物件來提供這些服務 • 做為實作主從式系統的變通方法。在這種情況下,系統的邏輯模型為主從式模型,但是用戶端和伺服器則被實現成為透過軟體匯流排進行溝通的分散式物件
資料探勘系統 • 系統的邏輯模型不是一個服務提供者,它有不同的資料管理服務 • 它可以增加存取的資料庫數量,而不會影響 • 它可以利用增加新的整合物件來探勘新的關係類型
CORBA • CORBA 是一個「物件訊息仲裁者 」(Object Request Broker)的國際性標準,它是一個用來管理分散式物件之間的溝通 • CORBA有多種不同的實作 • DCOM 是 Microsoft 提出的替代物件訊息仲裁者的另一種方法 • CORBA 已由 Object Management Group 所定義
應用程式結構 • 應用程式物件 • 標準物件,由 OMG 針對特定領域所定義,例如保險業 • 基本的 CORBA 服務,例如目錄和安全的管理 • 水平功能 (亦即以應用系統的橫切面來看),例如使用者介面的功能
CORBA 標準 • 應用程式物件的物件模型 • CORBA 物件是一個狀態的封裝,它有一個定義完好、以 IDL (介面定義語言) 定義的語言中立介面 • 使用物件訊息仲裁者 來管理物件的服務 • 有一組通用的物件服務可讓許多分散式應用程式使用 • 在這些服務之上建立了一組通用的元件
CORBA 物件 • 原則上,CORBA 物件與 C++ 和 Java 的物件類似 • 它們有分開的介面定義,而且和 C++ 一樣是以通用的語言 (IDL) 來表示這些介面 • 這個 IDL 和程式設計語言之間 (C++, Java 等) 有對應的關係 • 因此,以不同語言撰寫的物件可以互相進行溝通
物件訊息仲裁者 (ORB) • ORB 用來處理物件之間的溝通,它會知道系統中的所有物件和它們之間的介面 • 使用 ORB 時,呼叫物件會與一個 IDL stub 做連結,而這個IDL stub 定義了被呼叫物件的介面 • 呼叫這個 stub 會造成呼叫 ORB,然後它會透過公佈的 IDL skeleton 來呼叫所需的物件,而IDL skeleton 會與服務的實作連結
ORB之間的溝通 • ORB 通常不是各自分開的程式,而是程式庫中的一組物件,開發完成時便與應用程式連結 • ORB 可以處理在同一部機器上執行的物件之間的通訊 • 系統中應該會有好幾個 ORB 可以使用,而分散式系統中的每一部電腦上都會有自己的ORB • ORB 之間的溝通用於分散式物件的呼叫
CORBA 服務 • 命名與交易服務 • 允許物件尋找和參考網路上的其他物件 • 通知服務 • 允許物件通知其他物件有某個事件發生 • 異動服務 • 支援不可分割的異動(atomic transactions)與故障的回復
重點整理 • 幾乎所有新的大型系統都是分散式系統 • 分散式系統可支援資源共享、並行執行、延展性、容錯以及透通等特性 • 主從式系統也是分散式系統,系統是由一群服務所組成,由伺服器向用戶端提供服務 • 在主從式系統中,使用者介面一直都是在用戶端上執行,資料管理則通常是由共用伺服器來提供
重點整理 • 在分散式物件架構中,沒有用戶端和伺服器的區別 • 分散式物件系統需要中介層軟體來處理物件的通訊,以及處理新增與移除物件的工作 • CORBA 標準是由一群中介層軟體的標準所組成,它們是用來定義支援分散式物件架構的標準