300 likes | 430 Views
作業系統. 第二十章 分散式系統實例. 第二十章 分散式系統實例. Java RMI RMI 架構 RMI 伺服端程式設計 RMI 客戶端程式設計 CORBA 網路檔案系統 摘要. Java RMI. Java 在 JDK1.1 之後提供了 RMI 的機制,將複雜的資料結構傳遞問題交由 RMI 機制處理。 與 RPC 的基本概念相同,透過網路執行遠端伺服器上的程式,並取回執行結果。 RMI 強調物件導向,可以將一個物件序列化,也就是將物件轉換成一連串的位元組而當成參數傳遞。
E N D
作業系統 第二十章 分散式系統實例
第二十章 分散式系統實例 • Java RMI • RMI架構 • RMI伺服端程式設計 • RMI客戶端程式設計 • CORBA • 網路檔案系統 • 摘要
Java RMI • Java 在 JDK1.1 之後提供了 RMI 的機制,將複雜的資料結構傳遞問題交由 RMI 機制處理。 • 與 RPC 的基本概念相同,透過網路執行遠端伺服器上的程式,並取回執行結果。 • RMI 強調物件導向,可以將一個物件序列化,也就是將物件轉換成一連串的位元組而當成參數傳遞。 • RMI 程式必須用 Java 撰寫,較缺乏彈性。
應用程式 伺服端 客戶端 stub skeleton RMI架構 遠端參考層 傳輸層 RMI 架構 • RMI 採用三層式架構。 • stub/skeleton 層 • 遠端參考層 • 傳輸層
客戶端 伺服端遠程物件 Check_out(object N,object M) { //相關程式碼 return val; } flag = Server.Check_out(A,B) stub 反整碼 整碼 skelketon 整碼 反整碼 布林回傳值 A、B參數、Check_out() 名稱及相關資訊 RMI 呼叫遠程物件流程圖 • 以客戶端呼叫遠端物件的 Check_out(object, object) 函式為例。
RMI 伺服端程式設計 • 步驟一:定義遠端物件的服務介面,透過這個介面,客戶端才能呼叫遠端物件的函式。 • 必須繼承自 java.rmi.Remote 介面。 • 必須定義遠端物件的方法,並且宣告會發出 RemoteException 的例外事件,用來截取可能發生的例外事件。 • 以 javac 指令將服務介面編譯成位元組碼。
RMI 伺服端程式設計 (續) • 步驟二:實作遠端介面,也就是撰寫遠端物件函式的程式碼。 • 必須宣告欲實作的介面。 • 必須繼承自 UnicastRemoteObject 類別。 • 必須宣告 RemoteException 例外事件。 • 將遠端物件編譯成位元組碼。 • 步驟三:以 rmic 指令產生 stub 和 skeleton 程式。 • 步驟四:將 RMI 註冊處啟動,並啟動遠端物件向其註冊。 • 步驟五:啟動伺服器程式。
RMI 客戶端程式設計 • 步驟一:呼叫 System.setSecurityManager() 作安全上的限制,避免客戶端的環境被惡意破壞。 • 步驟二:向 RMI 註冊處查尋物件並轉型成該物件所實作的介面名稱。 • 步驟三:呼叫遠端物件的函式。
第二十章 分散式系統實例 • Java RMI • CORBA • CORBA架構 • ORB簡介 • 物件服務 • 網路檔案系統 • 摘要
CORBA • CORBA 是 OMG(Object Management Group)組織所提出的物件導向分散式工作環境標準。 • 基於物件導向的觀念與使用,加強了軟體的可攜性、可重用性、以及可交互運作性。 • 許多廠商推出各種符合 CORBA 標準的產品,可以用來輕易地發展分散式程式。
CORBA 架構 • CORBA 的基本定義裡,介面用來定義物件的型態;伺服端為一個或多個介面的物件實作;客戶端可以透過 ORB 呼叫伺服端物件所提供的函式。CORBA 的架構中包含 • ORB 介面 • 介面定義語言 • 客戶端 IDL stubs • 靜態 IDL skeletons • 動態請求介面 • 介面保存庫 • 動態 skeleton 介面 • 實作保存庫 • 物件調適器
伺服端物件實作 客戶端 實作 保存庫 • ORB • 介面 物件 調適器 動態請求介面DII 靜態 IDL skeleton 動態 skeleton 請求, DSI • 靜態 • IDL • stub 介面 保存庫 ORB 核心(IIOP) CORBA 架構示意圖
ORB 簡介 • ORB 可以視為一種物件匯流排,讓客戶端的應用程式傳送要求給本地端或遠端的物件,並且接收執行後所傳回的結果。 • 客戶端不需要知道應用程式與這些物件之間的溝通協調方式。 • 讓物件可以在執行期間才尋找所要呼叫的物件,並且呼叫物件提供的服務。 • 具有能靜態與動態地呼叫遠端物件、高階程式語言互通性、動態查詢系統資訊、本地端/遠端的通透性 、內建安全機制交易與程式擴充性高等優點。
C C++ smalltalk Ada COBOL Java C C++ smalltalk Ada COBOL Java IDL IDL IDL IDL IDL IDL 客戶端 stubs 伺服端 skeletons CORBA IIOP ORB ORB 架構示意圖
物件服務 • OMG 於 1995 年提出 COSS 規格,定義了以下的物件服務支援物件的使用與實作。 • 名稱服務 • 並行控制服務 • 事件服務 • 永久性物件服務 • 生命週期服務 • 外部服務 • 交易服務
名稱服務 • 名稱服務提供了將名稱連結到一個物件的能力,提供一個標準化介面,讓客戶端可以依照物件名稱而找到該物件的位置。 • 目的都是提供客戶端方便快速地連接一個伺服端物件程式。 • ORB 仰賴名稱服務機制將名稱對應到物件,並以這個物件找到其物件實作所在的位置。 • 可以提供非物件導向設計的客戶端透過 ORB 要求一個物件實作。
4. 利用物件參考找到物件實作 名稱伺服器 3. 回應物件位置 < name1 , obj_ref1> < name2 , obj_ref2> 物件實作 客戶端 < name3 , obj_ref3> … 2. resolve(name) 1. bind(name , obj_reference) 名稱服務機制的流程
第二十章 分散式系統實例 • Java RMI • CORBA • 網路檔案系統 • 網路檔案系統簡介 • 網路檔案系統實作 • 網路檔案系統協定 • 摘要
網路檔案系統簡介 • 網路檔案系統是一個分散式檔案系統。 • 可以讓執行在 LAN 或 WAN 環境下的電腦共享一個檔案系統。 • 網路檔案系統伺服器可以分享一個或多個目錄給客戶端存取,被分享的目錄會記錄在 /ext/exports 的檔案中。 • 客戶端使用網路檔案系統伺服器提供的目錄及檔案前,必須先掛載這些目錄,之後這些目錄將變成客戶端目錄結構的一部分。 • 可以節省下許多的硬體花費。
網路檔案系統簡介 (續) • 網路檔案系統 • 具備存取通透性、地點通透性、錯誤通透性、效能通透性與遷移通透性等優點。 • 但是有不具備複製通透性、不具備同步通透性、擴充性不佳等缺點。
伺服器 B 客戶端 伺服器 A /root /root /root /nfs1 /usr /nfs2 掛載 掛載 file1.txt /dir1 file2.txt /dir2 /Bill /Jack 掛載伺服器的目錄
網路檔案系統實作 • 網路檔案系統採用多層級的架構來實作。 • 客戶端或伺服端的模組會載入到 UNIX 核心中執行。 • 客戶端是以使用者層級的行程來使用伺服器檔案。 • UNIX 檔案系統介面主要負責檔案的實際開啟、讀取、寫入、和關閉的動作。 • 虛擬檔案系統架於檔案系統之上,作用是將本地端檔案的處理與遠端檔案的處理分開,並且能以下層不同的檔案系統進行本地端檔案處理的操作。
網路檔案系統實作 (續) • 網路檔案系統包含了以下幾個機制。 • 網路檔案系統模組整合到系統核心 • 存取控制及認證機制 • 路徑名稱轉譯 • 伺服端快取 • 客戶端快取
客戶端 伺服端 使用者行程 系統呼叫 UNIX核心 UNIX核心 虛擬檔案系統(VFS) 虛擬檔案系統(VFS) 本地端 遠端 網路 NFS 協定 NFS 客戶端 UNIX 檔案系統 UNIX 檔案系統 NFS 伺服端 磁碟 磁碟 網路檔案系統軟體架構
網路檔案系統協定 • 網路檔案系統的客戶端和伺服端模組溝通的機制都是使用遠端程序呼叫。 • 在客戶端已經掛載遠端目錄後才能使用。 • 提供對目錄作建立、刪除等操作,開啟、讀取和寫入檔案與存取檔案屬性等功能。 • 使用 XDR 的編碼架構,而可以在不同平台間傳送 RPC 的訊息。 • 採用 UDP 作為傳輸層的協定,並封裝在 IP 的封包內,客戶端與伺服端不需要一直維持連線狀態。 • 使用 TCP 能夠保證傳輸訊息的正確性,但是客戶端與伺服端會一直保持在連線的狀態。
NFS XDR RPC UDP/TCP IP 網路檔案系統協定架構
第二十章 分散式系統實例 • Java RMI • CORBA • 網路檔案系統 • 摘要
摘要 • Java RMI 可以透過網路去執行遠端伺服器上的程式,並取回執行結果。 • 與 RPC 的基本觀念是一樣,但是更強調物件導向的特性。 • 可以將一個物件序列化而當成參數傳遞。 • 程式必須使用 Java 撰寫,比較缺乏彈性。 • CORBA 是功能更強大、更複雜的 RPC 機制。 • 可以在執行期間才尋找要呼叫的物件,並且使用物件所提供的服務。 • 名稱服務扮演一個相當重要的角色, 可以利用名稱對應到物件位置而找到物件實作。
摘要 (續) • 網路檔案系統可以讓執行在 LAN 或 WAN 環境下的電腦共享檔案系統。 • 網路檔案系統伺服器可以分享一個或多個目錄給客戶端。 • 客戶端利用掛載的方式使用遠端的檔案系統。 • 包含在核心執行、使用快取機制、採用不具狀態服務、和擁有認證機制等特性。 • 有不具備檔案複製通透性、無法處理同步問題、和擴充性不佳等缺點。