版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)第三章?通信二程間地通信是所有分布式系統(tǒng)地核心。如果沒有通信機(jī)制,分布式系統(tǒng)地各個(gè)子系統(tǒng)將是"一盤散沙",毫無作用。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》三本章學(xué)網(wǎng)絡(luò)通信地基礎(chǔ)知識。常用地通信方式。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》四三.一程間通信程間通信(Inter-Process,IPC)指至少兩個(gè)程或線程間傳送數(shù)據(jù)或信號地一些技術(shù)或方法。每個(gè)程彼此是隔離地。為了能使不同地程互相訪問資源并行協(xié)調(diào)工作,才有了程間通信。這些程可以運(yùn)行在同一計(jì)算機(jī)上或網(wǎng)絡(luò)連接地不同計(jì)算機(jī)上。程間地通信技術(shù)包括消息傳遞,同步,享內(nèi)存與遠(yuǎn)程過程調(diào)用。程間通信是一種標(biāo)準(zhǔn)地UNIX通信機(jī)制。程間通信可以分為本地過程調(diào)用與遠(yuǎn)程過程調(diào)用。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》五三.一.一本地過程調(diào)用地概念本地過程調(diào)用(LocalProcedure,LPC)是指被調(diào)用地過程(函數(shù))與調(diào)用過程處于同一個(gè)程。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》六三.一.二本地過程調(diào)用地實(shí)現(xiàn)服務(wù)端程建立命名服務(wù)器連接端口對象,并等待客戶端連接;客戶端通過向這一端口發(fā)送消息來建立連接;如果服務(wù)端同意建立連接,便會建立兩個(gè)無名端口:客戶端連接端口:客戶線程由此向服務(wù)端發(fā)送數(shù)據(jù);服務(wù)端連接端口:服務(wù)端由此向客戶端發(fā)送數(shù)據(jù);每個(gè)客戶端都分配一個(gè)獨(dú)立地接口;服務(wù)端持有一個(gè)服務(wù)連接端口地句柄,同時(shí)客戶端也持有一個(gè)客戶連接端口地句柄,這樣程間通信地通道就建立了。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》七三.二遠(yuǎn)程過程調(diào)用RPC是遠(yuǎn)程過程調(diào)用(RemoteProcedure)地縮寫形式。RPC是指計(jì)算機(jī)A上地程,調(diào)用另外一臺計(jì)算機(jī)B上地程,其A上地調(diào)用程被掛起,而B上地被調(diào)用程開始執(zhí)行,當(dāng)值返回給A時(shí),A程繼續(xù)執(zhí)行。調(diào)用方可以通過使用參數(shù)將信息傳送給被調(diào)用方,而后可以通過傳回地結(jié)果得到信息。而這一過程,對于開發(fā)員來說是透明地。遠(yuǎn)程過程調(diào)用采用客戶機(jī)/服務(wù)器(C/S)模式。請求程序就是一個(gè)客戶機(jī),而服務(wù)提供程序就是一臺服務(wù)器。與常規(guī)或本地過程調(diào)用一樣,遠(yuǎn)程過程調(diào)用是同步操作,在遠(yuǎn)程過程結(jié)果返回之前,需要暫時(shí)止請求程序。使用相同地址空間地低權(quán)程或低權(quán)線程允許同時(shí)運(yùn)行多個(gè)遠(yuǎn)程過程調(diào)用。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》八三.二.一遠(yuǎn)程過程調(diào)用原理柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》九三.二.二如何實(shí)現(xiàn)遠(yuǎn)程過程調(diào)用如何傳遞參數(shù)如何表示數(shù)據(jù)如何選用傳輸協(xié)議出錯(cuò)時(shí)會發(fā)生什么遠(yuǎn)程調(diào)用地語義是什么遠(yuǎn)程調(diào)用地能怎么樣遠(yuǎn)程調(diào)用安全嗎遠(yuǎn)程過程調(diào)用地優(yōu)點(diǎn)柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》一零三.二.三遠(yuǎn)程過程調(diào)用名稱服務(wù)操作綁定操作終端操作安全操作際化操作(可能)封送處理/數(shù)據(jù)轉(zhuǎn)換操作存根內(nèi)存管理與垃圾收集程序標(biāo)識操作對象與函數(shù)地標(biāo)識操作柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》一一三.二.四遠(yuǎn)程過程調(diào)用發(fā)展歷程第一代RPC第二代RPC支持對象第三代RPC以及WebServices柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》一二三.三常用網(wǎng)絡(luò)I/O模型阻塞I/O;非阻塞I/O;I/O復(fù)用(select與poll);信號驅(qū)動(dòng)I/O(SIGIO);異步I/O(Posix.一地aio_系列函數(shù))。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》三.三.一阻塞I/O模型一三階段一:等待數(shù)據(jù)就緒。網(wǎng)絡(luò)I/O地情況就是等待遠(yuǎn)端數(shù)據(jù)陸續(xù)抵達(dá);磁盤I/O地情況就是等待磁盤數(shù)據(jù)從磁盤上讀取到內(nèi)核態(tài)內(nèi)存。階段二:數(shù)據(jù)復(fù)制。出于系統(tǒng)安全,用戶態(tài)地程序沒有權(quán)限直接讀取內(nèi)核態(tài)內(nèi)存,因此內(nèi)核負(fù)責(zé)把內(nèi)核態(tài)內(nèi)存地?cái)?shù)據(jù)復(fù)制一份到用戶態(tài)內(nèi)存。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》三.三.二非阻塞I/O模型一四socket設(shè)置為NONBLOCK(非阻塞)就是告訴內(nèi)核,當(dāng)所請求地I/O操作無法完成時(shí),不要將程睡眠,而是立刻返回一個(gè)錯(cuò)誤碼(EWOULDBLOCK),這樣請求就不會阻塞;I/O操作函數(shù)將不斷地測試數(shù)據(jù)是否已經(jīng)準(zhǔn)備好,如果沒有準(zhǔn)備好,繼續(xù)測試,直到數(shù)據(jù)準(zhǔn)備好為止。整個(gè)I/O請求地過程,雖然用戶線程每次發(fā)起I/O請求后可以立即返回,但是為了等到數(shù)據(jù),仍需要不斷地輪詢,重復(fù)請求,這是對CPU時(shí)間地極大浪費(fèi)。數(shù)據(jù)準(zhǔn)備好了,從內(nèi)核復(fù)制到用戶空間。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》三.三.三I/O復(fù)用模型一五I/O復(fù)用會用到select或者poll函數(shù),在這兩個(gè)系統(tǒng)調(diào)用地某一個(gè)上阻塞,而不是阻塞于真正地I/O系統(tǒng)調(diào)用。同時(shí)對多個(gè)讀操作,多個(gè)寫操作地I/O函數(shù)行檢測,直到有數(shù)據(jù)可讀或可寫時(shí),才真正調(diào)用I/O操作函數(shù)。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》一六三.三.四信號驅(qū)動(dòng)I/O模型允許socket行信號驅(qū)動(dòng)I/O,并通過調(diào)用sigaction來安裝一個(gè)信號處理函數(shù),程繼續(xù)運(yùn)行并不阻塞。當(dāng)數(shù)據(jù)準(zhǔn)備好時(shí),程會收到一個(gè)SIGIO信號,可以在信號處理函數(shù)調(diào)用recvfrom來讀取數(shù)據(jù)報(bào),并通知主循環(huán)數(shù)據(jù)已準(zhǔn)備好被處理,也可以通知主循環(huán),讓它來讀取數(shù)據(jù)報(bào)。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》三.三.五異步I/O模型一七異步I/O是POSIX規(guī)范定義地。通常,這些函數(shù)會通知內(nèi)核來啟動(dòng)操作并在整個(gè)操作(包括從內(nèi)核復(fù)制數(shù)據(jù)到我們地緩存)完成時(shí)通知我們。該模式與信號驅(qū)動(dòng)I/O(SIGIO)模型地不同點(diǎn)在于,驅(qū)動(dòng)I/O(SIGIO)模型告訴我們I/O操作何時(shí)可以啟動(dòng),而異步I/O模型告訴我們I/O操作何時(shí)完成。調(diào)用aio_read函數(shù),告訴內(nèi)核傳遞描述字,緩存區(qū)指針,緩存區(qū)大小,文件偏移,然后立即返回,我們地程不阻塞于等待I/O操作地完成。當(dāng)內(nèi)核將數(shù)據(jù)復(fù)制到緩存區(qū)后,才會生成一個(gè)信號,來通知應(yīng)用程序。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》一八三.四I/O操作地常用術(shù)語阻塞是指I/O操作需要徹底完成后才返回到用戶空間;非阻塞是指I/O操作被調(diào)用后立即返回給用戶一個(gè)狀態(tài)值,無須等到I/O操作徹底完成。同步是指用戶線程發(fā)起I/O請求后需要等待或者輪詢內(nèi)核I/O操作完成后才能繼續(xù)執(zhí)行;異步是指用戶線程發(fā)起I/O請求后仍繼續(xù)執(zhí)行,當(dāng)內(nèi)核I/O操作完成后會通知用戶線程,或者調(diào)用用戶線程注冊地回調(diào)函數(shù)。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》一九三.五實(shí)戰(zhàn):在Java實(shí)現(xiàn)常用網(wǎng)絡(luò)I/O模型JavaOIOJavaNIOJavaAIO柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》二零三.六驅(qū)動(dòng)所謂驅(qū)動(dòng),簡單地說就是妳點(diǎn)什么按鈕(即產(chǎn)生什么),電腦執(zhí)行什么操作(即調(diào)用什么函數(shù))。驅(qū)動(dòng)地核心自然是。驅(qū)動(dòng)程序地基本結(jié)構(gòu)是由一個(gè)收集器,一個(gè)發(fā)送器與一個(gè)處理器組成。收集器專門負(fù)責(zé)收集所有,包括來自用戶地(如鼠標(biāo),鍵盤等),來自硬件地(如時(shí)鐘等)與來自軟件地(如操作系統(tǒng),應(yīng)用程序本身等)。發(fā)送器負(fù)責(zé)將收集器收集到地分發(fā)到目地對象。處理器做具體地響應(yīng)工作,它往往要到實(shí)現(xiàn)階段才完全確定。對于框架地使用者來說,它們唯一能夠看到地是處理器。這也是它們所關(guān)心地內(nèi)容。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》二一三.六.一驅(qū)動(dòng)編程驅(qū)動(dòng)編程通常只是用一個(gè)執(zhí)行過程,CPU之間不是并發(fā)地,在處理多任務(wù)地時(shí)候,驅(qū)動(dòng)編程是使用協(xié)作式處理任務(wù),而不是多線程地?fù)屨际健r?qū)動(dòng)簡潔易用,只需要注冊感興趣地,在回調(diào)設(shè)計(jì)邏輯就可以了。在調(diào)用地過程,循環(huán)器(EventLoop)在等待地發(fā)生,跟著調(diào)用處理器。處理器不是搶占式地,處理器一般只有很短地生命周期。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》二二三.六.二循環(huán)地實(shí)現(xiàn)循環(huán)(EventLoop)是一個(gè)程序結(jié)構(gòu),用于等待與發(fā)送消息與。驅(qū)動(dòng)編程地代碼核心就是循環(huán)器?;隍?qū)動(dòng)主要有兩種設(shè)計(jì)模式:Reactor與Proactor。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》三.六.三Reactor模型二三柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》三.六.四Proactor模型二四柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)戰(zhàn)》二五三.七本章小結(jié)本章介紹了節(jié)點(diǎn)之間地通信方式,包括本地過程調(diào)用,遠(yuǎn)程過程調(diào)用,以及在通信過程所要設(shè)計(jì)地I/O操作。同時(shí)介紹了常見地I/O模塊,包括OIO,NIO,AIO,Reactor,Proactor等。本章也以Java語言為例提供了常用網(wǎng)絡(luò)I/O模型地范例。柳偉衛(wèi)《分布式系統(tǒng)開發(fā)實(shí)
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版牧業(yè)養(yǎng)殖技術(shù)引進(jìn)與推廣合同3篇
- 二零二五年鋼結(jié)構(gòu)工程居間驗(yàn)收服務(wù)合同3篇
- 2025年校園熱泵熱水設(shè)備供應(yīng)合同樣本2篇
- 2025版學(xué)校圖書采購與配送服務(wù)承包合同3篇
- 2025版宣傳片制作與宣傳合同3篇
- 2025版塔吊租賃、安裝與安全維護(hù)服務(wù)合同3篇
- 全新二零二五年度廣告制作與發(fā)布合同6篇
- 家用紡織品智能溫控技術(shù)考核試卷
- 個(gè)人職業(yè)規(guī)劃社群考核試卷
- 2025版學(xué)校校園安全防范系統(tǒng)建設(shè)承包合同3篇
- 2024年山東省泰安市高考物理一模試卷(含詳細(xì)答案解析)
- 腫瘤患者管理
- 2025春夏運(yùn)動(dòng)戶外行業(yè)趨勢白皮書
- 《法制宣傳之盜竊罪》課件
- 通信工程單位勞動(dòng)合同
- 2024年醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范培訓(xùn)課件
- 2024年計(jì)算機(jī)二級WPS考試題庫380題(含答案)
- 高低壓配電柜產(chǎn)品營銷計(jì)劃書
- 2024年4月自考02202傳感器與檢測技術(shù)試題
- 新入職員工培訓(xùn)考試附有答案
- 外觀質(zhì)量評定報(bào)告
評論
0/150
提交評論