第二章分布式系統(tǒng)的通信._第1頁
第二章分布式系統(tǒng)的通信._第2頁
第二章分布式系統(tǒng)的通信._第3頁
第二章分布式系統(tǒng)的通信._第4頁
第二章分布式系統(tǒng)的通信._第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第第2 2章章 分布式系統(tǒng)的通信分布式系統(tǒng)的通信 分層協(xié)議分層協(xié)議 異步傳輸模式網(wǎng)(異步傳輸模式網(wǎng)(ATMATM) 客戶客戶- -服務器模式服務器模式 遠程過程調(diào)用遠程過程調(diào)用 組通信組通信2.1 2.1 分層協(xié)議分層協(xié)議 開放系統(tǒng)互聯(lián)參考模型(開放系統(tǒng)互聯(lián)參考模型(OSIOSI) OSI 模型中的層、接口和協(xié)議模型中的層、接口和協(xié)議 網(wǎng)絡物理層數(shù)據(jù)鏈路層網(wǎng)絡層傳輸層會話層表示層應用層進程A機器1物理層數(shù)據(jù)鏈路層網(wǎng)絡層傳輸層會話層表示層應用層進程B機器2應用層協(xié)議表示層協(xié)議會話層協(xié)議傳輸層協(xié)議網(wǎng)絡層協(xié)議數(shù)據(jù)鏈路層協(xié)議物理層協(xié)議12345672.1 2.1 分層協(xié)議分層協(xié)議 開放系統(tǒng)互聯(lián)參考模型

2、(開放系統(tǒng)互聯(lián)參考模型(OSIOSI)典型消息結(jié)構(gòu)典型消息結(jié)構(gòu) 消息消息應用層頭應用層頭表示層頭表示層頭會話層頭會話層頭傳輸層頭傳輸層頭網(wǎng)絡層頭網(wǎng)絡層頭數(shù)據(jù)鏈路層頭數(shù)據(jù)鏈路層頭數(shù)據(jù)鏈路數(shù)據(jù)鏈路層尾層尾實際網(wǎng)絡中傳輸?shù)奈粚嶋H網(wǎng)絡中傳輸?shù)奈?.22.2 異步傳輸模式網(wǎng)(異步傳輸模式網(wǎng)(ATMATM網(wǎng))網(wǎng)) 異步傳輸模式異步傳輸模式ATM模型模型 異步傳輸模式(異步傳輸模式(Asynchronous Transfer Mode)發(fā)送者首先建立一個連接(一條虛擬線路)到接收者。在建發(fā)送者首先建立一個連接(一條虛擬線路)到接收者。在建立過程中,從發(fā)送者到接收者之間建立一個路由,并將路由立過程中,從發(fā)送者

3、到接收者之間建立一個路由,并將路由信息放在沿途的交換機上。信息放在沿途的交換機上。系統(tǒng)發(fā)送包時,包先被硬件拆成固定大小的單位(信元),系統(tǒng)發(fā)送包時,包先被硬件拆成固定大小的單位(信元),信元沿著交換機中的路徑流動。信元沿著交換機中的路徑流動。當不再需要連接時,釋放此連接,并從交換機中刪除該路由當不再需要連接時,釋放此連接,并從交換機中刪除該路由信息。信息。2.2 2.2 異步傳輸模式網(wǎng)(異步傳輸模式網(wǎng)(ATMATM網(wǎng)網(wǎng)) 異步傳輸模式異步傳輸模式ATM協(xié)議分層協(xié)議分層 物理層(物理層(OSI第第1層)層)ATM層處理包括路由選擇在內(nèi)的信元和信元傳輸。層處理包括路由選擇在內(nèi)的信元和信元傳輸。(包

4、括包括OSI第第2,3層一部分層一部分) ATM不修復丟失或損壞的信元。不修復丟失或損壞的信元。適配層將包拆分成信元并在另一頭組裝。(適配層將包拆分成信元并在另一頭組裝。(OSI第第4層)層) 適配層適配層沒有提供可靠的端對端服務,傳輸連接必須在上一層實現(xiàn)。沒有提供可靠的端對端服務,傳輸連接必須在上一層實現(xiàn)。物理層ATM層適配層上面各層2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.1 2.3.1 客戶機和服務器客戶機和服務器基本思想基本思想 構(gòu)造一個操作系統(tǒng)構(gòu)造一個操作系統(tǒng),由一組協(xié)同進程組成,這組進程稱為服由一組協(xié)同進程組成,這組進程稱為服務器務器(server),為用戶提供服務的

5、進程稱為客戶,為用戶提供服務的進程稱為客戶(client). 客戶和服務器都運行在相同的微內(nèi)核中??蛻艉头掌鞫歼\行在相同的微內(nèi)核中。 客戶和服務器都以用戶進程方式運行,客戶和服務器都以用戶進程方式運行, 一臺機器可以運行一臺機器可以運行于單個進程、多個客戶、多個服務器或者兩者的混合。于單個進程、多個客戶、多個服務器或者兩者的混合。2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.1 2.3.1 客戶機和服務器客戶機和服務器通信特點通信特點 客戶服務器模式通常以簡單的面向非連接的請求客戶服務器模式通常以簡單的面向非連接的請求/應答協(xié)議應答協(xié)議為基礎。通信服務可以簡化為由微內(nèi)核提供的兩個系

6、統(tǒng)調(diào)用,一為基礎。通信服務可以簡化為由微內(nèi)核提供的兩個系統(tǒng)調(diào)用,一個是負責發(fā)送報文(個是負責發(fā)送報文(send),一個是負責接收報文(),一個是負責接收報文(receive)。)。內(nèi)核內(nèi)核客戶客戶內(nèi)核內(nèi)核服務服務網(wǎng)絡網(wǎng)絡應答應答請求請求物理層物理層數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層請求請求/應答應答12345672.3 2.3 客戶機服務器模式客戶機服務器模式2.3.3 2.3.3 尋址尋址機器機器.進程編址方式進程編址方式 機器號和進程號,機器號用于使內(nèi)核將消息正確地發(fā)送到機器號和進程號,機器號用于使內(nèi)核將消息正確地發(fā)送到適當?shù)臋C器上。進程號用來使內(nèi)核決定消息要給哪一個進程。適當?shù)臋C器上。進程號用來使內(nèi)核

7、決定消息要給哪一個進程。內(nèi)核內(nèi)核C內(nèi)核內(nèi)核S1:請求:請求243.0212:給:給199.0響應響應2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.3 2.3.3 尋址尋址帶有廣播的進程編址帶有廣播的進程編址 進程在相當大且專用的地址空間中選擇自己的標識號。發(fā)進程在相當大且專用的地址空間中選擇自己的標識號。發(fā)送者廣播一個特殊的定位包,包含目的進程的地址,所有內(nèi)核檢送者廣播一個特殊的定位包,包含目的進程的地址,所有內(nèi)核檢查并察看地址是不是它們的,如果是回答查并察看地址是不是它們的,如果是回答“我在這里我在這里”消息給出消息給出網(wǎng)絡地址,發(fā)送內(nèi)核使用這個地址并網(wǎng)絡地址,發(fā)送內(nèi)核使用這個地址

8、并“記住記住”它。它。 CS1:廣播:廣播432:“我在這里我在這里”123:請求:請求4:應答:應答2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.3 2.3.3 尋址尋址通過名字服務器進行地址查詢通過名字服務器進行地址查詢 在客戶機中存放在客戶機中存放ASCII服務器的名字,每次客戶機運行時,服務器的名字,每次客戶機運行時,首先試圖使用服務器,客戶機發(fā)出一請求消息給一個特殊映射服首先試圖使用服務器,客戶機發(fā)出一請求消息給一個特殊映射服務器,(常常稱為名字服務器)問一個目前服務器所在的機器號,務器,(常常稱為名字服務器)問一個目前服務器所在的機器號,有了這個地址后,可以直接發(fā)送請求。

9、有了這個地址后,可以直接發(fā)送請求。名字服務器SC1:查找:查找2:NS應答應答NS1:請求:請求2:應答:應答1234網(wǎng)絡網(wǎng)絡2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.3 2.3.3 尋址尋址進程編址方法總結(jié)進程編址方法總結(jié) 在客戶機代碼中指明機器在客戶機代碼中指明機器.號;號; 讓進程選擇隨機地址,用廣播定位進程。讓進程選擇隨機地址,用廣播定位進程。 在客戶機中存放在客戶機中存放ASCII服務器名字,運行時尋找它。服務器名字,運行時尋找它。三種方法的缺點:三種方法的缺點: 機器機器.進程編址方式:不透明進程編址方式:不透明 帶有廣播的進程編址:給系統(tǒng)造成額外負擔帶有廣播的進程編

10、址:給系統(tǒng)造成額外負擔 通過名字服務器進行地址查詢:需要一個中間部件通過名字服務器進行地址查詢:需要一個中間部件名字服務器。名字服務器。 2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.4 2.3.4 阻塞與非阻塞原語阻塞與非阻塞原語阻塞原語阻塞原語 阻塞的阻塞的Send:阻塞直到消息傳送完畢阻塞直到消息傳送完畢. 阻塞的阻塞的Receive: 阻塞直到消息被實際接收并放入由參數(shù)阻塞直到消息被實際接收并放入由參數(shù)指定的消息緩沖區(qū)指定的消息緩沖區(qū). 客戶阻塞客戶阻塞消息被發(fā)送消息被發(fā)送從內(nèi)核返回,從內(nèi)核返回,進程釋放進程釋放陷阱內(nèi)核陷阱內(nèi)核阻塞進程阻塞進程客戶運行客戶運行客戶運行客戶運行

11、2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.4 2.3.4 阻塞與非阻塞原語阻塞與非阻塞原語非阻塞原語非阻塞原語 非阻塞的非阻塞的Send:消息發(fā)送前取得系統(tǒng)控制權(quán)消息發(fā)送前取得系統(tǒng)控制權(quán). 非阻塞的非阻塞的Receive:告訴內(nèi)核消息緩沖區(qū)的位置告訴內(nèi)核消息緩沖區(qū)的位置,立即取得立即取得系統(tǒng)控制權(quán)系統(tǒng)控制權(quán).2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.4 2.3.4 阻塞與非阻塞原語阻塞與非阻塞原語非阻塞原語非阻塞原語 缺點缺點在消息被發(fā)送之前,發(fā)送者不能修改消息緩沖區(qū)。后繼在消息被發(fā)送之前,發(fā)送者不能修改消息緩沖區(qū)。后繼的進程在傳輸過程中可能覆蓋該消息的進程在傳輸過

12、程中可能覆蓋該消息 。發(fā)送進程不知道傳送何時進行,它無法知道何時重新使發(fā)送進程不知道傳送何時進行,它無法知道何時重新使用緩沖區(qū)。用緩沖區(qū)。2.3 2.3 客戶機服務器模式客戶機服務器模式解決方法解決方法內(nèi)核將消息拷貝到內(nèi)部緩沖區(qū),其后允許進程繼續(xù)執(zhí)行。內(nèi)核將消息拷貝到內(nèi)部緩沖區(qū),其后允許進程繼續(xù)執(zhí)行。 當消息發(fā)送后,中斷發(fā)送者并通知它緩沖區(qū)可用。當消息發(fā)送后,中斷發(fā)送者并通知它緩沖區(qū)可用。 返回返回陷阱陷阱客戶運行客戶運行客戶運行客戶運行消息被發(fā)送消息被發(fā)送客戶阻塞客戶阻塞消息拷貝到消息拷貝到內(nèi)核緩沖內(nèi)核緩沖時間時間2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.5 2.3.5 有緩沖

13、和無緩沖原語有緩沖和無緩沖原語無緩沖原語無緩沖原語 一個地址指定給一個特定進程。如調(diào)用一個地址指定給一個特定進程。如調(diào)用receive(addr,&m) ,告,告訴運行的機器內(nèi)核,調(diào)用的進程正在監(jiān)聽地址訴運行的機器內(nèi)核,調(diào)用的進程正在監(jiān)聽地址addr,m指出消息指出消息緩沖區(qū),用于保存?zhèn)魉瓦^來的消息緩沖區(qū),用于保存?zhèn)魉瓦^來的消息。 內(nèi)核內(nèi)核C內(nèi)核內(nèi)核A S客戶客戶對應一個進程對應一個進程的地址的地址服務器服務器2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.5 2.3.5 有緩沖和無緩沖原語有緩沖和無緩沖原語 無緩沖原語無緩沖原語 缺點缺點 如果在客戶機調(diào)用如果在客戶機調(diào)用se

