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

下載本文檔

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

文檔簡介

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

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

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

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

5、統(tǒng),由一組協(xié)同進(jìn)程組成,這組進(jìn)程稱由一組協(xié)同進(jìn)程組成,這組進(jìn)程稱為服務(wù)器為服務(wù)器(server),為用戶提供服務(wù)的進(jìn)程稱為客戶,為用戶提供服務(wù)的進(jìn)程稱為客戶(client). 客戶和服務(wù)器都運行在相同的微內(nèi)核中??蛻艉头?wù)器都運行在相同的微內(nèi)核中。 客戶和服務(wù)器都以用戶進(jìn)程方式運行,客戶和服務(wù)器都以用戶進(jìn)程方式運行, 一臺機(jī)器可以一臺機(jī)器可以運行于單個進(jìn)程、多個客戶、多個服務(wù)器或者兩者的運行于單個進(jìn)程、多個客戶、多個服務(wù)器或者兩者的混合?;旌?。2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.1 2.3.1 客戶機(jī)和服務(wù)器客戶機(jī)和服務(wù)器通信特點通信特點 客戶服務(wù)器模式通常以簡單的面向非連

6、接的請求客戶服務(wù)器模式通常以簡單的面向非連接的請求/應(yīng)答協(xié)應(yīng)答協(xié)議為基礎(chǔ)。通信服務(wù)可以簡化為由微內(nèi)核提供的兩個系統(tǒng)調(diào)用,議為基礎(chǔ)。通信服務(wù)可以簡化為由微內(nèi)核提供的兩個系統(tǒng)調(diào)用,一個是負(fù)責(zé)發(fā)送報文:一個是負(fù)責(zé)發(fā)送報文:send(dest,&mptr ),一個是負(fù)責(zé)接,一個是負(fù)責(zé)接收報文收報文:receive(addr,&mptr)。內(nèi)核內(nèi)核客戶客戶內(nèi)核內(nèi)核服務(wù)服務(wù)網(wǎng)絡(luò)網(wǎng)絡(luò)應(yīng)答應(yīng)答請求請求物理層物理層數(shù)據(jù)鏈路層數(shù)據(jù)鏈路層請求請求/應(yīng)答應(yīng)答12345672.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.2 2.3.2 一個簡化的客戶機(jī)、服務(wù)器程序例子一個簡化的客戶機(jī)、服務(wù)器程序例子 CLIEN

7、TCLIENT do send(FILE_SERVER, m1); receive(client, &m1); while() SERVERSERVER while (1) . receive(FILE_SERVER,&m1); send(m1.source, &m2); . 2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式 很多存取數(shù)據(jù)庫的應(yīng)用可采用分層的結(jié)構(gòu):很多存取數(shù)據(jù)庫的應(yīng)用可采用分層的結(jié)構(gòu): The user-interface level The processing level The data level 2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.3 2.3.3

8、尋址尋址機(jī)器機(jī)器.進(jìn)程編址方式進(jìn)程編址方式 機(jī)器號和進(jìn)程號,機(jī)器號用于使內(nèi)核將消息正確地發(fā)送機(jī)器號和進(jìn)程號,機(jī)器號用于使內(nèi)核將消息正確地發(fā)送到適當(dāng)?shù)臋C(jī)器上。進(jìn)程號用來使內(nèi)核決定消息要給哪一個進(jìn)到適當(dāng)?shù)臋C(jī)器上。進(jìn)程號用來使內(nèi)核決定消息要給哪一個進(jìn)程。機(jī)器號程。機(jī)器號+端口號與此類似。端口號與此類似。內(nèi)核內(nèi)核C內(nèi)核內(nèi)核S1:請求:請求243.0212:給:給199.0響應(yīng)響應(yīng)2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.3 2.3.3 尋址尋址帶有廣播的進(jìn)程編址帶有廣播的進(jìn)程編址 進(jìn)程在相當(dāng)大且專用的地址空間中選擇自己的標(biāo)識號。發(fā)送者廣播一進(jìn)程在相當(dāng)大且專用的地址空間中選擇自己的標(biāo)識號。

9、發(fā)送者廣播一個特殊的定位包,包含目的進(jìn)程的地址,所有內(nèi)核檢查并察看地址是不是個特殊的定位包,包含目的進(jìn)程的地址,所有內(nèi)核檢查并察看地址是不是它們的,如果是回答它們的,如果是回答“我在這里我在這里”消息給出網(wǎng)絡(luò)地址,發(fā)送內(nèi)核使用這個消息給出網(wǎng)絡(luò)地址,發(fā)送內(nèi)核使用這個地址并地址并“記住記住”它。例如它。例如Peer to Peer. CS1:廣播:廣播432:“我在這里我在這里”123:請求:請求4:應(yīng)答:應(yīng)答2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.3 2.3.3 尋址尋址通過名字服務(wù)器進(jìn)行地址查詢通過名字服務(wù)器進(jìn)行地址查詢 在客戶機(jī)中存放在客戶機(jī)中存放ASCII服務(wù)器的名字,每次

