北郵鄒華老師分布式計算2-分布式系統(tǒng)的基本原理1_第1頁
北郵鄒華老師分布式計算2-分布式系統(tǒng)的基本原理1_第2頁
北郵鄒華老師分布式計算2-分布式系統(tǒng)的基本原理1_第3頁
北郵鄒華老師分布式計算2-分布式系統(tǒng)的基本原理1_第4頁
北郵鄒華老師分布式計算2-分布式系統(tǒng)的基本原理1_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

分布計算環(huán)境鄒華北京郵電大學網絡技術研究院2013.9

Chapter2

分布式系統(tǒng)的基本原理主要內容體系結構進程通信命名一致性和復制

主要內容體系結構

進程通信命名一致性和復制

體系結構主要內容什么是體系結構體系結構樣式系統(tǒng)體系結構體系結構與中間件引言分布式系統(tǒng)往往是由各種復雜的系統(tǒng)組成,其組件按照定義分散在多臺機器中。要掌握這些復雜性,關鍵是恰當地組織好這些系統(tǒng),分析其結構軟件體系結構告訴我們不同的軟件組件在邏輯上是如何組織的,它們之間是如何相互作用的。當我們把系統(tǒng)的各個軟件組件部署到各個物理機器上時,同一系統(tǒng)可以有不同的部署方式,而軟件體系結構部署后的最終實例稱為系統(tǒng)體系結構。體系結構主要內容什么是體系結構體系結構樣式系統(tǒng)體系結構體系結構與中間件什么是軟件體系結構定義1:軟件體系結構(軟件架構)是具有一定形式的結構化元素,即:組件的集合,包括:處理組件、數據組件和連接組件。處理組件負責對數據進行加工,數據組件是被加工的信息,連接組件把體系結構的不同部分組合連接起來。組件:是一個模塊單元,它具有并且可以提供良好定義的接口,在其環(huán)境中是可替換的。連接組件(連接件):描述為一種機制,在組件之間傳遞通信、使組件相互協(xié)調和協(xié)作。什么是軟件體系結構(2)定義2:軟件體系結構(軟件架構)為軟件系統(tǒng)提供了一個結構、行為和屬性的高級抽象,由構成系統(tǒng)的元素(組件)的描述、這些元素(組件)的相互作用、指導元素(組件)集成的模式以及這些模式的約束組成。軟件體系結構不僅指定了系統(tǒng)的組織結構和拓撲結構,并且顯示了系統(tǒng)需求和構成系統(tǒng)的元素之間的對應關系,提供了一些設計決策的基本原理。體系結構主要內容什么是體系結構體系結構樣式系統(tǒng)體系結構體系結構與中間件什么是軟件體系結構樣式定義1:軟件體系結構樣式(Style,風格)是描述某一特定應用領域中系統(tǒng)組織方式的慣用模式。它反映了領域中眾多系統(tǒng)所共有的結構和語義特性,并指導如何將各個模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)。按這種方式理解,軟件體系結構風格定義了用于描述系統(tǒng)的術語表和一組指導構建系統(tǒng)的規(guī)則。什么是軟件體系結構樣式(2)定義2:是對各組件類型和運行控制/數據傳送模式的描述。可以把架構樣式看作是對架構的一組制約條件,即對各組件類型及其交互模式的限制條件,而這些制約條件就確定了一組或一系列能滿足它們的構架??梢詮乃膫€方面理解體系結構樣式:

一組在系統(tǒng)運行時執(zhí)行一定功能的組件類型。能夠表明在系統(tǒng)運行時組件的相互關系的拓撲結構。一組語義約束條件的集合。一組連接件的集合,這些連接件為組件之間的通信提供中介。分布式系統(tǒng)體系結構樣式1、分層體系結構2、對象的體系結構3、以數據為中心的體系結構4、基于事件的體系結構分層體系結構層次系統(tǒng)組織成一個層次結構,每一層為上層服務,并作為下層客戶。在一些層次系統(tǒng)中,除了一些精心挑選的輸出函數外,內部的層只對相鄰的層可見。系統(tǒng)中組件在一些層實現了虛擬機連接件通過決定層間如何交互的協(xié)議來定義拓撲約束包括對相鄰層間交互的約束第N層第N-1層第2層第1層