14、nd原語之后調(diào)用原語之后調(diào)用receive原語,無法處原語,無法處理理 解決方法解決方法丟棄消息,使客戶機超時,并希望服務器在客戶機傳送前調(diào)丟棄消息,使客戶機超時,并希望服務器在客戶機傳送前調(diào)用接收原語。用接收原語。 讓接收內(nèi)核在短時間內(nèi)保存到來的消息,以防合適的讓接收內(nèi)核在短時間內(nèi)保存到來的消息,以防合適的receive原語可以很快完成。原語可以很快完成。 2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.5 2.3.5 有緩沖和無緩沖原語有緩沖和無緩沖原語有緩沖原語有緩沖原語 對接收消息感興趣的進程讓內(nèi)核為之建立一個郵箱,并指定對接收消息感興趣的進程讓內(nèi)核為之建立一個郵箱,并指定一個

15、地址以便于尋找網(wǎng)絡信包。所有具有該地址的輸入消息被放一個地址以便于尋找網(wǎng)絡信包。所有具有該地址的輸入消息被放入郵箱中,調(diào)用入郵箱中,調(diào)用receive時只要從郵箱中取出一條消息。時只要從郵箱中取出一條消息。 內(nèi)核內(nèi)核CS對應一個郵箱對應一個郵箱的地址的地址A網(wǎng)絡網(wǎng)絡2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.6 2.3.6 可靠和非可靠原語可靠和非可靠原語如何保證消息被成功發(fā)送如何保證消息被成功發(fā)送重新定義非可靠的重新定義非可靠的send語義。系統(tǒng)無法保證消息成功發(fā)送,語義。系統(tǒng)無法保證消息成功發(fā)送,完成可靠的通信依賴于用戶。完成可靠的通信依賴于用戶。要求接收機器的內(nèi)核給發(fā)送機器的

