概述
基本概念
命名服務將名稱
映射為對象引用。這種“名稱-引用”的關係稱為名稱綁定。同一個對象引用可以使用不同的名稱多次被
存儲,但每一個名稱只能準確的確定一個引用。一個命名上下文(naming context)就是一個存儲名稱綁定的對象。也就是說,每一個上下文對象實現一個從名稱到對象引用的映射表,這個表中的名稱可以表示某個應用程式的對象引用,也可以表示命名服務中的另一個上下文對象。這就意味著,如同
檔案系統,上下文就好像是一個有層次的
表單:命名上下文相當於一個目錄,用來存儲指向其它目錄和檔案的名稱,一個上下文和名稱綁定的層次結構稱為命名圖。
名稱與屬性
名稱:由位和字元組成的字元串,用來指向一個實體。
三種類型的名稱:地址,標識符,用戶友好的名稱。
地址:與
實體相關的訪問點的名稱。
標識符:用來唯一標識實體的名稱。
用戶友好的名稱:由
字元串表示,由人來使用。
屬性:基本值(如整數)或者自身的名稱。
聯編:名稱和對象之間的聯結。
名稱的映射:實現由名稱到實體的對應。
命名機制
作用
命名機制的作用:實現對
資源的共享,重定向等等;從
分散式OS和套用的角度,對資源進行訪問。
現有的一些計算機系統,對不同類型的對象使用獨立的命名原則,如檔案名稱與其它對象名之間差別較大,分散式系統應使用統一的命名原則可以識別各個可用的對象。
目標
命名機制的目標 :
1.命名機制應可以識別全局範圍的對象;
2.應至少支持兩類不同的
標識符;方便用戶使用的用戶級;便於機器存儲表示的
系統級;以上兩級的機制應各自獨立,且可以高效地進行轉換。
3.在整個系統範圍內的唯一標識符;
4.在傳送具體的訊息前,初始化和轉換標識符時交換訊息的數量小;
5.命名機制應可以對對象進行重定位;負載平衡要求對象應該是可移動的;
6.名字和地址之間的變換不一定是一一對應的,還可以是一對多;
7.命名機制應支持對同一對象多的使用;
8.命名機制應允許用戶對同一對象定義多個局部的標識符;
9.命名機制應允許多個不同的對象共用同一個標識符(進程組);
10.分散式系統中使用的獨立命名機制的數目必須是最小的。
命名方式
命名方式分為一般的命名方式和分散式系統中的命名方式。
一般的命名方式
在
計算機系統中,每個對象一般有兩個名字,一個是由用戶識別的文本名(符號名),另一個是由系統使用的內部名。內部名可以是該對象的實際位置,也可以是查詢該對象之地址的一種表示形式。通過某種映射,系統可以把用戶定義的符號名轉換成相應的內部名。
分散式系統中的命名方式
1.分散式系統的透明性
系統的透明性(transparency)是指系統的內部細節對用戶是隱藏的。一個真正透明的
分散式系統的用戶把該系統看成是一個統一的整體。例如,它可以任意移動系統中的某個檔案而不必改變檔案的名字。
分散式系統的透明性主要包含以下方面:
名字透明性:一個對象的名字不依賴於
系統中的站點,每個對象有一個全局惟一的名字,不同站點使用同一個名字訪問同一個對象。
位置透明性:
對象的名字是獨立於該對象位置的,這樣,與一個名字相關的對象可從一站點遷移到另一站點而不必改變其名字。
程式執行的
透明性:在回響一個用戶提出的“執行某個程式”的請求時,
作業系統可在系統內任何可用的處理機上調度所指程式的執行,並對用戶保持這種透明性。
存取透明性:存取一個對象與與該對象的位置無關。存取
透明性不僅保證一個進程可從一處理機遷移到另一
處理機上運行,而且還可以實現將一個任務分配後,使其各子任務在不同的處理機上並發執行。
並發存取透明性:一個對象的用戶通常不知道還有其他用戶也在並發存取該資源,即用戶得到了這種假象——他是在互斥存取該對象。
進程誘明性:每一進程就像在一台機器上運行時那樣去識別所有其他進程。這就要求有一個大的惟一的進程名空間,使系統能可靠地對運行在任意站點上的進程傳送信息並獲取進程狀態。對用戶而言,編寫程式就像為一台機器編寫程式一樣,而寫好的程式則能在多台機器上運行。
複製透明性:某個對象的用戶不知道該對象是否是複製的,即系統對用戶提供了對象的單一副本。
故障透明性: 系統可對用戶隱藏“系統的某些成分已經故障”這一事實。當然,用戶可通過系統性能的衰減而察覺到這一點。
全局透明性:系統的邊界對用戶完全透明,用戶像使用
單機一樣使用分散式系統。
檔案系統透明性:檔案可存放在系統中的任何站點、檔案有多少副本、最新版本是多少、如何更新均由系統解決,多副本間的一致性由系統自動協調。用戶則可用存取本地資源同樣的方式存取遠程檔案。
性能透明性(又稱網際透明性):這是一個綜合要求,簡單地說是指使訪問遠程資源與訪問本地資源所需的開銷之差小到可忽略的程度。或者說,用戶不應感到由於遠程存取而帶來過多的性能衰減。
命名方案與透明性問題極為相關,系統的透明性含了下面的事實:
資源的位置不應嵌入其名字中;名字應該是全局惟一的,相同的名字應該有相同的效果,不管在哪個站點上使用,它們都應該有相同的含義。
2.分散式系統的命名方案
設計命名方案的一個基本觀點是:名字是依賴於位置還是獨立於位置。
分散式系統中常用的命名方案有絕對命名、相對命名和層次式命名三種。
由絕對命名方案命名的名字是全
系統範圍惟一的、無二義性的。在機內,這類名字通常是由時鐘或計數器之值產生的位串。
由相對命名方案命名的名字依賴於使用它的上下文。對於不同的使用者,一個對象的名字可以是不同的,或者說,一個對象的名字不惟一。
層次式命名方案用如下方式組織系統中的對象名:對象被分劃成若干組;每組給定全局惟一的組名;每組中的每個對象在組內給定惟一的名字;一個組中對象名還可按此方式進一步分劃成若干子組。
分散式系統中的命名服務系統
1.命名服務系統的功能
命名服務系統管理著一個聯編
資料庫,其中
存儲著文本名(可讀的)及其相關的屬性。命名服務系統支持的主要操作是解析一個名字——在該資料庫中查找給定名字的相關屬性。
命名服務系統有以下功能:通過管理名字在系統的地址去定位命名過的對象;創建、刪除、改變對象的名字;改變對象的位置,以支持對象在系統中的遷移;利用對象名字來支持對象的共享;創建一個對象組;從組中刪除成員或將成員加入其中;
枚舉組中的成員;
測試組中成員之間的關係;藉助組名
共享資源或共享服務程式;
支持對象組的遞歸結構;完成外部名(符號名)到內部名(系統名)的映射工作。
2.命名服務系統的設計方式
設計名字伺服器一般有中央方式、複製方式和分劃方式三種途徑。
中央方式:全系統僅有一個(中央)名字伺服器,系統中的所有服務程式都由它來定址和定位。
複製方式:每個站點都有一個名字伺服器的
副本,用以管理該站點上的所有服務程式及本站點與其他站點間相互請求的服務信息。
分劃方式:若系統由若干子系統(子網)組成,則對於每個子系統,用一個名字
伺服器管理本子系統上的所有服務程式及本子系統與其他子系統相互請求的
服務信息;若系統的
命名空間可根據某種方式來分劃,則對於每個經這樣分劃後的實體,用單獨的或複製式的名字伺服器管理;將命名空間組織成層次結構來管理。