10、客戶機(jī)運行時,首先試圖服務(wù)器的名字,每次客戶機(jī)運行時,首先試圖使用服務(wù)器,客戶機(jī)發(fā)出一請求消息給一個特殊映射服務(wù)器,(常常稱為使用服務(wù)器,客戶機(jī)發(fā)出一請求消息給一個特殊映射服務(wù)器,(常常稱為名字服務(wù)器)問一個目前服務(wù)器所在的機(jī)器號,有了這個地址后,可以直名字服務(wù)器)問一個目前服務(wù)器所在的機(jī)器號,有了這個地址后,可以直接發(fā)送請求。例如接發(fā)送請求。例如 域名服務(wù)。域名服務(wù)。名字服務(wù)器名字服務(wù)器SC1:查找:查找2:NS應(yīng)答應(yīng)答NS1:請求:請求2:應(yīng)答:應(yīng)答1234網(wǎng)絡(luò)網(wǎng)絡(luò)2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.32.3.3 尋址尋址進(jìn)程編址方法總結(jié)進(jìn)程編址方法總結(jié) 在客戶機(jī)代碼中

11、指明機(jī)器在客戶機(jī)代碼中指明機(jī)器.號;號; 讓進(jìn)程選擇隨機(jī)地址,用廣播定位進(jìn)程。讓進(jìn)程選擇隨機(jī)地址,用廣播定位進(jìn)程。 在客戶機(jī)中存放在客戶機(jī)中存放ASCII服務(wù)器名字,運行時尋找它。服務(wù)器名字,運行時尋找它。三種方法的缺點:三種方法的缺點: 機(jī)器機(jī)器.進(jìn)程編址方式:不透明進(jìn)程編址方式:不透明 帶有廣播的進(jìn)程編址:給系統(tǒng)造成額外負(fù)擔(dān)帶有廣播的進(jìn)程編址:給系統(tǒng)造成額外負(fù)擔(dān) 通過名字服務(wù)器進(jìn)行地址查詢:需要一個中間部件通過名字服務(wù)器進(jìn)行地址查詢:需要一個中間部件名名字服務(wù)器。字服務(wù)器。 思考題:比較三種尋址方法,并給出相應(yīng)的你熟悉的例子。思考題:比較三種尋址方法,并給出相應(yīng)的你熟悉的例子。 2.3 2

12、.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.4 2.3.4 阻塞與非阻塞原語阻塞與非阻塞原語阻塞原語阻塞原語 阻塞的阻塞的Send:阻塞直到消息傳送完畢阻塞直到消息傳送完畢. 阻塞的阻塞的Receive: 阻塞直到消息被實際接收并放入由參數(shù)指阻塞直到消息被實際接收并放入由參數(shù)指定的消息緩沖區(qū)定的消息緩沖區(qū). 客戶阻塞客戶阻塞消息被發(fā)送消息被發(fā)送從內(nèi)核返回,從內(nèi)核返回,進(jìn)程釋放進(jìn)程釋放陷阱內(nèi)核陷阱內(nèi)核阻塞進(jìn)程阻塞進(jìn)程客戶運行客戶運行客戶運行客戶運行2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.4 2.3.4 阻塞與非阻塞原語阻塞與非阻塞原語非阻塞原語非阻塞原語 非阻塞的非阻塞的Sen

13、d:消息發(fā)送前取得控制權(quán)消息發(fā)送前取得控制權(quán). 非阻塞的非阻塞的Receive:告訴內(nèi)核消息緩沖區(qū)的位置告訴內(nèi)核消息緩沖區(qū)的位置,立即取得控立即取得控制權(quán)制權(quán).2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.4 2.3.4 阻塞與非阻塞原語阻塞與非阻塞原語非阻塞原語非阻塞原語 缺點缺點在消息被發(fā)送之前,發(fā)送者不能修改消息緩沖區(qū)。后繼的在消息被發(fā)送之前,發(fā)送者不能修改消息緩沖區(qū)。后繼的進(jìn)程在傳輸過程中可能覆蓋該消息進(jìn)程在傳輸過程中可能覆蓋該消息 。發(fā)送進(jìn)程不知道傳送何時進(jìn)行,它無法知道何時重新使用發(fā)送進(jìn)程不知道傳送何時進(jìn)行,它無法知道何時重新使用緩沖區(qū)。緩沖區(qū)。2.3 2.3 客戶機(jī)服務(wù)

14、器模式客戶機(jī)服務(wù)器模式解決方法解決方法內(nèi)核將消息拷貝到內(nèi)部緩沖區(qū),其后允許進(jìn)程繼續(xù)執(zhí)行。內(nèi)核將消息拷貝到內(nèi)部緩沖區(qū),其后允許進(jìn)程繼續(xù)執(zhí)行。 當(dāng)消息發(fā)送后,中斷發(fā)送者并通知它緩沖區(qū)可用。當(dāng)消息發(fā)送后,中斷發(fā)送者并通知它緩沖區(qū)可用。 返回返回陷阱陷阱客戶運行客戶運行客戶運行客戶運行消息被發(fā)送消息被發(fā)送客戶阻塞客戶阻塞消息拷貝到消息拷貝到內(nèi)核緩沖內(nèi)核緩沖時間時間2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.5 2.3.5 有緩沖和無緩沖原語有緩沖和無緩沖原語無緩沖原語無緩沖原語 調(diào)用調(diào)用receive(addr,&m) ,通知機(jī)器內(nèi)核,調(diào)用的進(jìn)程正在監(jiān),通知機(jī)器內(nèi)核,調(diào)用的進(jìn)程正在監(jiān)聽地址