16、內(nèi)核發(fā)送一個確認消息。要求接收機器的內(nèi)核給發(fā)送機器的內(nèi)核發(fā)送一個確認消息。 客戶客戶服務器服務器31421.請求(客戶向服務器)請求(客戶向服務器)2.ACK(內(nèi)核給內(nèi)核)(內(nèi)核給內(nèi)核)3.應答(服務器向客戶)應答(服務器向客戶)4.ACK(內(nèi)核給內(nèi)核)(內(nèi)核給內(nèi)核)2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.6 2.3.6 可靠和非可靠原語可靠和非可靠原語如何保證消息被成功發(fā)送如何保證消息被成功發(fā)送 客戶機在發(fā)送消息后阻塞,服務器的內(nèi)核不發(fā)送確認消息,客戶機在發(fā)送消息后阻塞,服務器的內(nèi)核不發(fā)送確認消息,而是將應答作為確認消息。而是將應答作為確認消息。 折衷方案折衷方案 當一個請求

17、到達服務器內(nèi)核,計時器啟動,如果服務器當一個請求到達服務器內(nèi)核,計時器啟動,如果服務器能很快給出應答,這個應答就是確認消息。否則,單獨發(fā)送能很快給出應答,這個應答就是確認消息。否則,單獨發(fā)送確認消息。確認消息??蛻舴掌?131.請求(客戶向服務器) 2.應答(服務器向客戶) 3.ACK(內(nèi)核給內(nèi)核)2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.7 2.3.7 客戶機客戶機- -服務器模式的實現(xiàn)服務器模式的實現(xiàn)四個設計問題的選擇四個設計問題的選擇項目項目選擇選擇1選擇選擇2選擇選擇3尋址尋址機器數(shù)目機器數(shù)目共享進程地址共享進程地址ASCII名字通過服名字通過服務器查找務器查找阻塞阻塞

