chapter2-分布式系統(tǒng)的基本原理1解析_第1頁
chapter2-分布式系統(tǒng)的基本原理1解析_第2頁
chapter2-分布式系統(tǒng)的基本原理1解析_第3頁
chapter2-分布式系統(tǒng)的基本原理1解析_第4頁
chapter2-分布式系統(tǒng)的基本原理1解析_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

分布計算環(huán)境鄒華北京郵電大學(xué)網(wǎng)絡(luò)技術(shù)研究院2015.9

Chapter2

分布式系統(tǒng)的基本原理主要內(nèi)容體系結(jié)構(gòu)進(jìn)程通信命名一致性和復(fù)制容錯安全

主要內(nèi)容體系結(jié)構(gòu)

進(jìn)程通信命名一致性和復(fù)制容錯安全

體系結(jié)構(gòu)主要內(nèi)容什么是體系結(jié)構(gòu)體系結(jié)構(gòu)樣式系統(tǒng)體系結(jié)構(gòu)體系結(jié)構(gòu)與中間件引言分布式系統(tǒng)往往是由各種復(fù)雜的系統(tǒng)組成,其組件按照定義分散在多臺機(jī)器中。要掌握這些復(fù)雜性,關(guān)鍵是恰當(dāng)?shù)亟M織好這些系統(tǒng),分析其結(jié)構(gòu)軟件體系結(jié)構(gòu)告訴我們不同的軟件組件在邏輯上是如何組織的,它們之間是如何相互作用的。當(dāng)我們把系統(tǒng)的各個軟件組件部署到各個物理機(jī)器上時,同一系統(tǒng)可以有不同的部署方式,而軟件體系結(jié)構(gòu)部署后的最終實例稱為系統(tǒng)體系結(jié)構(gòu)。體系結(jié)構(gòu)主要內(nèi)容什么是體系結(jié)構(gòu)體系結(jié)構(gòu)樣式系統(tǒng)體系結(jié)構(gòu)體系結(jié)構(gòu)與中間件什么是軟件體系結(jié)構(gòu)定義1:軟件體系結(jié)構(gòu)(軟件架構(gòu))是具有一定形式的結(jié)構(gòu)化元素,即:組件的集合,包括:處理組件、數(shù)據(jù)組件和連接組件。處理組件負(fù)責(zé)對數(shù)據(jù)進(jìn)行加工,數(shù)據(jù)組件是被加工的信息,連接組件把體系結(jié)構(gòu)的不同部分組合連接起來。組件:是一個模塊單元,它具有并且可以提供良好定義的接口,在其環(huán)境中是可替換的。連接組件(連接件):描述為一種機(jī)制,在組件之間傳遞通信、使組件相互協(xié)調(diào)和協(xié)作。什么是軟件體系結(jié)構(gòu)(2)定義2:軟件體系結(jié)構(gòu)(軟件架構(gòu))為軟件系統(tǒng)提供了一個結(jié)構(gòu)、行為和屬性的高級抽象,由構(gòu)成系統(tǒng)的元素(組件)的描述、這些元素(組件)的相互作用、指導(dǎo)元素(組件)集成的模式以及這些模式的約束組成。軟件體系結(jié)構(gòu)不僅指定了系統(tǒng)的組織結(jié)構(gòu)和拓?fù)浣Y(jié)構(gòu),并且顯示了系統(tǒng)需求和構(gòu)成系統(tǒng)的元素之間的對應(yīng)關(guān)系,提供了一些設(shè)計決策的基本原理。體系結(jié)構(gòu)主要內(nèi)容什么是體系結(jié)構(gòu)體系結(jié)構(gòu)樣式系統(tǒng)體系結(jié)構(gòu)體系結(jié)構(gòu)與中間件什么是軟件體系結(jié)構(gòu)樣式定義1:軟件體系結(jié)構(gòu)樣式(Style,風(fēng)格)是描述某一特定應(yīng)用領(lǐng)域中系統(tǒng)組織方式的慣用模式。它反映了領(lǐng)域中眾多系統(tǒng)所共有的結(jié)構(gòu)和語義特性,并指導(dǎo)如何將各個模塊和子系統(tǒng)有效地組織成一個完整的系統(tǒng)。按這種方式理解,軟件體系結(jié)構(gòu)風(fēng)格定義了用于描述系統(tǒng)的術(shù)語表和一組指導(dǎo)構(gòu)建系統(tǒng)的規(guī)則。分布式系統(tǒng)體系結(jié)構(gòu)樣式1、分層體系結(jié)構(gòu)2、對象的體系結(jié)構(gòu)3、以數(shù)據(jù)為中心的體系結(jié)構(gòu)4、基于事件的體系結(jié)構(gòu)分層體系結(jié)構(gòu)層次系統(tǒng)組織成一個層次結(jié)構(gòu),每一層為上層服務(wù),并作為下層客戶。在一些層次系統(tǒng)中,除了一些精心挑選的輸出函數(shù)外,內(nèi)部的層只對相鄰的層可見。系統(tǒng)中組件在一些層實現(xiàn)了虛擬機(jī)連接件通過決定層間如何交互的協(xié)議來定義拓?fù)浼s束包括對相鄰層間交互的約束第N層第N-1層第2層第1層