15、聽地址addr,m指出消息緩沖區(qū),用于保存?zhèn)魉瓦^來的消息指出消息緩沖區(qū),用于保存?zhèn)魉瓦^來的消息。 內(nèi)核內(nèi)核C內(nèi)核內(nèi)核A S客戶客戶對應(yīng)一個進(jìn)對應(yīng)一個進(jìn)程的地址程的地址服務(wù)器服務(wù)器2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.5 2.3.5 有緩沖和無緩沖原語有緩沖和無緩沖原語無緩沖原語無緩沖原語 缺點缺點 如果在客戶機(jī)調(diào)用如果在客戶機(jī)調(diào)用send原語之后調(diào)用原語之后調(diào)用receive原語,或服務(wù)原語,或服務(wù)器正忙于處理其它客戶的請求,無法正常接收消息。器正忙于處理其它客戶的請求,無法正常接收消息。 解決方法解決方法丟棄消息,使客戶機(jī)超時,并希望服務(wù)器在客戶機(jī)傳送前丟棄消息,使客戶機(jī)超

16、時,并希望服務(wù)器在客戶機(jī)傳送前調(diào)用接收原語。調(diào)用接收原語。 讓接收內(nèi)核在短時間內(nèi)保存到來的消息。讓接收內(nèi)核在短時間內(nèi)保存到來的消息。 2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.5 2.3.5 有緩沖和無緩沖原語有緩沖和無緩沖原語有緩沖原語有緩沖原語 對接收消息感興趣的進(jìn)程讓內(nèi)核為之建立一個郵箱。所有對接收消息感興趣的進(jìn)程讓內(nèi)核為之建立一個郵箱。所有具有該地址的輸入消息被放入郵箱中,調(diào)用具有該地址的輸入消息被放入郵箱中,調(diào)用receive時只要從郵時只要從郵箱中取出一條消息。箱中取出一條消息。 內(nèi)核內(nèi)核CS對應(yīng)一個郵箱對應(yīng)一個郵箱的地址的地址A網(wǎng)絡(luò)網(wǎng)絡(luò)2.3 2.3 客戶機(jī)服務(wù)器模

17、式客戶機(jī)服務(wù)器模式2.3.6 2.3.6 可靠和非可靠原語可靠和非可靠原語如何保證消息被成功發(fā)送如何保證消息被成功發(fā)送重新定義非可靠的重新定義非可靠的send語義。系統(tǒng)無法保證消息成功發(fā)送,語義。系統(tǒng)無法保證消息成功發(fā)送,完成可靠的通信依賴于用戶。完成可靠的通信依賴于用戶。要求接收機(jī)器的內(nèi)核給發(fā)送機(jī)器的內(nèi)核發(fā)送一個確認(rèn)消息。要求接收機(jī)器的內(nèi)核給發(fā)送機(jī)器的內(nèi)核發(fā)送一個確認(rèn)消息。 客戶客戶服務(wù)器服務(wù)器31421.請求(客戶向服務(wù)器)請求(客戶向服務(wù)器)2.ACK(內(nèi)核給內(nèi)核)(內(nèi)核給內(nèi)核)3.應(yīng)答(服務(wù)器向客戶)應(yīng)答(服務(wù)器向客戶)4.ACK(內(nèi)核給內(nèi)核)(內(nèi)核給內(nèi)核)2.3 2.3 客戶機(jī)服務(wù)器