18、阻塞原語阻塞原語具有拷貝到核的非阻塞具有拷貝到核的非阻塞具有中斷的非阻塞具有中斷的非阻塞緩沖緩沖無緩沖,丟棄無緩沖,丟棄不希望的消息不希望的消息無緩沖,臨時保持不期無緩沖,臨時保持不期望的消息望的消息郵箱郵箱可靠性可靠性非可靠非可靠請求請求-確認確認-應答確認應答確認請求請求-應答應答-確認確認34=81種組合種組合 2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.7 2.3.7 客戶機客戶機- -服務器模式的實現(xiàn)服務器模式的實現(xiàn)大報文傳輸問題大報文傳輸問題將大報文分成多個包分別傳遞,給每個報文分配一個報文號,將大報文分成多個包分別傳遞,給每個報文分配一個報文號,并將該報文號放入屬于這

19、個報文的包中,有一系列的數(shù)字給并將該報文號放入屬于這個報文的包中,有一系列的數(shù)字給出信包的順序。出信包的順序。確認消息確認消息對每個單獨的包進行確認。優(yōu)點:如果一個包丟失,僅僅這對每個單獨的包進行確認。優(yōu)點:如果一個包丟失,僅僅這個包需要重新傳遞。缺點:網(wǎng)絡上會有更多的包。個包需要重新傳遞。缺點:網(wǎng)絡上會有更多的包。僅僅對一個報文確認。優(yōu)點:信包少。缺點:一旦包丟失,僅僅對一個報文確認。優(yōu)點:信包少。缺點:一旦包丟失,恢復起來更復雜?;謴推饋砀鼜碗s。2.3 2.3 客戶機服務器模式客戶機服務器模式2.3.7 2.3.7 客戶機客戶機- -服務器模式的實現(xiàn)服務器模式的實現(xiàn)客戶客戶-服務器協(xié)議中的

20、包類型服務器協(xié)議中的包類型代碼代碼包類型包類型 來源來源 至至說明說明REQ請求請求客戶客戶 服務器服務器客戶要求服務客戶要求服務REP應答應答服務器服務器客戶客戶 服務器對客戶的應答服務器對客戶的應答ACK確認確認服務器、客服務器、客戶戶其他其他前面的包已到達前面的包已到達AYA 你在這里嗎?你在這里嗎?客戶客戶服務器服務器查看服務器是否崩潰查看服務器是否崩潰IAA我在這里我在這里服務器服務器客戶客戶服務器沒有崩潰服務器沒有崩潰TA再試一次?再試一次?服務器服務器客戶客戶服務器沒有空間服務器沒有空間AU地址未知地址未知服務器服務器客戶客戶沒有進程再使用此地沒有進程再使用此地址址2.3 2.3

