分布式系统的特征
《分布式系統概念與設計》讀書筆記(第一章)
第一章:分布式系統的特征
[1] [0] 簡介
分布式系統是其組件分布在聯網的計算機上,組件之間通過傳遞消息進行通信和動作協調的系統。該定義引出了分布式系統的下列重要特征:組建的并發性、缺乏全局時鐘、組件故障的獨立性。
我們看一下現代分布式系統的幾個例子:Web搜索、多人在線游戲和金融交易系統,也考察今天推動分布式系統發展的關鍵趨勢:現代網絡的泛在特性,移動和無處不在的計算的出現,分布式多媒體系統不斷增加的重要性,以及把分布式系統看作一種實用系統的趨勢。接著本章強調資源共享是構造媒體系統的主要動機。資源可以被服務器管理,由客戶訪問,或者它們被封裝成對象,由其他客戶對象訪問。
構造分布式系統的挑戰是處理器組件的異構性、開放性(允許增加或替換組件)、安全性、可伸展性(用戶的負載或數量增加時能正常運行的能力)、故障處理、組建的并發性、透明性和提供服務質量的問題。最后以Web作為一個大規模分布式系統的例子進行討論,并介紹它的主要特征。
[1] [1] 簡介
我們把分布式系統定義成一個其硬件或軟件組件分布在聯網的計算機上,組件之間通過傳遞消息進行通信和動作協調的系統。
我們定義的分布式系統具有如下的具體特征:
- 并發:在一個計算機網絡中,執行并發程序是常見的行為。用戶可以在各自的計算機上工作,在必要時共享諸如Web頁面或文件之類的資源。系統處理共享資源的能力會隨著網絡資源(例如,計算機)的增加而提高。
- 缺乏全局時鐘:在程序需要協作時,它們通過交換消息來協調它們的動作。密切的協作通常取決于對程序動作發生的時間的共識。但是,事實證明,網絡上的計算機與時鐘同步所達到的準確性是有限的,即沒有一個正確時間的全局概念。原因也很簡單,因為基于網絡的通信天然存在時延,而這個時延可能會由于網絡狀態等條件而不斷發生變化,這么一來,就會導致各項動作沒辦法按照原定的時間來工作,反而會出現一些不好的影響。
- 故障獨立性:所有的計算機系統都可能會出現故障,一般由系統設計者負責為可能的故障設計結果。分布式系統可能會以新的方式出現故障。網絡故障導致網上互聯的計算機的隔離,但這并不意味著它們停止運行,事實上,計算機上的程序不能檢測到網絡是出現故障還是網絡運行得比通常慢。類似的,計算機的故障或系統中程序得異常終止(崩潰),并不能讓與它通信的其他組件了解。系統的每個組件會單獨地出現故障,而其他組件還在運行。
構造和使用分布式系統的主要動力來源于對共享資源的期望。
“資源”一次是抽象的,但它很好地描述了能在連網計算機系統中共享的事務的范圍。它涉及的范圍從硬件組件(如硬盤、打印機)到軟件定義的實體(如文件、數據庫和所有的數據對象)。它包括來自數字攝像機的視頻流和移動電話呼叫所表示的音頻連接。
[1] [2] 分布式系統的例子
| 金融和商業 | 電子商務(亞馬遜、淘寶)、底層支付技術(PayPal)、在線銀行、用于金融市場的復雜信息分發系統 等 |
| 信息社會 | Web搜索引擎(Google)、YouTube、Facebook等 |
| 創意產業和娛樂 | YouTube等 |
| 醫療保健 | 遠程醫療 等 |
| 教育 | 網課系統等 |
| 交通和物流 | GPS、Google Earth等 |
| 科學 | 網格,作為eScience的基礎技術,以使用復雜計算機網絡對(經常是超大數量的)科學數據的存儲、分析和處理提供技術等 |
| 環境管理 | 使用(網絡化)傳感器技術等 |
[1] [2] [1] Web搜索
Web搜索引擎的任務是為萬維網的所有內容建立索引,其中包含各種信息類型,例如Web頁面、多媒體資源和掃描后的書。考慮到大多數搜索引擎是分析整個Web內容,并在這個巨大的數據庫上完成復雜的處理,那么這個任務自身就是對分布式系統涉及的一個巨大挑戰。
Google,Web搜索技術上的市場領導者,在支持用于搜索(與其他Google應用和服務,如Google Earth)的復雜的分布式系統基礎設施上做出了巨大努力。該設施最突出的兩點包括:
- 一個底層物理設施:它由超大數目的位于全世界多個數據中心的連網計算機組成。
- 一個分布式文件系統:支持超大文件,并根據搜索和其他Google應用的使用方式(特別是在文件中以快速而持久的速度讀取)進行了深度優化
- 一個相關的結構化分布式存儲系統:它提供了對超大數據集的快速訪問
- 一個鎖服務:它提供了諸如分布式加鎖和協定等分布式系統功能。
- 一個編程模式:它支持對底層物理基礎設施上的超大并行和分布式計算的管理。
[1] [2] [2] 大型多人在線游戲
大型多人在線游戲(Massively Multiplayer Online Game,MMOG)提供了一種身臨其境的體驗,超大數目用戶通過互聯網在一一個持久的虛擬世界中交互。這類游戲的主要例子是Sony的EverQuest Ⅱ和芬蘭公司CCP Games公司的EVE Online。
MMOG工程體現了分布式系統技術面臨的巨大挑戰,尤其是它對快速響應時間的需求。其他挑戰包括事件實時傳播給多個玩家和維護對共享世界的一個一致的視圖。
針對大型多人在線游戲,提出了許多解決方案:
- 可能優點出乎意料,最大的在線游戲EVE Online,采用了CS體系結構,在一個集中式服務器上維護了游戲世界狀態的單個拷貝,供運行在玩家終端或其他設備上的客戶程序訪問。為了支持大量客戶,服務器自身是一個復雜的實體,擁有上百個計算機節點組成的集群結構。從虛擬世界的管理看,集中式體系結構有極大的益處,單個拷貝也簡化了一致性問題。接著,目標是用過優化網絡協議和快速響應到達事件來確保快速的響應。為了支持這點,對負載進行分區,把單個“星系”分配給集群中指定的計算機,這樣,高負載星系會擁有自己的專用計算機,而其他星系則共享一臺計算機。通過跟蹤王家在i星系之間的移動,到達事件會被導向集群中正確的計算機上。
- 其他MMOG采用更多的分布式體系結構,宇宙被劃分到大量(可能是超多)服務器上,這些服務器可能地理上分散部署。接著,用戶基于當前的使用模式和到服務器的網絡延遲(基于地理最近)被動態地分配到一個特定的服務器。這種體系結構風格被EverQuest采用,它通過增加新的服務器,可自然地擴展。
- 大多數商業系統采用上述兩個模型中的一個,但研究者現在也在尋找更極端的體系結構,即不基于客戶-服務器原理而是基于對等技術采用完全分散的方法。采用對等技術,意味著每個參與者貢獻(存儲和處理)資源來容納游戲。
[1] [2] [3] 金融交易
金融行業以其需求一直處在分布式系統技術的最前沿,特別是在實時訪問大范圍的信息源方面(例如,當前股票價格和趨勢,經濟和政治發展)。金融行業采用自動監控和交易應用。
此類系統的重點是對感興趣數據項的通信和處理。感興趣數據項在分布式系統中稱為事件,在金融行業中的需求是可靠和及時地傳遞事件給可能是大量對此信息有興趣地客戶。這要求底層地體系結構具有與前述風格(例如CS)完全不同的風格,這樣的系統通常采用分布式基于事件的系統。
下圖說明了一個典型的金融交易的例子。它顯示了一系列事件進入一個指定的金融機構。這樣的事件輸入具有下列特征。
首先,事件源通常具有多種格式,例如路透社的市場數據事件和FIX事件(符合金融信息交換協議特定格式的事件),事件源還來自不同的事件技術,這說明了在大多數分布式系統中回到異構性問題。圖中使用了適配器,它把異構性格式轉換成一個公共的內部格式。
其次交易系統必須處理各種各樣的事件流,這些事件流高速到達,經常需要實時處理來檢測表示交易機會的模式。這在過去曾今是手工處理的,但在競爭壓力下變成自動處理,這就是所謂的復雜事件處理(Complex Event Processing,CEP),它提供了一種方法來將一起發生的事件組成邏輯的、時序的或空間的模式。
[1] [3] 分布式系統的趨勢
分布式系統正在經歷巨大的變化,這可追溯到一系列有影響力的趨勢:
- 出現了泛在聯網技術
- 出現了無處不在計算,它伴隨著分布式系統中支持用戶移動性的意愿
- 對多媒體設備的需求
- 把分布式系統作為一個設施
[1] [3] [1] 泛在聯網和現代互聯網
互聯網上的計算機程序通過傳遞消息進行交互,采用了一種公共的通信手段。互聯網通信機制(互聯網協議)的設計和構造是一項重大的技術成果,它使得一個在某處運行的程序能給另一個地方的程序發送消息。
互聯網是一個超大的分布式系統。互聯網和其支持得服務的實現,使得必須開發實用解決方案來解決分布式系統中的許多問題。
[1] [3] [2] 移動和無處不在計算
設備小型化和無線網絡方面的技術進步已經逐漸使得小型和便攜式計算設備集成到分布式系統中。這些設備包括:
- 筆記本電腦
- 手持設備(包括移動電話、智能電話、GPS設備、攝像機等)
- 可穿戴設備
- 嵌入式家電
這些設備大多具有可便攜性,再加上它們可以在不同的地方方便地連接到網絡的能力,使得移動計算成為可能。移動計算是指用戶在移動或訪問某個非常規環境時執行計算任務的性能。
無處不在計算是指對用戶的的物理環境(包括家庭、辦公室和其他自然環境)中存在的多個小型、便宜的計算設備的利用。
移動和無處不在計算是一個熱門的研究領域。
[1] [3] [3] 分布式多媒體系統
另一個重要趨勢是在分布式系統中支持多媒體服務的需求。多媒體支持可以定義為以集成的方式支持多種媒體類型的能力。人們可以期望分布式多媒體系統支持離散型媒體(如圖片或正文消息)的存儲、傳輸和展示。分布式多媒體系統應該能對連續類型媒體(如音頻和視頻)完成相同的功能,即它應該能存儲和定位音頻或視頻文件,并通過網絡傳輸它們(可能需要以實時的方式,因為流來自攝像機),從而能給用戶展示多種媒體類型,以及在一組用戶中共享多種類型的媒體。
連續媒體的重要特點時它們包括一個時間維度,媒體類型的完整性從根本上依賴于在媒體類型的元素之間保持實時關系。
分布式多媒體計算的好處時相當大的,因為能在桌面環境提供大量的新(多媒體)服務和應用,包括訪問實況或預先錄下的電視廣播、訪問提供視屏點播服務的電影資料庫、訪問音樂資料庫、提供音頻和視頻會議設施、提供集成的電話功能。
網絡播放(webcasting) 是分布式多媒體技術的應用。網絡播放是在互聯網上廣播連續媒體(典型是音頻和視頻)的能力,現在常見以這種方式廣播主要的體育或音樂事件。
分布式多媒體應用(例如網絡播放)對底層的分布式基礎設施提出了大量的要求,包括:
- 提供對一系列(可擴展的)編碼和加密格式的支持,例如MPEG系列標準(包括如流行的MP3標準,也稱MPEG-1音頻第三層)和HDTV
- 提供一系列機制來保障所需的服務質量能夠得到滿足
- 提供相關的資源管理策略,包括合適的調度策略,來支持所需的服務質量
- 提供適配策略類處理在開放系統中不可避免的場景,即服務質量不能得到滿足或維持
[1] [3] [4] 把分布式計算作為一個公共設施
隨著分布式下基礎設施的不斷成熟,不少公司在推廣這樣的觀點:把分布式資源看作一個商品或公共設施,把分布式資源和其他公共設施進行類比。采用這種模型,資源通過合適的服務提供者提供,能被最終用戶有效地租賃而不是擁有。這種模型可以應用到物理資源和更多的邏輯服務上。
- 聯網的計算機可用諸如存儲和處理這樣的物理資源,從而無需自己擁有這樣的資源。從一個維度來看,用戶可以為其文件存儲需求和文件備份需求選擇一個遠程存儲設施。類似的,利用這個方法,用戶能租到一個或多個計算結點,從而滿足他們的基本計算需求或者完成分布式計算。從另一個維度來看,用戶現在能用像Amazon和Google之類的公司提供的服務訪問復雜的數據中心或計算基礎設施。操作系統虛擬化時該方法關鍵的使能技術,它意味著實際上可以通過一個虛擬的而不是物理的結點為用戶提供服務。這從資源管理角度給服務提供者提供了更大的靈活性。
- 用這種方法,軟件服務也能跨全球互聯網使用。
關于計算作為公共設施,術語云計算(cloud computi)被用來刻畫其前景。云被定義成一組基于互聯網的應用,并且足以滿足大多數用戶需求的存儲和計算服務的集合,這使得用戶能大部分或全部免于本地數據存儲和應用軟件的使用。該術語也推廣“把每個事物看成一個服務”的觀點。
通常,云實現在集群計算機上,從而提供每個服務所要求的必須的伸縮性和性能。**集群計算機(cluster computer)**是互聯的計算機集合,它們密切協作提供單一的、集成的高性能計算能力。
關于集群與分布式的區別可見:單機、集群和分布式的區別
集群服務器的總目的時提供一系列的云服務,包括高性能計算能力、大容量存儲能力(例如通過數據中心)、豐富的應用服務(如Web搜索——Google依賴大容量集群計算機體系結構來實現其搜索引擎和其他服務)
網格計算也能被看作時一種云計算。但網格計算通常被看作時云計算這種更通用模式的先驅,它只是偏重于支持科學計算。
[1] [4] 關注資源共享
從硬件資源來看,大家共享設備可以減少花費,但對用戶具用更大意義的是共享與用戶應用、日常工作和社會活動有關的更高層的資源。例如用戶慣性以共享數據庫或Web頁面集方式出現的共享數據,而不是實現上述服務的硬盤和處理器。類似的,用戶關心諸如搜索引擎或貨幣換算器之類的共享資源,而不關心提供這些服務的服務器。
實際上,資源共享的模式隨著其工作范圍和與用戶工作的密切程度的不同而不同。一種極端是,Web上的搜索引擎是給全世界的用戶提供工具,而用戶之間并不需要直接接觸;另一種極端是,在計算機支持協調工作(Computer Supported Working。CSCW) 中,若干直接進行合作的用戶在一個小型封閉的小組中共享諸如文檔之類的資源。用戶在地理上的分布以及用戶之間進行共享的模式決定了系統必須提供協調用戶動作的機制。
我們使用屬于服務表示計算機系統中管理相關資源并提供功能給用戶和應用的一個單獨的部分。
服務將資源訪問限制為一組定義良好的操作,這在某種程度上屬于標準的軟件工程實踐。同時它也反映出分布式系統的物理組織。分布式相同的資源是物理地封裝在計算機內,其他計算機只能通過通信訪問。為了實現有效的共享,每個資源必須由一個程序管理,這個程序提供通信接口使得對資源進行可靠和一致的訪問和更新。
[1] [5] 挑戰
隨著分布式系統的應用范圍和規模擴大,可能會遇到相同的和其他的挑戰。
[1] [5] [1] 異構性
互聯網使得用戶能在大量異構計算機和網絡上訪問服務和運行應用程序。 下面這些均存在異構性(即存在多樣性和差別):
- 網絡
- 計算機硬件
- 操作系統
- 編程語言
- 由不同開發者完成的軟件實現
中間件:指一個軟件層,它提供了一個編程抽象,同時屏蔽了底層網絡、硬件、操作系統和編程語言的異構性。有些中間件。如Java遠程方法調用(Remote Method Invocation,RMI),僅支持一種編程語言。大多數中間件在互聯網協議上實現,由這些協議屏蔽了底層網路的差異,但所有的中間件要解決操作系統和硬件的不同。
處理解決異構性問題之外,中間件為服務器和分布式應用的程序員提供了一致的計算模型。這些模型包括遠程方法調用、遠程時間通知、遠程SQL訪問和分布式事務處理。
異構性和移動代碼中移動代碼是指能從一臺計算機發送到另一臺計算機發送到另一臺計算機,并在目的計算機上執行的代碼,Java applet是一個例子。適合在一種計算機上運行的代碼未必適合在另一種計算機上運行,因為可執行程序通常依賴于計算機的指令集和操作系統。
虛擬機方法提供了一種使代碼可在任何計算機上運行的方法:某種語言的編譯器生成一臺虛擬機的代碼而不是某種硬件代碼,例如,Java編譯器生成Java虛擬機的代碼,虛擬機通過解釋的方法來執行它。為了使Java程序嫩個運行,要在每種計算機上實現一次Java虛擬機。
今天,最常使用的移動代碼是將一些Web頁面的JavaScript程序裝載到客戶端瀏覽器中。
[1] [5] [2] 開放性
計算機系統的開放性是決定系統能否以不同的方式被擴展和重新實現的特征。分布式系統的開放性主要取決于新的資源共享服務能被增加和供多種客戶程序使用的程度。
除非軟件開發者能獲得系統組件的關鍵軟件接口的規范和文檔,否則無法實現開放性。一句話發布關鍵接口。這個過程類似接口的標準化,但它進程避開官方的標準化過程,官方的標準化過程非常繁瑣且進度緩慢。
然而發布接口僅是分布式系統增加和擴展服務的起點。設計者所面臨的挑戰是解決由不同人構造的由許多組件組成的分布式系統的復雜性。
互聯網協議的設計者引入了一系列稱為“征求意見文檔”(Requests For Comments,RFC)的文檔,每個文檔有一個編號。
按這種方式支持資源共享的系統之所以被稱為開放的分布式系統,主要是強調它們是可擴展的。它們通過在網絡中增加計算機實現在硬件層次上的擴展,通過引入新的服務、重新實現舊的服務實現在軟件層次上的擴展,最終使得應用程序能夠共享資源。開放系統常被提到的好處是它們與銷售商無關。
開放的分布式系統的特征總結如下:
- 發布系統的關鍵接口是開放系統的特征
- 開放的分布式系統是基于一致的通信機制和發布接口訪問共享資源的。
- 開放的分布式系統能用不同銷售商提供的異構硬件和軟件構造,但如果想讓系統正確工作,就要仔細測試和驗證每個組件與發布的標準之間的一致性。
[1] [5] [3] 安全性
分布式系統中維護和使用的眾多信息資源對用戶具有很高的內在價值,因此它們的安全相當重要。信息資源的安全性包括三個部分:機密性(防止泄露給未授權的個人)、完整性(防止被改變或被破壞)、可用性(防止對訪問資源的手段的干擾)。
安全性不止涉及對消息的內容保密,還涉及確切知道用戶或代表用戶發送消息的其他代理的身份。利用機密技術可滿足這兩個挑戰。
然而,下面兩個安全方面所面臨的挑戰目前還沒有完美解決:
- 拒絕服務攻擊:另一個安全問題是處于某些用戶可能希望中斷服務。可用下面的方法實現這個目的:用大量無意義的請求攻擊服務器,使得重要的用戶不能使用它。這稱為拒絕服務攻擊。現在通過在世間發生后抓獲和懲罰犯罪者來解決這種攻擊,但這不是解決這種問題的通用方法。
- 移動代碼的安全性:移動代碼需要小心處理。因為有些程序表面上可能一副有意思的畫,但實際上卻在訪問本地資源,或者可能是拒絕服務攻擊的一部分。
[1] [5] [4] 可伸縮性
分布式系統可在不同的規模(從小型企業內部網到互聯網)下有效且高效地運轉。如果資源數量和用戶數量激增,系統仍能保持其有效性,那么該系統就被稱為可伸縮性。
可伸縮性分布式系統的設計面臨下列挑戰:
- 控制物理資源的開銷
- 控制性能損耗
- 防止軟件資源用盡:例如IP地址
- 避免性能瓶頸:通常,算法應該是分散型,以避免性能瓶頸。例如域名系統的前身,那時名字表被保存在一個主文件中,可被任何需要它的計算機下載。當互聯網中只有幾百個計算機時,這是可以的,但這不久就變成了一個嚴重的性能和管理瓶頸。現在,域名系統將名字表分區,分散到互聯網中的服務器上,并采用本地管理的方式,從而解決了這個瓶頸。
[1] [5] [5] 故障處理
計算機系統有時會出現故障。當硬件或軟件發生故障時,程序可能會產生不正確的結果或者在它們完成應該進行的計算之前就停止了。
分布式系統的故障時部分的,也就是說,有些組件出了故障而有些組件運行正常。因此故障的處理相當困難。接下來我們討論一下處理故障的技術:
- 檢測故障:有些故障能被檢測到。例如,校驗和可用于檢測消息或文件中出現的錯誤。而有些故障時很難甚至不能被檢測到的。面臨的挑戰是如何在有故障出現的情況下進行管理,這些故障不能被檢測到但可以被猜到。
- 掩蓋故障:有些被檢測到的故障能被隱藏起來或降低她的嚴重程度。下面是隱藏故障的兩個例子 :
1)消息在不能到達時重傳。
2)將文件數據寫入兩個磁盤,如果一個磁盤損壞,那么另一個磁盤的數據仍是正確的。
降低故障嚴重程度的例子是丟掉被損壞的消息。這樣,該消息可以被重傳。讀者可能意識到,隱藏故障的技術不能保證在最壞情況下有效。例如,第二個磁盤上的數據可能也壞了,或消息無論怎樣重傳都不能在合理的時間到達。 - 容錯:互聯網上的大多服務確實可能發生故障,試圖檢測并隱藏在這樣大的網絡、這么多的組件中發生的所有故障是不太實際的。服務的客戶能被設計成容錯的,這通常也涉及用戶要容忍錯誤。例如,當Web瀏覽器不能與Web服務器連接時,它不會讓用戶一直等待它與服務器建立連接,而是通知用戶這個問題,讓用戶自由選擇是否嘗試稍后再連接。
- 故障恢復:恢復涉及軟件的設計,以便在服務器崩潰后,永久數據的狀態能被恢復或“回滾”。通常再出現錯誤時,程序完成的計算是不完整的,被更新的永久數據(文件和其他保存在永久存儲介質中的資料)可能處在不一致的狀態。
- 冗余:利用冗余組件,服務可以實現容錯。考慮下面的例子:
1)在互聯網的任意兩個路由器之間,至少存在兩個不同的路由。
2)在域名系統中,每個名字表至少被復制到兩個不同的服務器上。
3)數據庫可以被復制到幾個服務器上,以保證在任何一個服務器上有錯誤時,客戶就被重定向到剩下的服務器上。
[1] [5] [6] 并發性
在分布式系統中,服務和應用均提供可被客戶共享的資源。因此,可能有幾個客戶同時試圖訪問一個共享資源的情況。
管理共享資源的進程可以一次接受一個客戶請求,但這種方法限制了吞吐量。因此,服務和應用通常被允許并發地處理多個客戶請求。
在分布式系統中,代表共享資源的任何一個對象必須負責確保它在并發環境中操作正確,這不僅適用于服務器,也適用于服務器,也適用于應用中的對象。因此,持有未打算用于分布式系統的對象實現的程序員必須做一些事情,使得對象在并發環境中能安全使用。
為了使對象在并發環境中能安全使用,它的操作必須在數據一致的基礎上同步。者可通過標準的技術(如大多數操作系統所采用的信號量)來實現。
[1] [5] [7] 透明性
透明性被定義成對用戶和應用程序員屏蔽分布式系統的組件的分離性,使系統被認為是一個整體,而不是獨立組件的集合。
ANSA參考手冊和國際化標準化組織的開放分布式處理的參考模型(RM-ODP)識別出八種透明性(并用范圍更廣的移動透明性替換遷移透明性):
- 訪問透明性:用相同的操作訪問本地資源和遠程資源。
- 位置透明性:不需要知道資源的物理或網絡位置就能訪問它們
- 并發透明性:幾個進程能并發地使用共享資源進行操作且互不干擾
- 復制透明性:使用資源的多個實例提升可靠性和性能,而用戶和應用程序員無需知道副本的相關信息
- 故障透明性:屏蔽錯誤,不論是硬件組件故障還是軟件組件故障,用戶和應用程序員能夠完成他們的任務
- 移動透明性:資源和客戶能夠在系統內移動而不會影響用戶或程序的操作
- 性能透明性:當負載發生變化時,系統能被重新配置以提高性能
- 伸縮透明性:系統和應用能夠進行擴展而不改變系統結構或應用算法
最重要的兩個透明性是訪問透明性和位置透明性,它們的有無對分布式資源的利用有很大影響,又是它們被統一稱為網絡透明性。
[1] [5] [8] 服務質量
一旦提供給用戶他們要求的功能,例如在一個分布式系統中的文件服務,我們就能繼續探尋所提供的服務質量。系統的主要的非功能特性,即影響客戶和用戶體驗的服務質量是可靠性、安全性和性能。滿足變化的系統配置和資源可用性的適用性已被公認為服務質量的一個重要方面。
可靠性和安全性問題再設計大多是計算機系統時時關鍵的。服務質量的性能源于及時性和計算吞吐量,但它已被重新定義成滿足及時性保證的能力。
一些應用,包括多媒體應用,處理時間關鍵性數據,這些數據是要求以固定速度處理或從一個進程傳送到另一個進程的數據流。例如,一個電影服務可能由一個客戶程序組成,該程序從一個視頻服務器中檢索電影并把它呈現到用戶的屏幕上。該視頻的連續幀在指定時間限制內顯示給用戶,才算是一個滿意的結果。
[1] [6] 實例研究:萬維網
在1989年3月,互聯網還只屬于少數人。在這一互聯網的黎明期,HTTP誕生了。
蒂姆·伯納斯-李博士提出了一種讓遠隔兩地的研究者們共享知識的設想,這一最初設想的基本理念是:借助多文檔之間相互關聯形成的超文本(HyperText),連成可相互參閱的WWW(World Wide Web,萬維網)。
超文本(Hypertext):在互聯網早期的時候,我們輸入的信息只能保存在本地,無法和其他電腦交互。我們保存的信息通常都以文本即簡單字符的形式存在,文本是一種能夠被計算機解析的有意義的二進制數據包。而隨著互聯網的高速發展,兩臺電腦之間能夠進行數據的傳輸后,人們不再滿足只能在兩臺電腦之間傳輸文字,還想要傳輸圖片、音頻、視頻,甚至是超鏈接,那么文本的語義就被擴大了,這種語義擴大后的文本就被稱為超文本(HyperText)。
而為了實現這一理念,現在已經提出了3項WWW構建技術,分別是:
- 把SGML(Standard Generalized Markup Langrage,標準通用標記語言)作為頁面的文本標記語言的HTML(HyperText Markup Language,超文本標記語言)
- 作為文檔傳輸協議的HTTP(HyperText Transfer Protocol,超文本傳輸協議)
- 指定文檔所在地址的URL(Uniform Resource Locator,統一資源定位符)
WWW這一名稱,是Web瀏覽器當年用來瀏覽超文本的客戶端應用程序是的名稱。現在則用來表示這一系列的集合,也可簡稱為Web。
除了這三樣技術外,還有Javascript,提供比HTML標準化窗口部件質量更好的用戶交互,用于更新Web頁面的部分內容而不必取得該頁面的全新版本并重新顯示。AJAX處理異步情況等等技術。
Web之所以取得巨大的成功,是因為許多個人或機構能比較容易地發布資源,它的超文本結構適合組織多種類型的信息,而且Web體系結構具有開放性。Web體系結構所基于的標準很簡單,且早被廣泛發布。它使得許多新的資源類型和服務可以集成到一起。
Web成功的背后也存在一些設計問題,首先,它的超文本模型再某些方面有所欠缺。如果刪除或移動了一個資源,那么就會存在對資源所謂“懸空”鏈接,會使用戶請求落空。此外,還存在用戶“在超空間迷失”這個常見的問題。用戶經常發現自己處于混亂狀態下,跟隨許多無關的鏈接打開完全不同的頁面,使得有些情況下可靠性值得懷疑。
在Web上查找信息的另一種方法是使用搜索引擎,但這種方法在滿足用戶真正需求方面是相當不完美的。要解決這個問題,資源描述框架[www.w3.org V]中介紹過,一種方法是生成標準的表達事務元數據的詞匯、語法和語義,并將元數據封裝在相應的Web資源中供程序訪問。除了查找Web頁面中出現的詞組外,從原理上講,程序可以完成對針對元數據的搜索,然后,根據語義匹配編譯相關的鏈接列表。總而言之,由互連的元數據資源組成的Web就是語義Web。
作為一個系統體系結構,Web面臨規模的問題。常見的Web服務器會在一秒中有很多點擊量,結果導致對用戶的應答變慢。
[1] [7] 小結
分布式系統無處不在。
資源共享是構造分布式系統的主要因素。
分布式系統的構造面臨許多挑戰:
- 異構性
- 開放性
- 安全性
- 可伸縮性
- 故障處理
- 透明性
- 服務質量
總結