18、模式客戶機(jī)服務(wù)器模式2.3.6 2.3.6 可靠和非可靠原語可靠和非可靠原語如何保證消息被成功發(fā)送如何保證消息被成功發(fā)送 客戶機(jī)在發(fā)送消息后阻塞,服務(wù)器的內(nèi)核不發(fā)送確認(rèn)消息,客戶機(jī)在發(fā)送消息后阻塞,服務(wù)器的內(nèi)核不發(fā)送確認(rèn)消息,而是將應(yīng)答作為確認(rèn)消息。而是將應(yīng)答作為確認(rèn)消息。 折衷方案折衷方案 當(dāng)一個請求到達(dá)服務(wù)器內(nèi)核,計時器啟動,如果服務(wù)當(dāng)一個請求到達(dá)服務(wù)器內(nèi)核,計時器啟動,如果服務(wù)器能很快給出應(yīng)答,這個應(yīng)答就是確認(rèn)消息。否則,單獨器能很快給出應(yīng)答,這個應(yīng)答就是確認(rèn)消息。否則,單獨發(fā)送確認(rèn)消息。發(fā)送確認(rèn)消息??蛻舴?wù)器2131.請求(客戶向服務(wù)器) 2.應(yīng)答(服務(wù)器向客戶) 3.ACK(內(nèi)核給

19、內(nèi)核)2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.7 2.3.7 客戶機(jī)客戶機(jī)- -服務(wù)器模式的實現(xiàn)服務(wù)器模式的實現(xiàn)四個設(shè)計問題的選擇四個設(shè)計問題的選擇 思考題:在采用了名字尋址,并采用了阻塞、有緩沖和可靠通信原語的情況下,系統(tǒng)是如何工作的。項目項目選擇選擇1選擇選擇2選擇選擇3尋址尋址機(jī)器數(shù)目機(jī)器數(shù)目共享進(jìn)程地址共享進(jìn)程地址ASCII名字通過服務(wù)名字通過服務(wù)器查找器查找阻塞阻塞阻塞原語阻塞原語具有拷貝到核的非阻塞具有拷貝到核的非阻塞具有中斷的非阻塞具有中斷的非阻塞緩沖緩沖無緩沖,丟棄不無緩沖,丟棄不希望的消息希望的消息無緩沖,臨時保持不期望無緩沖,臨時保持不期望的消息的消息郵箱郵

20、箱可靠性可靠性非可靠非可靠請求請求-確認(rèn)確認(rèn)-應(yīng)答確認(rèn)應(yīng)答確認(rèn)請求請求-應(yīng)答應(yīng)答-確認(rèn)確認(rèn)34=81種組合種組合 2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.7 2.3.7 客戶機(jī)客戶機(jī)- -服務(wù)器模式的實現(xiàn)服務(wù)器模式的實現(xiàn)大報文傳輸問題大報文傳輸問題將大報文分成多個包分別傳遞,給每個報文分配一個報文號,并將大報文分成多個包分別傳遞,給每個報文分配一個報文號,并將該報文號放入屬于這個報文的包中,有一系列的數(shù)字給出信包將該報文號放入屬于這個報文的包中,有一系列的數(shù)字給出信包的順序。的順序。確認(rèn)消息確認(rèn)消息對每個單獨的包進(jìn)行確認(rèn)。優(yōu)點:如果一個包丟失,僅僅這個包對每個單獨的包進(jìn)行確認(rèn)。

21、優(yōu)點:如果一個包丟失,僅僅這個包需要重新傳遞。缺點:網(wǎng)絡(luò)上會有更多的包。需要重新傳遞。缺點:網(wǎng)絡(luò)上會有更多的包。僅僅對一個報文確認(rèn)。優(yōu)點:信包少。缺點:一旦包丟失,恢復(fù)僅僅對一個報文確認(rèn)。優(yōu)點:信包少。缺點:一旦包丟失,恢復(fù)起來更復(fù)雜。起來更復(fù)雜。2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.7 2.3.7 客戶機(jī)客戶機(jī)- -服務(wù)器模式的實現(xiàn)服務(wù)器模式的實現(xiàn)客戶客戶-服務(wù)器協(xié)議中的包類型服務(wù)器協(xié)議中的包類型代碼代碼包類型包類型 來源來源 至至說明說明REQ請求請求客戶客戶 服務(wù)器服務(wù)器客戶要求服務(wù)客戶要求服務(wù)REP應(yīng)答應(yīng)答服務(wù)器服務(wù)器客戶客戶 服務(wù)器對客戶的應(yīng)答服務(wù)器對客戶的應(yīng)答AC

22、K確認(rèn)確認(rèn)服務(wù)器、客戶服務(wù)器、客戶其他其他前面的包已到達(dá)前面的包已到達(dá)AYA你在這里嗎?你在這里嗎?客戶客戶服務(wù)器服務(wù)器查看服務(wù)器是否崩潰查看服務(wù)器是否崩潰IAA我在這里我在這里服務(wù)器服務(wù)器客戶客戶服務(wù)器沒有崩潰服務(wù)器沒有崩潰TA再試一次?再試一次?服務(wù)器服務(wù)器客戶客戶服務(wù)器沒有空間服務(wù)器沒有空間AU地址未知地址未知服務(wù)器服務(wù)器客戶客戶沒有進(jìn)程再使用此地址沒有進(jìn)程再使用此地址2.3 2.3 客戶機(jī)服務(wù)器模式客戶機(jī)服務(wù)器模式2.3.7 2.3.7 客戶機(jī)客戶機(jī)- -服務(wù)器模式的實現(xiàn)服務(wù)器模式的實現(xiàn)客戶客戶-服務(wù)器通信使用的包交換示例服務(wù)器通信使用的包交換示例服務(wù)器服務(wù)器客戶客戶REQ REP服務(wù)