21、 客戶機服務器模式客戶機服務器模式2.3.7 2.3.7 客戶機客戶機- -服務器模式的實現(xiàn)服務器模式的實現(xiàn)客戶客戶-服務器通信使用的包交換示例服務器通信使用的包交換示例服務器服務器客戶客戶REQ REP服務器服務器客戶客戶REQ REPACK服務器服務器客戶客戶REQ ACKACK REP服務器服務器客戶客戶REQ ACKAYA IAA REPACK2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.1 2.4.1 基本基本RPCRPC操作操作 RPC的基本思想:調(diào)用遠程過程就像調(diào)用本地過程一樣。的基本思想:調(diào)用遠程過程就像調(diào)用本地過程一樣。 傳統(tǒng)過程調(diào)用傳統(tǒng)過程調(diào)用主函數(shù)主函數(shù)局部變量局部變量

22、主函數(shù)主函數(shù)局部變量局部變量主函數(shù)主函數(shù)局部變量局部變量Read的局部變量的局部變量返回地址返回地址fdbufbytesSP SP SP 0 0 2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.1 基本基本RPCRPC操作操作 RPC中的調(diào)用與消息中的調(diào)用與消息 圖圖2-162.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.1 2.4.1 基本基本RPCRPC操作操作 RPC的主要步驟的主要步驟 客戶過程以普通方式調(diào)用相應的客戶存根客戶過程以普通方式調(diào)用相應的客戶存根; 客戶存根建立消息并激活內(nèi)核陷阱客戶存根建立消息并激活內(nèi)核陷阱; 內(nèi)核將消息發(fā)送給遠程內(nèi)核內(nèi)核將消息發(fā)送給遠程內(nèi)核; 遠程內(nèi)核將

23、消息送到服務器存根遠程內(nèi)核將消息送到服務器存根; 服務器存根取出消息中的參數(shù)后調(diào)用服務器存根服務器存根取出消息中的參數(shù)后調(diào)用服務器存根; 服務器完成工作后將結(jié)果返回給服務器存根服務器完成工作后將結(jié)果返回給服務器存根; 服務器存根將它打包并激活內(nèi)核陷阱服務器存根將它打包并激活內(nèi)核陷阱; 遠程內(nèi)核將消息發(fā)送給客戶內(nèi)核遠程內(nèi)核將消息發(fā)送給客戶內(nèi)核; 客戶內(nèi)核將消息交給客戶存根客戶內(nèi)核將消息交給客戶存根; 客戶存根從消息中取出結(jié)果返回給客戶客戶存根從消息中取出結(jié)果返回給客戶.2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.2 2.4.2 參數(shù)傳遞參數(shù)傳遞 Sum(4,7)遠程計算遠程計算 sum47n

24、=sum(4,7)內(nèi)核內(nèi)核sum47 sum(i,j) int i.j; return(i+j);內(nèi)核內(nèi)核Message存根存根客戶機客戶機服務器機服務器機2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.2 2.4.2 參數(shù)傳遞參數(shù)傳遞 數(shù)字、字符格式不同數(shù)字、字符格式不同設計一個網(wǎng)絡標準或規(guī)范化的格式設計一個網(wǎng)絡標準或規(guī)范化的格式 根據(jù)需要轉(zhuǎn)換(在消息中加入格式信息)根據(jù)需要轉(zhuǎn)換(在消息中加入格式信息)存根從何處來存根從何處來根據(jù)形式說明和編碼規(guī)則自動生成根據(jù)形式說明和編碼規(guī)則自動生成 如何處理指針如何處理指針通常采用復制通常采用復制/恢復機制恢復機制2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用

25、2.4.3 動態(tài)捆綁動態(tài)捆綁 客戶如何定位服務器客戶如何定位服務器服務器向服務器向Binder注冊,注冊時需要登記服務器的名字、注冊,注冊時需要登記服務器的名字、版本、句柄、唯一標識,以便客戶進程能尋找到服務器進版本、句柄、唯一標識,以便客戶進程能尋找到服務器進程。程??蛻魪目蛻魪腂inder獲得服務器句柄獲得服務器句柄 和唯一標識。客戶存根將和唯一標識。客戶存根將句柄作為地址,向它發(fā)送消息。句柄作為地址,向它發(fā)送消息。不足之處:不足之處: 輸入和輸出接口需要額外的開銷。在大型分布式系統(tǒng)輸入和輸出接口需要額外的開銷。在大型分布式系統(tǒng)中,中,binder會成為系統(tǒng)瓶頸。會成為系統(tǒng)瓶頸。2.4 2

26、.4 遠程過程調(diào)用遠程過程調(diào)用2.4.4 2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 客戶無法定位服務器客戶無法定位服務器原因:服務器關(guān)閉,客戶存根過時原因:服務器關(guān)閉,客戶存根過時解決方法解決方法 使用全局變量使用全局變量 異常處理機制異常處理機制客戶請求消息丟失客戶請求消息丟失解決方法解決方法 使用計時器重發(fā)消息。使用計時器重發(fā)消息。2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.4 2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 服務器應答消息丟失服務器應答消息丟失無法區(qū)分請求丟失、應答丟失、服務器太慢。無法區(qū)分請求丟失、應答丟失、服務器太慢。解決方法:解決方法:

27、將請求構(gòu)造成冪等的。將請求構(gòu)造成冪等的??蛻魞?nèi)核給要發(fā)送的消息分配一個序號。客戶內(nèi)核給要發(fā)送的消息分配一個序號。 2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.4 2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 服務器崩潰服務器崩潰客戶無法區(qū)分執(zhí)行前或執(zhí)行后崩潰??蛻魺o法區(qū)分執(zhí)行前或執(zhí)行后崩潰。接收接收執(zhí)行執(zhí)行應答應答REQREP服務器服務器接收接收執(zhí)行執(zhí)行REQREP服務器服務器crash接收接收REQNOREP服務器服務器crash正常狀態(tài)正常狀態(tài)執(zhí)行后崩潰執(zhí)行后崩潰執(zhí)行前崩潰執(zhí)行前崩潰2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.4 2.4.4 失敗情況下的失敗情況下的RP

28、CRPC語義語義 服務器崩潰服務器崩潰解決方法:解決方法:至少一次語義。等待服務器重新啟動,然后重發(fā)請求。至少一次語義。等待服務器重新啟動,然后重發(fā)請求。最多一次語義。立即放棄并報告失敗。最多一次語義。立即放棄并報告失敗。不作任何保證。當服務器崩潰時,客戶得不到任何幫助不作任何保證。當服務器崩潰時,客戶得不到任何幫助和保證。和保證。精確一次語義。不容易實現(xiàn)。精確一次語義。不容易實現(xiàn)。2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 客戶機崩潰客戶機崩潰存在孤兒問題存在孤兒問題孤兒:客戶已發(fā)出請求但在應答到來之前崩潰了,此時孤兒:客戶已發(fā)出請求但在

29、應答到來之前崩潰了,此時已激活了服務器中的相應計算,但沒有客戶在等待結(jié)果。已激活了服務器中的相應計算,但沒有客戶在等待結(jié)果。這樣的計算成為孤兒。這樣的計算成為孤兒。解決方法解決方法根除:客戶存根發(fā)送一個根除:客戶存根發(fā)送一個RPC前在日志文件中記下要執(zhí)前在日志文件中記下要執(zhí)行操作的信息。當客戶重新啟動后,系統(tǒng)檢查日志文件,行操作的信息。當客戶重新啟動后,系統(tǒng)檢查日志文件,并準確清除孤兒。并準確清除孤兒。2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 客戶機崩潰客戶機崩潰解決方法解決方法再生:將時間劃分成順序編號的紀元。當一客戶重新啟動時,再生:

30、將時間劃分成順序編號的紀元。當一客戶重新啟動時,它向所有機器廣播一個新紀元的開始。廣播后,所有遠程計算它向所有機器廣播一個新紀元的開始。廣播后,所有遠程計算被終止。被終止。溫和再生:當接到客戶開始新紀元的廣播后,每臺機器檢查自溫和再生:當接到客戶開始新紀元的廣播后,每臺機器檢查自己是否有遠程計算,若有則試圖去找到該遠程計算的調(diào)用者。己是否有遠程計算,若有則試圖去找到該遠程計算的調(diào)用者。若沒有找到該計算的調(diào)用者,則終止計算。若沒有找到該計算的調(diào)用者,則終止計算。過期:每一個過期:每一個RPC執(zhí)行時事先分給一個標準時間段執(zhí)行時事先分給一個標準時間段T 。當。當T到到期而調(diào)用未完成時再申請一個期而調(diào)

31、用未完成時再申請一個T。如果客戶崩潰,服務器在客。如果客戶崩潰,服務器在客戶重新啟動前等候了一個戶重新啟動前等候了一個T后,所有孤兒都被清除。后,所有孤兒都被清除。2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 2.4.5 實現(xiàn)的問題實現(xiàn)的問題 RPC協(xié)議族協(xié)議族任何已經(jīng)存在的能夠?qū)崿F(xiàn)從客戶內(nèi)核到服務器內(nèi)核之間按任何已經(jīng)存在的能夠?qū)崿F(xiàn)從客戶內(nèi)核到服務器內(nèi)核之間按位傳送的協(xié)議都可以作為位傳送的協(xié)議都可以作為RPC的協(xié)議。的協(xié)議。如何選擇對性能有很大影響如何選擇對性能有很大影響面向連接還是面向非連接的協(xié)議面向連接還是面向非連接的協(xié)議標準的通用協(xié)議還是專門為標準的通用協(xié)議還是專門為RPC設計的協(xié)議設計的

32、協(xié)議信包和報文的長度信包和報文的長度2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 確認確認停等協(xié)議停等協(xié)議 爆發(fā)協(xié)議爆發(fā)協(xié)議0 1 2 30123ACK 0ACK 1ACK 2ACK 30123ACK 0-3Timeclientserverclientserver4k data2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 確認確認如何處理超限錯誤如何處理超限錯誤如果超限錯誤是由于芯片處理中斷而暫時無法接收信包如果超限錯誤是由于芯片處理中斷而暫時無法接收信包引起的,發(fā)送者可在發(fā)送兩個信包之間加入一段延遲時引起的,發(fā)送者可在發(fā)送兩個信包之間加入一段延

