天天看點

《分布式系統:概念與設計》一1.4 關注資源共享

使用者已經習慣了資源共享帶來的好處,以緻很容易忽視它們的重要性。大家通常共享硬體資源(如列印機)、資料資源(如檔案)和具有特定功能的資源(如搜尋引擎)。14

從硬體資源的觀點看,大家共享裝置(如列印機和磁盤)可以減少花費,但對使用者具有更大意義的是共享與使用者應用、日常工作和社會活動有關的更高層的資源。例如,使用者關心以共享資料庫或web頁面集方式出現的共享資料,而不是實作上述服務的硬碟和處理器。類似地,使用者關心諸如搜尋引擎或貨币換算器之類的共享資源,而不關心提供這些服務的伺服器。

實際上,資源共享的模式随其工作範圍和與使用者工作的密切程度的不同而不同。一種極端是,web上的搜尋引擎給全世界的使用者提供工具,而使用者之間并不需要直接接觸;另一種極端是,在計算機支援協同工作(computer supported cooperative working,cscw)中,若幹直接進行合作的使用者在一個小型封閉的小組中共享諸如文檔之類的資源。使用者在地理上的分布以及使用者之間進行共享的模式決定了系統必須提供協調使用者動作的機制。

我們使用術語服務表示計算機系統中管理相關資源并提供功能給使用者和應用的一個單獨的部分。例如,我們通過檔案服務通路共享檔案;通過列印服務發送檔案到列印機;通過電子支付服務購買商品。僅僅通過服務提供的操作可以實作對服務的通路。例如,一個檔案服務提供了對檔案的read、write和delete操作。

服務将資源通路限制為一組定義良好的操作,這在某種程度上屬于标準的軟體工程實踐,同時它也反映出分布式系統的實體組織。分布式系統的資源是實體地封裝在計算機内的,其他計算機隻能通過通信才能通路。為了實作有效的共享,每個資源必須由一個程式管理,這個程式提供通信接口使得對資源進行可靠和一緻的通路和更新。

大多數讀者很熟悉術語伺服器,它指的是在連網的計算機上的一個運作程式(一個程序),這個程式接收來自其他計算機上正在運作的程式的請求,執行一個服務并适當地做出響應。送出請求的程序稱為客戶,整個方案稱為客戶-伺服器計算。在這個方案中,請求以消息的形式從客戶發送到伺服器,應答以消息的形式從伺服器發送到客戶。當客戶發送一個要執行的操作請求時,就稱客戶調用那個伺服器上的操作。客戶和伺服器之間的完整互動,即從客戶發送一個請求到它接收到伺服器的應答,稱為一個遠端調用。

同一個程序可能既是客戶又是伺服器,因為伺服器有時調用其他伺服器上的操作。術語“客戶”和“伺服器”僅僅是針對在一個請求中扮演的角色而言。客戶是主動的(發起請求),伺服器是被動的(僅在它們收到請求時喚醒);伺服器是連續運作的,而客戶所持續的時間隻是客戶所屬的那部分應用程式持續的時間。

注意,預設情況下,術語“客戶”和“伺服器”指的是程序而不是運作客戶或伺服器的計算機,15雖然在日常用法中這些術語也指計算機。另一個不同(我們将在第5章讨論)是在用面向對象語言實作的分布式系統中,資源被封裝成對象,并由客戶對象通路,這時,稱一個客戶對象調用了一個伺服器對象上的方法。

許多(但不是所有的)分布式系統可以完全用客戶和伺服器互動的形式來構造,網際網路、電子郵件和連網的列印機都符合這種模式。第2章将讨論除客戶-伺服器系統之外的其他系統類型。

一個正在執行的web浏覽器是一個客戶的例子。web浏覽器與web伺服器通信,從伺服器上請求web頁面。我們在1.6節詳細讨論web和其相關的客戶-伺服器體系結構。

繼續閱讀