23、器服務(wù)器客戶客戶REQ REPACK服務(wù)器服務(wù)器客戶客戶REQ ACKACK REP服務(wù)器服務(wù)器客戶客戶REQ ACKAYA IAA REPACK思考題:這個圖的含義是什么2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.1 2.4.1 基本基本RPCRPC操作操作RPC的產(chǎn)生:透明地訪問分布式環(huán)境下的資源。的產(chǎn)生:透明地訪問分布式環(huán)境下的資源。RPC與發(fā)展:與發(fā)展:CORBA COM J2EERPC的基本思想:調(diào)用遠(yuǎn)程過程就像調(diào)用本地過程一樣。的基本思想:調(diào)用遠(yuǎn)程過程就像調(diào)用本地過程一樣。 count=read(fd,buf,nbytes); 傳統(tǒng)過程調(diào)用傳統(tǒng)過程調(diào)用主函數(shù)主函數(shù)局部變量局部變

24、量主函數(shù)主函數(shù)局部變量局部變量主函數(shù)主函數(shù)局部變量局部變量Read的局部變量的局部變量返回地址返回地址fdbufbytesSP SP SP 0 0 2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.1 基本基本RPC操作操作RPC中的調(diào)用與消息中的調(diào)用與消息內(nèi)核內(nèi)核客戶客戶調(diào)用調(diào)用返回返回打包打包參數(shù)參數(shù)拆包拆包結(jié)果結(jié)果 拆包拆包參數(shù)參數(shù)打包打包結(jié)果結(jié)果服務(wù)器服務(wù)器內(nèi)核內(nèi)核調(diào)用調(diào)用返回返回客戶存根客戶存根客戶機(jī)客戶機(jī)服務(wù)器存根服務(wù)器存根服務(wù)器服務(wù)器消息通過網(wǎng)絡(luò)傳送消息通過網(wǎng)絡(luò)傳送2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.1 2.4.1 基本基本RPCRPC操作操作 RPC的主要步驟的主要步

25、驟 客戶過程以普通方式調(diào)用相應(yīng)的客戶存根客戶過程以普通方式調(diào)用相應(yīng)的客戶存根; 客戶存根建立消息并激活內(nèi)核陷阱客戶存根建立消息并激活內(nèi)核陷阱; 內(nèi)核將消息發(fā)送給遠(yuǎn)程內(nèi)核內(nèi)核將消息發(fā)送給遠(yuǎn)程內(nèi)核; 遠(yuǎn)程內(nèi)核將消息送到服務(wù)器存根遠(yuǎn)程內(nèi)核將消息送到服務(wù)器存根; 服務(wù)器存根取出消息中的參數(shù)后調(diào)用服務(wù)器存根服務(wù)器存根取出消息中的參數(shù)后調(diào)用服務(wù)器存根; 服務(wù)器完成工作后將結(jié)果返回給服務(wù)器存根服務(wù)器完成工作后將結(jié)果返回給服務(wù)器存根; 服務(wù)器存根將它打包并激活內(nèi)核陷阱服務(wù)器存根將它打包并激活內(nèi)核陷阱; 遠(yuǎn)程內(nèi)核將消息發(fā)送給客戶內(nèi)核遠(yuǎn)程內(nèi)核將消息發(fā)送給客戶內(nèi)核; 客戶內(nèi)核將消息交給客戶存根客戶內(nèi)核將消息交給客戶

26、存根; 客戶存根從消息中取出結(jié)果返回給客戶客戶存根從消息中取出結(jié)果返回給客戶.2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.2 2.4.2 參數(shù)傳遞參數(shù)傳遞 Sum(4,7)遠(yuǎn)程計算遠(yuǎn)程計算 sum447n=sum(4,7)內(nèi)核內(nèi)核sum7 sum(i,j) int i.j; return(i+j);內(nèi)核內(nèi)核Message存根存根客戶機(jī)客戶機(jī)服務(wù)器機(jī)服務(wù)器機(jī)2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.2 2.4.2 參數(shù)傳遞參數(shù)傳遞 數(shù)字、字符格式不同數(shù)字、字符格式不同 例如:例如:IBM mainframes EBCDIC IBM PC ASCII. 方法:方法: 設(shè)計一個網(wǎng)絡(luò)標(biāo)準(zhǔn)或規(guī)

27、范化的格式設(shè)計一個網(wǎng)絡(luò)標(biāo)準(zhǔn)或規(guī)范化的格式 在其它領(lǐng)域的類似的例子在其它領(lǐng)域的類似的例子 CNMARK XML根據(jù)需要轉(zhuǎn)換(在消息中加入格式信息)根據(jù)需要轉(zhuǎn)換(在消息中加入格式信息)2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.2 2.4.2 參數(shù)傳遞參數(shù)傳遞 存根從何處來存根從何處來根據(jù)根據(jù)形式說明形式說明和編碼規(guī)則自動生成和編碼規(guī)則自動生成 #include specification of file_server, version 3.1:long read(in char nameMAX_PATH, out char bufBUF_SIZE,in long bytes, in long