33、遲時間。間。如果超限錯誤是由于芯片的緩沖區(qū)不夠而引起的,如果如果超限錯誤是由于芯片的緩沖區(qū)不夠而引起的,如果緩沖區(qū)容量為緩沖區(qū)容量為n個信包,則可在發(fā)送個信包,則可在發(fā)送n個信包后留一個個信包后留一個間隙,或是在發(fā)出間隙,或是在發(fā)出n個信包后,得到一個確認后再發(fā)送個信包后,得到一個確認后再發(fā)送后面的包。后面的包。2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 2.4.5 實現(xiàn)的問題實現(xiàn)的問題 關(guān)鍵路徑關(guān)鍵路徑每個每個RPC執(zhí)行的一系列指令順序稱為關(guān)鍵路徑。執(zhí)行的一系列指令順序稱為關(guān)鍵路徑。調(diào)用存根過程準備消息緩沖區(qū)組裝參數(shù)到緩沖區(qū)填入消息頭信息陷阱到內(nèi)核切換到內(nèi)核將消息拷貝到內(nèi)核確定目的地

34、址將地址放入消息頭啟動網(wǎng)絡接口開始計時執(zhí)行服務調(diào)用服務器啟動棧上的參數(shù)拆卸成參數(shù)形式切換到服務器存根將消息拷貝到服務器檢查該村更是否在等待選定哪一個服務器存根檢查包的有效性處理中斷客戶客戶存根內(nèi)核服務器服務器存根內(nèi)核服務器機客戶機2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 2.4.5 實現(xiàn)的問題實現(xiàn)的問題 在關(guān)鍵路徑在關(guān)鍵路徑的什么地方的什么地方耗時最多?耗時最多?2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 拷貝拷貝八次拷貝八次拷貝 客戶存根客戶存根客戶內(nèi)核緩沖區(qū)客戶內(nèi)核緩沖區(qū)客戶接口芯片緩沖區(qū)客戶接口芯片緩沖區(qū)服服務器接口芯片緩沖區(qū)務器接口芯片緩沖區(qū)服務

35、器內(nèi)核緩沖區(qū)服務器內(nèi)核緩沖區(qū)服務器存根服務器存根如果此調(diào)用含有一個大的值參數(shù)組時,還需另外三步拷如果此調(diào)用含有一個大的值參數(shù)組時,還需另外三步拷貝:貝:v將數(shù)組拷入客戶進程的堆棧以調(diào)用客戶存根。將數(shù)組拷入客戶進程的堆棧以調(diào)用客戶存根。v客戶存根組裝時,將數(shù)組從堆??截惖较⒕彌_區(qū)中??蛻舸娓M裝時,將數(shù)組從堆??截惖较⒕彌_區(qū)中。v服務器存根將數(shù)組從消息中取出,放入服務器進程服務器存根將數(shù)組從消息中取出,放入服務器進程的堆棧中。的堆棧中。 2.4 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 拷貝拷貝分散分散-集中集中(匯集)匯集)具有分散具有分散-集中能力網(wǎng)絡接口芯片可以

36、減少拷貝次數(shù)。集中能力網(wǎng)絡接口芯片可以減少拷貝次數(shù)。它通過連接兩個或多個內(nèi)存緩沖區(qū)來裝配一個信包。它通過連接兩個或多個內(nèi)存緩沖區(qū)來裝配一個信包。在發(fā)送端,在發(fā)送端, 由客戶內(nèi)核緩沖區(qū)生成報文消息頭,由客由客戶內(nèi)核緩沖區(qū)生成報文消息頭,由客戶存根生成報文消息體,當發(fā)送時,由網(wǎng)絡芯片組裝報戶存根生成報文消息體,當發(fā)送時,由網(wǎng)絡芯片組裝報文。文。接受端將接收來的報文分解成消息體和消息頭,并放入接受端將接收來的報文分解成消息體和消息頭,并放入相應的緩沖區(qū)。相應的緩沖區(qū)。 2.4 遠程過程調(diào)用遠程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 計時管理計時管理使用排序表使用排序表 使用進程表使用進程表 142

37、0014205進程進程 314212進程進程 214216進程進程 00現(xiàn)在時間現(xiàn)在時間142001421601421214205現(xiàn)在時間現(xiàn)在時間進程表進程表01232.5 2.5 組通信組通信2.5.1 2.5.1 組通信的引入組通信的引入 組組及其主要性質(zhì)及其主要性質(zhì) 組:組是指在某系統(tǒng)或用戶指定方式下協(xié)同工作的多個進組:組是指在某系統(tǒng)或用戶指定方式下協(xié)同工作的多個進程的集合。程的集合。 主要性質(zhì):當一條消息發(fā)送到該組后,組內(nèi)的所有成員都主要性質(zhì):當一條消息發(fā)送到該組后,組內(nèi)的所有成員都能收到該消息。能收到該消息。 三種通信方式:多點傳送、廣播通信和單點傳送。三種通信方式:多點傳送、廣播通