數據抽象和面向對象的體系結構抽象數據類型概念對軟件系統(tǒng)有著重要作用,這種樣式建立在數據抽象和面向對象的基礎上。數據的表示方法和它們的相應操作封裝在一個抽象數據類型或對象中。這種風格的組件是對象,或者說是抽象數據類型的實例與“客戶-服務器”結構很相似。以數據為核心的體系結構組件間的通信,通過基于一個公用的存儲(如共享的分布式文件系統(tǒng))實現例如,基于Web的分布式系統(tǒng),組件使用共享的基于Web的數據服務共享數據空間組件組件組件組件組件組件主動倉庫式(黑板式)以事件為中心的體系結構組件間的通信,通過事件(可帶有數據)的傳播實現;如:發(fā)布/訂閱(publish/subscribe)系統(tǒng)與以數據為中心的體系結構組合構成的共享數據空間樣式

組件組件傳送發(fā)布事件總線組件組件組件共享(持久)的數據空間傳送發(fā)布體系結構主要內容什么是體系結構體系結構樣式系統(tǒng)體系結構體系結構與中間件系統(tǒng)體系結構系統(tǒng)體系結構:軟件體系結構的具體實例。確定了軟件組件、這些組件的交互以及它們的位置(部署)就是軟件體系結構的一個實例。主要討論 1、集中式體系結構 2、非集中式體系結構 3、混合體系結構集中式體系結構顧名思義,服務功能集中在服務器側??蛻?服務器體系結構服務器:實現特定服務的進程客戶:向服務器提出請求、等待答復的進程請求/答復模式請求響應客戶服務器等待集中式的層次例:搜索引擎各種各樣的分層方式如何分層取決于應用系統(tǒng)的具體情況非集中式體系結構多層客戶-服務器結構---垂直分布性將不同功能組件放在不同的機器上有助于功能可以從邏輯、物理上分割在多臺機器上,每臺機器按特定功能定制另一種體系結構---水平分布性在物理上被分割成邏輯相等的幾個部分每個部分都處理整個數據集中自己共享的部分進一步地:對稱、點對點(P2P)從集中式到P2PP2P是一種分布式網絡,網絡的參與者共享他們所擁有的一部分硬件資源(處理能力、存儲能力、網絡連接能力等)和軟件資源或者數據資源,這些共享資源能被其它對等節(jié)點(Peer)直接訪問而無需經過中間實體。在此網絡中的參與者既是資源提供者(Server),又是資源獲取者(Client)P2P網絡的拓撲結構示例混合型體系結構將客戶/服務器結構與非集中式結構相結合如:邊界服務器系統(tǒng)(edgeserver)C/SP2P混合型體系結構(2)再如:協(xié)作式分布式系統(tǒng)例:文件共享系統(tǒng)BitTorrent強制每個參與者,即可下載文件,也負責上載文件全局目錄:在Web站點中保存,指向下載文件的tracker。跟蹤器(tracker):記錄活動節(jié)點的服務器體系結構主要內容什么是體系結構體系結構樣式系統(tǒng)體系結構體系結構與中間件中間件是泛指能夠屏蔽操作系統(tǒng)和網絡協(xié)議的差異,能夠為異構系統(tǒng)之間提供通訊服務的軟件。中間件是操作系統(tǒng)和應用軟件之間的一個獨立軟件層,它在不改變現有操作系統(tǒng)的前提下,向分布式應用提供相應的執(zhí)行環(huán)境和編程環(huán)境。分布式計算環(huán)境就是(一種)中間件。體系結構與中間件中間件中的攔截器攔截器(Interceptor):中間件中大多具有的一種組件可中斷正常執(zhí)行的控制流,插入執(zhí)行其他代碼例:遠程對象調用請求級攔截器消息級攔截器主要內容體系結構進程

通信命名一致性和復制

進程主要內容進程線程客戶服務器

進程主要內容進程線程客戶服務器