28、 position);long write(in char narneMAX_PATH, in char bufBUF_SIZE,in long bytes, in long position);int create(in charMAX_PATH, in int mode);int delete(in charMAX_PATH);end;如何處理指針如何處理指針通常采用復(fù)制通常采用復(fù)制/恢復(fù)機(jī)制恢復(fù)機(jī)制2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.3 動態(tài)捆綁動態(tài)捆綁 客戶如何定位服務(wù)器客戶如何定位服務(wù)器服務(wù)器向服務(wù)器向Binder注冊,注冊時需要登記服務(wù)器的名字、版注冊,注冊時需要登記服

29、務(wù)器的名字、版本、句柄、唯一標(biāo)識,以便客戶進(jìn)程能尋找到服務(wù)器進(jìn)程。本、句柄、唯一標(biāo)識,以便客戶進(jìn)程能尋找到服務(wù)器進(jìn)程??蛻魪目蛻魪腂inder獲得服務(wù)器句柄獲得服務(wù)器句柄 和唯一標(biāo)識。客戶存根將和唯一標(biāo)識。客戶存根將句柄作為地址,向它發(fā)送消息。句柄作為地址,向它發(fā)送消息。不足之處不足之處: 輸入和輸出接口需要額外的開銷。在大型分布式系統(tǒng)輸入和輸出接口需要額外的開銷。在大型分布式系統(tǒng)中,中,binder會成為系統(tǒng)瓶頸。會成為系統(tǒng)瓶頸。2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.4 2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 客戶無法定位服務(wù)器客戶無法定位服務(wù)器原因:服務(wù)器關(guān)閉,

30、客戶存根過時原因:服務(wù)器關(guān)閉,客戶存根過時解決方法解決方法使用全局變量使用全局變量異常處理機(jī)制異常處理機(jī)制客戶請求消息丟失客戶請求消息丟失解決方法解決方法使用計時器重發(fā)消息。使用計時器重發(fā)消息。2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.4 2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 服務(wù)器應(yīng)答消息丟失服務(wù)器應(yīng)答消息丟失無法區(qū)分請求丟失、應(yīng)答丟失、服務(wù)器太慢。無法區(qū)分請求丟失、應(yīng)答丟失、服務(wù)器太慢。解決方法:解決方法:將請求構(gòu)造成冪等的。將請求構(gòu)造成冪等的。客戶內(nèi)核給要發(fā)送的消息分配一個序號。客戶內(nèi)核給要發(fā)送的消息分配一個序號。 2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4

31、.4 2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 服務(wù)器崩潰服務(wù)器崩潰客戶無法區(qū)分執(zhí)行前或執(zhí)行后崩潰??蛻魺o法區(qū)分執(zhí)行前或執(zhí)行后崩潰。接收接收執(zhí)行執(zhí)行應(yīng)答應(yīng)答REQREP服務(wù)器服務(wù)器接收接收執(zhí)行執(zhí)行REQREP服務(wù)器服務(wù)器crash接收接收REQNOREP服務(wù)器服務(wù)器crash正常狀態(tài)正常狀態(tài)執(zhí)行后崩潰執(zhí)行后崩潰執(zhí)行前崩潰執(zhí)行前崩潰2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.4 2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 服務(wù)器崩潰服務(wù)器崩潰解決方法:解決方法:至少一次語義。等待服務(wù)器重新啟動,然后重發(fā)請求。至少一次語義。等待服務(wù)器重新啟動,然后重發(fā)請求。最多一

32、次語義。立即放棄并報告失敗。最多一次語義。立即放棄并報告失敗。不作任何保證。當(dāng)服務(wù)器崩潰時,客戶得不到任何幫助和保證。不作任何保證。當(dāng)服務(wù)器崩潰時,客戶得不到任何幫助和保證。精確一次語義。不容易實現(xiàn)。精確一次語義。不容易實現(xiàn)。2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 客戶機(jī)崩潰客戶機(jī)崩潰存在孤兒問題存在孤兒問題孤兒:客戶已發(fā)出請求但在應(yīng)答到來之前崩潰了,此時已激活了孤兒:客戶已發(fā)出請求但在應(yīng)答到來之前崩潰了,此時已激活了服務(wù)器中的相應(yīng)計算,但沒有客戶在等待結(jié)果。這樣的計算成為服務(wù)器中的相應(yīng)計算,但沒有客戶在等待結(jié)果。這樣的計算成為孤兒。孤

33、兒。解決方法解決方法根除:客戶存根發(fā)送一個根除:客戶存根發(fā)送一個RPC前在日志文件中記下要執(zhí)行操作的前在日志文件中記下要執(zhí)行操作的信息。當(dāng)客戶重新啟動后,系統(tǒng)檢查日志文件,并準(zhǔn)確清除孤兒。信息。當(dāng)客戶重新啟動后,系統(tǒng)檢查日志文件,并準(zhǔn)確清除孤兒。2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.4 失敗情況下的失敗情況下的RPCRPC語義語義 客戶機(jī)崩潰客戶機(jī)崩潰解決方法解決方法再生:將時間劃分成順序編號的紀(jì)元。當(dāng)一客戶重新啟動時,它向再生:將時間劃分成順序編號的紀(jì)元。當(dāng)一客戶重新啟動時,它向所有機(jī)器廣播一個新紀(jì)元的開始。廣播后,所有遠(yuǎn)程計算被終止。所有機(jī)器廣播一個新紀(jì)元的開始。廣播后,所有遠(yuǎn)程