38、信和單點傳送。 SRSRRRRRRRR2.5 2.5 組通信組通信2.5.2 2.5.2 設計的問題設計的問題 封閉組與開放組封閉組與開放組 封閉組:只允許組內(nèi)成員給該組發(fā)送消息,組外成員不能封閉組:只允許組內(nèi)成員給該組發(fā)送消息,組外成員不能向作為一個整體的組發(fā)送消息。并行系統(tǒng),如象棋游戲。向作為一個整體的組發(fā)送消息。并行系統(tǒng),如象棋游戲。 開放組:系統(tǒng)內(nèi)任何進程可以給任何組發(fā)送消息,如復制開放組:系統(tǒng)內(nèi)任何進程可以給任何組發(fā)送消息,如復制服務器。服務器。 不允許不允許進程不是進程不是組的成員組的成員封閉組封閉組允許允許進程不是進程不是組的成員組的成員開放組開放組2.5 2.5 組通信組通信2

39、.5.2 2.5.2 設計的問題設計的問題 對等組與分層組對等組與分層組 對等組:所有進程地位相同,做決定需組內(nèi)成員表決。對等組:所有進程地位相同,做決定需組內(nèi)成員表決。 分層組:分層組:由協(xié)調(diào)者負責作出決定。由協(xié)調(diào)者負責作出決定。 對等組對等組分層組分層組協(xié)調(diào)者協(xié)調(diào)者工作人員工作人員優(yōu)點:對稱的,沒有單點故障優(yōu)點:對稱的,沒有單點故障缺點:組內(nèi)要做出決定更為復雜缺點:組內(nèi)要做出決定更為復雜優(yōu)點:組內(nèi)要做出決定簡單優(yōu)點:組內(nèi)要做出決定簡單缺點:單點故障缺點:單點故障2.5 2.5 組通信組通信2.5.2 2.5.2 設計的問題設計的問題 組的成員組的成員 組管理:組管理:使用組服務器使用組服務

40、器分布式方法管理組內(nèi)成員分布式方法管理組內(nèi)成員 兩個帶欺騙性的問題兩個帶欺騙性的問題 區(qū)分組成員自愿離開和崩潰區(qū)分組成員自愿離開和崩潰加入與離開一個組與發(fā)送的消息同步加入與離開一個組與發(fā)送的消息同步2.5 2.5 組通信組通信2.5.2 設計的問題設計的問題 組的編址組的編址 給每個組一個唯一的地址,有三種實現(xiàn)方法:給每個組一個唯一的地址,有三種實現(xiàn)方法:進程進程0 0向包括進程向包括進程1 1,3 3,4 4的進程組發(fā)消息的進程組發(fā)消息0123401234內(nèi)核丟棄消息內(nèi)核丟棄消息多點傳送多點傳送01234單單點傳送點傳送廣播廣播傳送傳送2.5 2.5 組通信組通信2.5.2 2.5.2 設計

41、的問題設計的問題 組的編址組的編址 發(fā)送者提供一個所有目的地址的顯示列表發(fā)送者提供一個所有目的地址的顯示列表不透明;一旦組成員改變,用戶進程必須更新器組成員不透明;一旦組成員改變,用戶進程必須更新器組成員列表列表。 判定編址判定編址每條消息包含一個需要計算的判定每條消息包含一個需要計算的判定是一個布爾表達式,涉及到接收者的機器號、它的局部是一個布爾表達式,涉及到接收者的機器號、它的局部變量或其他因素。變量或其他因素。布爾表達式為布爾表達式為TRUE,則消息被接收。如果為,則消息被接收。如果為FALSE,則消息被丟棄。則消息被丟棄。2.5 2.5 組通信組通信2.5.2 2.5.2 設計的問題設計的問題 發(fā)送和接收原語發(fā)送和接收原語如何將點對點通信和組通信融于一個單獨的原語集之中。如何將點對點通信和組通信融于一個單獨的原語集之中。采用單向通信模型采用單向通信模型send和和receive的顯示調(diào)用。系統(tǒng)根據(jù)的顯示調(diào)用。系統(tǒng)根據(jù)地址地址 (進程地址或者組地址)區(qū)分。(進程地址或者組地址)區(qū)分。一些系統(tǒng)引入新的庫例程一些系統(tǒng)引入新的庫例程 group_send group_receive原子性原子性 原子性:當一條消息發(fā)給一個組后,要么該組的所有成員原子性:當一條消息發(fā)給一個組后,要么該組的所有成員都收到,要么均未收到。都收到,

溫馨提示

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

評論

0/150

提交評論