進程狹義定義:進程就是一段程序的執(zhí)行過程。廣義定義:進程是一個具有一定獨立功能的程序關于某個數據集合的一次運行活動。它是操作系統(tǒng)動態(tài)執(zhí)行的基本單元,在傳統(tǒng)的操作系統(tǒng)中,進程既是基本的分配單元,也是基本的執(zhí)行單元。多個不同的進程可以包含相同的程序:一個程序在不同的數據集里就構成不同的進程,能得到不同的結果;但是執(zhí)行過程中,程序不能發(fā)生改變。進程的特點動態(tài)性:進程的實質是程序在多道程序系統(tǒng)中的一次執(zhí)行過程,進程是動態(tài)產生,動態(tài)消亡的并發(fā)性:任何進程都可以同其他進程一起并發(fā)執(zhí)行獨立性:進程是一個能獨立運行的基本單位,同時也是系統(tǒng)分配資源和調度的獨立單位異步性:由于進程間的相互制約,使進程具有執(zhí)行的間斷性,即進程按各自獨立的、不可預知的速度向前推進結構特征:進程由程序、數據和進程控制塊三部分組成。進程的基本狀態(tài)及其轉換運行就緒等待五狀態(tài)進程模型進程主要內容進程線程客戶服務器

線程的引入進程的引入提高了計算機資源的利用效率。但在進一步提高進程的并發(fā)性時,人們發(fā)現進程切換開銷占的比重越來越大,同時進程間通信的效率也受到限制線程的引入正是為了簡化進程間的通信,以小的開銷來提高進程內的并發(fā)程度線程:有時稱輕量級進程,進程中的一個運行實體,是一個CPU調度單位,資源的擁有者還是進程或稱任務線程模型多線程進程:一個線程被阻塞時,可運行同一進程中的另一線程感受線程編程(Java)publicclassMyThreadextendsThread{ intcount=1,number; publicMyThread(intnum){ number=num; System.out.println("創(chuàng)建線程"+number); } publicvoidrun(){ while(true){ System.out.println("線程"+number+":計數"+count); if(++count==6)return; } } publicstaticvoidmain(Stringargs[]){ for(inti=0;i<5;i++)newMyThread(i+1).start(); }}理解線程線程:有執(zhí)行狀態(tài)(狀態(tài)轉換,阻塞、就緒運行)不運行時保存上下文有一個執(zhí)行棧有一些局部變量的靜態(tài)存儲可存取所在進程的內存和其他資源可以創(chuàng)建、撤消另一個線程線程的特點是進程的一個實體,可作為系統(tǒng)獨立調度和分派的基本單位。不擁有系統(tǒng)資源(只擁有從屬進程的全部資源,資源是分配給進程)每個線程有自己的程序計數器、堆棧(局部變量)、狀態(tài)等。一個進程中的多個線程可并發(fā)執(zhí)行。(進程可創(chuàng)建線程執(zhí)行同一程序的不同部分)系統(tǒng)開銷小、切換快。(進程的多個線程都在進程的地址空間活動)因為同一進程內的線程共享內存和文件,因此它們之間相互通信無須調用內核使用線程的優(yōu)點不會因造成阻塞的系統(tǒng)調用導致整個進程被阻塞。如:接收數據、處理數據、備份數據可考慮設計3個控制線程。適合在多處理機系統(tǒng)中執(zhí)行并行操作。適合大型應用程序中相互協(xié)作的程序開發(fā)比如,進程間通信IPC使用例:客戶程序中的多線程以web瀏覽器為例,web文檔由HTML文件組成,包含文本文件、圖像組、圖標等,須建立TCP/IP的連接,建立連接和讀取數據都可能導致阻塞以多線程的方式開發(fā)瀏覽器,激活多個線程,每個線程都與服務器建立獨立連接獲取數據,每個線程負責獲取頁面的相應部分使用例:Server側的多線程如多線程的Web服務器線程與進程的比較調度:線程作為調度的基本單位,同進程中線程切換不引起進程,當不同進程的線程切換才引起進程切換;進程作為擁有資源的基本單位。并發(fā)性:一個進程間的多個線程可并發(fā)。擁有資源:線程僅擁有隸屬進程的資源;進程是擁有資源的獨立單位。系統(tǒng)開銷:進程大;線程小。遠程過程調用RPC中的線程作用:負責接收消息。