數(shù)據(jù)抽象和面向?qū)ο蟮捏w系結(jié)構(gòu)抽象數(shù)據(jù)類型概念對軟件系統(tǒng)有著重要作用,這種樣式建立在數(shù)據(jù)抽象和面向?qū)ο蟮幕A(chǔ)上。數(shù)據(jù)的表示方法和它們的相應(yīng)操作封裝在一個抽象數(shù)據(jù)類型或?qū)ο笾小_@種風(fēng)格的組件是對象,或者說是抽象數(shù)據(jù)類型的實例與“客戶-服務(wù)器”結(jié)構(gòu)很相似。以數(shù)據(jù)為核心的體系結(jié)構(gòu)組件間的通信,通過基于一個公用的存儲(如共享的分布式文件系統(tǒng))實現(xiàn)例如,基于Web的分布式系統(tǒng),組件使用共享的基于Web的數(shù)據(jù)服務(wù)共享數(shù)據(jù)空間組件組件組件組件組件組件主動倉庫式(黑板式)以事件為中心的體系結(jié)構(gòu)組件間的通信,通過事件(可帶有數(shù)據(jù))的傳播實現(xiàn);如:發(fā)布/訂閱(publish/subscribe)系統(tǒng):松耦合與以數(shù)據(jù)為中心的體系結(jié)構(gòu)組合構(gòu)成的共享數(shù)據(jù)空間樣式

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

通信命名一致性和復(fù)制容錯安全

進(jìn)程主要內(nèi)容進(jìn)程線程客戶服務(wù)器

進(jìn)程主要內(nèi)容進(jìn)程線程客戶服務(wù)器

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

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

(a)消息到達(dá)前(b)消息到達(dá)后提醒:沒有免費(fèi)的午餐由于線程并不像進(jìn)程那樣彼此隔離,在單個進(jìn)程中共享資源的并發(fā)控制問題由應(yīng)用程序開發(fā)者負(fù)責(zé)解決。因此多線程應(yīng)用程序的開發(fā)需要付出更多的努力。設(shè)計要合理,實現(xiàn)要簡單進(jìn)程主要內(nèi)容進(jìn)程線程客戶服務(wù)器

客戶程序的設(shè)計客戶程序:根據(jù)需要可有多種設(shè)計思路客戶與服務(wù)器間的通信協(xié)議帶專用協(xié)議的網(wǎng)絡(luò)化應(yīng)用程序支持訪問遠(yuǎn)程應(yīng)用程序的通用方案客戶程序?qū)Ψ植纪该餍缘闹С衷L問透明性客戶存根程序(stub):代理程序隱藏客戶和服務(wù)器主機(jī)之間的硬件差異和通信位置透明性、遷移透明性、重定位透明性命名系統(tǒng):全局邏輯名字重新綁定機(jī)制:當(dāng)服務(wù)器改變位置后,通知客戶重新自動綁定客戶程序?qū)Ψ植纪该餍缘闹С?2)復(fù)制透明性:使用客戶端實現(xiàn)服務(wù)器復(fù)制透明性客戶程序?qū)Ψ植纪该餍缘闹С?3)失敗透明性重新連接:通信失敗時,重試本地數(shù)據(jù)緩存:例,脫機(jī)方式進(jìn)程主要內(nèi)容進(jìn)程線程客戶服務(wù)器

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

溫馨提示

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

評論

0/150

提交評論