34、計算被終止。溫和再生:當(dāng)接到客戶開始新紀(jì)元的廣播后,每臺機(jī)器檢查自己是溫和再生:當(dāng)接到客戶開始新紀(jì)元的廣播后,每臺機(jī)器檢查自己是否有遠(yuǎn)程計算,若有則試圖去找到該遠(yuǎn)程計算的調(diào)用者。若沒有找否有遠(yuǎn)程計算,若有則試圖去找到該遠(yuǎn)程計算的調(diào)用者。若沒有找到該計算的調(diào)用者,則終止計算。到該計算的調(diào)用者,則終止計算。過期:每一個過期:每一個RPC執(zhí)行時事先分給一個標(biāo)準(zhǔn)時間段執(zhí)行時事先分給一個標(biāo)準(zhǔn)時間段T 。當(dāng)。當(dāng)T到期而調(diào)到期而調(diào)用未完成時再申請一個用未完成時再申請一個T。如果客戶崩潰,服務(wù)器在客戶重新啟動前。如果客戶崩潰,服務(wù)器在客戶重新啟動前等候了一個等候了一個T后,所有孤兒都被清除。后,所有孤兒都被清

35、除。2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.5 2.4.5 實現(xiàn)的問題實現(xiàn)的問題 RPC協(xié)議族協(xié)議族任何已經(jīng)存在的能夠?qū)崿F(xiàn)從客戶內(nèi)核到服務(wù)器內(nèi)核之間按任何已經(jīng)存在的能夠?qū)崿F(xiàn)從客戶內(nèi)核到服務(wù)器內(nèi)核之間按位傳送的協(xié)議都可以作為位傳送的協(xié)議都可以作為RPC的協(xié)議。的協(xié)議。如何選擇對性能有很大影響如何選擇對性能有很大影響面向連接還是面向非連接的協(xié)議面向連接還是面向非連接的協(xié)議標(biāo)準(zhǔn)的通用協(xié)議還是專門為標(biāo)準(zhǔn)的通用協(xié)議還是專門為RPC設(shè)計的協(xié)議設(shè)計的協(xié)議信包和報文的長度信包和報文的長度2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 確認(rèn)確認(rèn)停等協(xié)議停等協(xié)議 爆發(fā)協(xié)議爆發(fā)協(xié)議0 1 2 30

36、123ACK 0ACK 1ACK 2ACK 30123ACK 0-3Timeclientserverclientserver4k data2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 確認(rèn)確認(rèn)如何處理超限錯誤如何處理超限錯誤如果超限錯誤是由于芯片處理中斷而暫時無法接收信包引起的,如果超限錯誤是由于芯片處理中斷而暫時無法接收信包引起的,發(fā)送者可在發(fā)送兩個信包之間加入一段延遲時間。發(fā)送者可在發(fā)送兩個信包之間加入一段延遲時間。如果超限錯誤是由于芯片的緩沖區(qū)不夠而引起的,如果緩沖區(qū)如果超限錯誤是由于芯片的緩沖區(qū)不夠而引起的,如果緩沖區(qū)容量為容量為n個信包,則可在發(fā)送個信包,

37、則可在發(fā)送n個信包后留一個間隙,或是在個信包后留一個間隙,或是在發(fā)出發(fā)出n個信包后,得到一個確認(rèn)后再發(fā)送后面的包。個信包后,得到一個確認(rèn)后再發(fā)送后面的包。2.4 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(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)用存根過程調(diào)用存根過程準(zhǔn)備消息緩沖區(qū)準(zhǔn)備消息緩沖區(qū)組裝參數(shù)到緩沖區(qū)組裝參數(shù)到緩沖區(qū)填入消息頭信息填入消息頭信息陷阱到內(nèi)核陷阱到內(nèi)核切換到內(nèi)核切換到內(nèi)核將消息拷貝到內(nèi)核將消息拷貝到內(nèi)核確定目的地址確定目的地址將地址放入消息頭將地址放入消息頭啟動網(wǎng)絡(luò)接口啟動網(wǎng)絡(luò)接

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

39、實現(xiàn)的問題實現(xiàn)的問題 拷貝拷貝八次拷貝八次拷貝 客戶存根客戶存根客戶內(nèi)核緩沖區(qū)客戶內(nèi)核緩沖區(qū)客戶接口芯片緩沖區(qū)客戶接口芯片緩沖區(qū)服務(wù)器接口服務(wù)器接口芯片緩沖區(qū)芯片緩沖區(qū)服務(wù)器內(nèi)核緩沖區(qū)服務(wù)器內(nèi)核緩沖區(qū)服務(wù)器存根服務(wù)器存根如果此調(diào)用含有一個大的值參數(shù)組時,還需另外三步拷貝:如果此調(diào)用含有一個大的值參數(shù)組時,還需另外三步拷貝:v將數(shù)組拷入客戶進(jìn)程的堆棧以調(diào)用客戶存根。將數(shù)組拷入客戶進(jìn)程的堆棧以調(diào)用客戶存根。v客戶存根組裝時,將數(shù)組從堆棧拷貝到消息緩沖區(qū)中??蛻舸娓M裝時,將數(shù)組從堆??截惖较⒕彌_區(qū)中。v服務(wù)器存根將數(shù)組從消息中取出,放入服務(wù)器進(jìn)程的堆棧中。服務(wù)器存根將數(shù)組從消息中取出,放入服務(wù)器

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