(a)消息到達前(b)消息到達后進程主要內容進程線程客戶服務器

客戶程序的設計客戶程序:根據需要可有多種設計思路客戶與服務器間的通信協(xié)議帶專用協(xié)議的網絡化應用程序支持訪問遠程應用程序的通用方案客戶程序對分布透明性的支持訪問透明性客戶存根程序(stub):代理程序隱藏客戶和服務器主機之間的硬件差異和通信位置透明性、遷移透明性、重定位透明性命名系統(tǒng):全局邏輯名字重新綁定機制:當服務器改變位置后,通知客戶重新自動綁定客戶程序對分布透明性的支持(2)復制透明性:使用客戶端實現服務器復制透明性客戶程序對分布透明性的支持(3)失敗透明性重新連接:通信失敗時,重試本地數據緩存:例,脫機方式并發(fā)透明性、持久透明性事務監(jiān)控器:并發(fā)控制和恢復進程主要內容進程線程客戶服務器

服務器服務器是實現特定服務的進程,這些服務是為一組客戶提供的本質上,每個服務器的工作方式都是一樣的:等待來自客戶的請求,隨后負責處理該請求,最后等待下一個請求一般情況下,服務器同時為多個客戶提供服務,因此,同一時刻可能會有多個請求到來服務器的組織結構迭代服務器:自己處理請求,并在必要的情況下將響應返回給發(fā)出請求的客戶并發(fā)服務器:自己不處理請求,而是將請求傳遞給某個獨立的線程或者其他進程來處理,自身立即返回并等待下一個輸入的請求如:多線程服務器再如:每收到一個請求都派生出一個新的進程來進行處理由處理請求的線程或者進程負責向發(fā)出該請求的客戶端返回響應客戶如何聯(lián)系服務器?客戶如何知道服務器的IP地址?眾所周知IP地址、DSN、命名服務客戶總是需要向服務器所在的某個端口(Port)發(fā)送請求,而服務器應該在這個端口監(jiān)聽請求??蛻羧绾沃滥硞€服務所對應的端口?方法1:為已知服務分配一個眾所周知的端口FTP21HTTP80方法2:服務器的端口被本地操作系統(tǒng)動態(tài)分配,客戶必須找到到該端口怎么找到?客戶到服務器的兩種綁定策略方法1:在運行服務器的每臺機器上運行一個特殊的守護進程daemon該進程負責跟蹤位于同一臺機器上的每一個服務進程使用的當前端點該進程監(jiān)聽一個已知的端口,客戶通過這個端口與該守護進程進行聯(lián)系,得到服務器的端口客戶到服務器的兩種綁定策略(2)方法2:使用超級服務器如Unix中的inetd守護程序,監(jiān)聽許多Internet服務的已知端口當收到請求的時候,它派生出一個進程以對該請求進行進一步處理,這個派生出的進程在處理完畢后自動退出運行??蛻魧Ψ掌鞴ぷ鞯闹袛喾椒ǚ椒?:讓用戶強行退出客戶應用程序(這將中斷與服務器的連接)然后馬上重新啟動客戶程序,就好像什么事情都沒有發(fā)生一樣??雌饋肀容^笨,但在互聯(lián)網環(huán)境下工作得挺好方法2:使用帶外數據利用單獨另外的控制端點,或者利用同一鏈路,如,TCP中發(fā)送urgentdata服務器的狀態(tài)問題會話狀態(tài)和永久狀態(tài)會話狀態(tài)是服務器與一個客戶間一次會話中涉及的狀態(tài)永久狀態(tài)記錄的通常是數據庫數據,如客戶信息服務器的狀態(tài)問題通常關注的是會話狀態(tài)有狀態(tài)和無狀態(tài)無狀態(tài)服務器:服務器不保存客戶程序的狀態(tài)例如,Web服務器有狀態(tài)服務器:保存客戶程序的狀態(tài)例如,NF

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論