41、體和消息頭,并放入相應(yīng)的緩沖區(qū)。沖區(qū)。 2.4 遠(yuǎn)程過程調(diào)用遠(yuǎn)程過程調(diào)用2.4.5 實現(xiàn)的問題實現(xiàn)的問題 計時管理計時管理使用排序表使用排序表 使用進(jìn)程表使用進(jìn)程表 1420014205進(jìn)程進(jìn)程 314212進(jìn)程進(jìn)程 214216進(jìn)程進(jìn)程 00現(xiàn)在時間現(xiàn)在時間142001421601421214205現(xiàn)在時間現(xiàn)在時間進(jìn)程表進(jìn)程表01232.5 2.5 組通信組通信2.5.1 2.5.1 組通信的引入組通信的引入 組組及其主要性質(zhì)及其主要性質(zhì)組:組是指在某系統(tǒng)或用戶指定方式下協(xié)同工作的多個進(jìn)程的集合。組:組是指在某系統(tǒng)或用戶指定方式下協(xié)同工作的多個進(jìn)程的集合。如如QQ群通信,網(wǎng)絡(luò)游戲同一個房間內(nèi)

42、的玩家,復(fù)制服務(wù)器等。群通信,網(wǎng)絡(luò)游戲同一個房間內(nèi)的玩家,復(fù)制服務(wù)器等。主要性質(zhì):當(dāng)一條消息發(fā)送到該組后,組內(nèi)的所有成員都能收到該消主要性質(zhì):當(dāng)一條消息發(fā)送到該組后,組內(nèi)的所有成員都能收到該消息。息。通常情況下,加入和退出是自愿的,一個成員可加入多個組。通常情況下,加入和退出是自愿的,一個成員可加入多個組。三種通信方式:多點傳送、廣播通信和單點傳送。三種通信方式:多點傳送、廣播通信和單點傳送。 SRSRRRRRRRR在分布式系統(tǒng)中為什么進(jìn)程間在分布式系統(tǒng)中為什么進(jìn)程間需要通信,你理解了嗎?需要通信,你理解了嗎?2.5 2.5 組通信組通信2.5.2 2.5.2 設(shè)計的問題設(shè)計的問題 封閉組與開

43、放組封閉組與開放組封閉組:只允許組內(nèi)成員給該組發(fā)送消息,組外成員不能封閉組:只允許組內(nèi)成員給該組發(fā)送消息,組外成員不能向作為一個整體的組發(fā)送消息。并行系統(tǒng),如象棋游戲推向作為一個整體的組發(fā)送消息。并行系統(tǒng),如象棋游戲推演。演。開放組:系統(tǒng)內(nèi)任何進(jìn)程可以給任何組發(fā)送消息,如復(fù)制開放組:系統(tǒng)內(nèi)任何進(jìn)程可以給任何組發(fā)送消息,如復(fù)制服務(wù)器。服務(wù)器。 不允許不允許進(jìn)程不是進(jìn)程不是組的成員組的成員封閉組封閉組允許允許進(jìn)程不是進(jìn)程不是組的成員組的成員開放組開放組2.5 2.5 組通信組通信2.5.2 2.5.2 設(shè)計的問題設(shè)計的問題 對等組與分層組對等組與分層組對等組:所有進(jìn)程地位相同,做決定需組內(nèi)成員表決

44、。對等組:所有進(jìn)程地位相同,做決定需組內(nèi)成員表決。 分層組:分層組:由協(xié)調(diào)者負(fù)責(zé)作出決定。由協(xié)調(diào)者負(fù)責(zé)作出決定。(舉一個日常生活中一個班級假期(舉一個日常生活中一個班級假期安排的例子和一個安排的例子和一個Peer to peer計算可信度的例子)計算可信度的例子) 對等組對等組分層組分層組協(xié)調(diào)者協(xié)調(diào)者工作人員工作人員優(yōu)點:對稱的,沒有單點故障優(yōu)點:對稱的,沒有單點故障缺點:組內(nèi)要做出決定更為復(fù)雜缺點:組內(nèi)要做出決定更為復(fù)雜優(yōu)點:組內(nèi)要做出決定簡單優(yōu)點:組內(nèi)要做出決定簡單缺點:單點故障缺點:單點故障2.5 2.5 組通信組通信2.5.2 2.5.2 設(shè)計的問題設(shè)計的問題 組的成員組的成員組管理:

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

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

溫馨提示

  • 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

提交評論