![分布式系統(tǒng)教學(xué)課件DOSCH4Commv15_第1頁](http://file4.renrendoc.com/view/5a4fa63d7b09a6e2857b714f4ed27dc1/5a4fa63d7b09a6e2857b714f4ed27dc11.gif)
![分布式系統(tǒng)教學(xué)課件DOSCH4Commv15_第2頁](http://file4.renrendoc.com/view/5a4fa63d7b09a6e2857b714f4ed27dc1/5a4fa63d7b09a6e2857b714f4ed27dc12.gif)
![分布式系統(tǒng)教學(xué)課件DOSCH4Commv15_第3頁](http://file4.renrendoc.com/view/5a4fa63d7b09a6e2857b714f4ed27dc1/5a4fa63d7b09a6e2857b714f4ed27dc13.gif)
![分布式系統(tǒng)教學(xué)課件DOSCH4Commv15_第4頁](http://file4.renrendoc.com/view/5a4fa63d7b09a6e2857b714f4ed27dc1/5a4fa63d7b09a6e2857b714f4ed27dc14.gif)
![分布式系統(tǒng)教學(xué)課件DOSCH4Commv15_第5頁](http://file4.renrendoc.com/view/5a4fa63d7b09a6e2857b714f4ed27dc1/5a4fa63d7b09a6e2857b714f4ed27dc15.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第4章 分布式通信管理 第1頁,共124頁。2主要內(nèi)容4.1 分層通信協(xié)議4.2 遠(yuǎn)程過程調(diào)用(RPC)4.3 面向消息的通信4.4 *面向流的通信4.5 分組通信與多播通信4.6 *遠(yuǎn)程對(duì)象調(diào)用(RMI)4.7 習(xí)題第2頁,共124頁。34.1 分層通信協(xié)議開放式系統(tǒng):可按照協(xié)議進(jìn)行通信協(xié)議:消息的格式、內(nèi)容和意義協(xié)議的種類有連接(connection):如,電話無連接(connectionless):如,短信ISO OSI參考模型分層協(xié)議(1983)第3頁,共124頁。4ISO OSI參考模型分層協(xié)議進(jìn)程A進(jìn)程B第4頁,共124頁。5ISO OSI參考模型分層協(xié)議ISO OSI參考模型的特
2、點(diǎn)分層:功能分解。獨(dú)立性。接口(提供功能的操作集):標(biāo)準(zhǔn)化。協(xié)議棧:有序性報(bào)文(message)格式第5頁,共124頁。6基本網(wǎng)絡(luò)協(xié)議物理層位(bit),字節(jié)(byte)電氣的、機(jī)械的、信號(hào)接口例:RJ雙絞線、USB數(shù)據(jù)鏈路層幀(frame)幀頭、幀尾檢錯(cuò)(如,Checksum)第6頁,共124頁。7基本網(wǎng)絡(luò)協(xié)議-鏈路層協(xié)議舉例發(fā)送方和接受方的交互舉例第7頁,共124頁。8基本網(wǎng)絡(luò)協(xié)議網(wǎng)絡(luò)層IP包(IP packet)網(wǎng)址路由(routing)無連接IP協(xié)議(最廣泛的網(wǎng)絡(luò)協(xié)議)傳輸層可靠的通信(不丟失,保證報(bào)序)TCP協(xié)議 有連接的UDP協(xié)議 無連接的第8頁,共124頁。9高層網(wǎng)絡(luò)協(xié)議會(huì)話層會(huì)
3、話(session)控制同步控制:如,檢查點(diǎn)(checkpoint)表示層數(shù)據(jù)的格式和含義:如,記錄定義應(yīng)用層所有應(yīng)用:電子郵件,文件傳輸,遠(yuǎn)程終端等應(yīng)用協(xié)議具體應(yīng)用協(xié)議通用協(xié)議: FTP, HTTP第9頁,共124頁。10網(wǎng)絡(luò)技術(shù)的發(fā)展(1)分組交換(Packet Switching)協(xié)議Dr.L.Kleinrock(MIT),1962ARPANET與InternetIPTO,Dr.J.Licklider(1960),Dr.B.Taylor(1966)Dr.L.Roberts(MIT),BBN公司ARPANET(1969,UCLA,SRI,UCSB,Utah)TCP/IP協(xié)議R.Kahn(M
4、IT,ARPA),V,Cerf(UCLA,Stanford),ARPANET 1970 IEEE通信1974第10頁,共124頁。11網(wǎng)絡(luò)技術(shù)的發(fā)展(2)CDMA協(xié)議與EthernetDr.B.Metcalfe(Harward, MIT,PARC),19733COM,以太網(wǎng)適配器Stanford校園網(wǎng)與LANLeonard Bosack, Sandy Lerner(Stanford),1980-1983Cisco(1984),Cisco路由器第11頁,共124頁。12中間件協(xié)議中間件層(Middleware)獨(dú)立于應(yīng)用的協(xié)議,支持中間件服務(wù)通信協(xié)議(RPC, RMI, CORBA, MPI)安
5、全性協(xié)議(認(rèn)證、授權(quán))分布式事務(wù)處理協(xié)議(提交、封鎖)第12頁,共124頁。13中間件協(xié)議第13頁,共124頁。14中間件通信服務(wù)例:Pony快遞公司時(shí)代的通信存儲(chǔ)-分類-轉(zhuǎn)發(fā)第14頁,共124頁。15中間件通信服務(wù)例:電子郵件系統(tǒng)(提交) (交付) 客戶程序服務(wù)器程序第15頁,共124頁。16通信類型保存方式持久性通信(persistent):發(fā)送方提交的消息一直被持久地存儲(chǔ),直到被交付給接受方瞬時(shí)性通信(transient):當(dāng)傳輸中斷或接收方不活動(dòng)時(shí),則丟棄消息交互方式異步性通信(asynchronous)發(fā)送方提交消息后,可立即執(zhí)行同步性通信(synchronous)發(fā)送方被阻塞,直到
6、得知其消息被接受后,方可繼續(xù)執(zhí)行第16頁,共124頁。17通信持久性和同步性 (1)(a) 持久異步通信 (b)持久同步通信 第17頁,共124頁。18通信持久性和同步性(2)(c) 瞬時(shí)異步通信 (d) 基于接受的瞬時(shí)同步通信第18頁,共124頁。19通信持久性和同步性(3)(e)基于交付的 (f)基于響應(yīng)的 瞬時(shí)同步通信 瞬時(shí)同步通信第19頁,共124頁。204.2 遠(yuǎn)程過程調(diào)用(RPC)像本地子程序一樣,調(diào)用遠(yuǎn)地子程序調(diào)用者和被調(diào)者都不用考慮消息通信舉例:int read(int fd, char * buf, int nbytes);count = read(fd, buf, nbyt
7、es);參數(shù)傳遞call-by-value : 例:fd, nbytescall-by-reference: 例:* buf第20頁,共124頁。21過程調(diào)用中的參數(shù)傳遞參數(shù)傳遞call-by-copy/restore:例,Ada的in-out參數(shù)第21頁,共124頁。22RPC調(diào)用原理第22頁,共124頁。23服務(wù)器基本RPC操作客戶客戶存根程序:主程序端的子程序代理服務(wù)器存根程序:子程序端的主程序代理 OS主程序C存根OS 子程序S存根運(yùn)行系統(tǒng)運(yùn)行系統(tǒng)第23頁,共124頁。24RPC執(zhí)行的主要步驟12345678910第24頁,共124頁。25RPC執(zhí)行的主要步驟客戶過程以普通方式調(diào)用相應(yīng)
8、的客戶存根客戶存根建立消息,然后調(diào)用本地操作系統(tǒng)客戶端操作系統(tǒng)將消息發(fā)送到遠(yuǎn)程操作系統(tǒng)遠(yuǎn)程操作系統(tǒng)將消息送到服務(wù)器存根服務(wù)器存根取出消息中的參數(shù)后調(diào)用服務(wù)器程服務(wù)器完成工作后將結(jié)果返回至服務(wù)器存根服務(wù)器存根將結(jié)果打包成消息,并調(diào)用本地操作系統(tǒng)服務(wù)器操作系統(tǒng)將消息發(fā)送至客戶端操作系統(tǒng)客戶端操作系統(tǒng)將消息交給客戶存根客戶存根從消息中取出結(jié)果返回給客戶第25頁,共124頁。26參數(shù)傳遞參數(shù)編排(marshalling):將參數(shù)裝入消息例:遠(yuǎn)程過程 add(i,j)第26頁,共124頁。27參數(shù)傳遞問題值的傳遞不同編碼表示:ASCII/ UNICODE不同數(shù)字表示:小末端/大末端,補(bǔ)碼/反碼例:x00
9、05,JILL; x5000,JILL; x0005,LLIJL L I J J I L L L L I J(a) X86格式 (b) SPARC格式 (c) 全部逆轉(zhuǎn)的格式 第27頁,共124頁。28參數(shù)傳遞問題引用(指針)的傳遞:禁止傳遞指針/引用策略1:call-by-copy/restore(復(fù)制-還原)策略2:請(qǐng)求被引用的數(shù)據(jù)主程序子程序bufbuf1.copy2.restore第28頁,共124頁。29參數(shù)說明和存根生成例:foobar(char x;float y;int z5) . 基本數(shù)據(jù)結(jié)構(gòu)的規(guī)范化表示 整形:2的補(bǔ)碼,小端 字符型:16位Unicode 浮點(diǎn)型: IEEE
10、 #754局部變量xy5z0z1z2z3z4第29頁,共124頁。30擴(kuò)展RPC模型- 異步RPC(1)(a)傳統(tǒng)的RPC (b)異步RPC異步RPC第30頁,共124頁。31雙異步RPC延期的同步RPC(deferred synchronous RPC)單程RPC(one-way RPC)客戶發(fā)出請(qǐng)求后,不等待服務(wù)器應(yīng)答,立即繼續(xù)執(zhí)行擴(kuò)展RPC模型- 異步RPC(2)第31頁,共124頁。32RPC編程舉例/* 生成RPC程序 - SUN ONC RPC*/rpcgen FILE_RPC.x =編譯結(jié)果 /* 參數(shù)定義 */ FILE_RPC.h FILE_RPC_xdr.c /* 參數(shù)編排
11、和解編程序*/ /* 服務(wù)器端程序 */ FILE_RPC_svc.c /* server存根 */ FILE_RPC_server.c /* 服務(wù)器模版程序 */ /* 客戶端程序 */ FILE_RPC_clnt.c /* client存根 */ FILE_RPC_client.c /* 客戶模版程序 */第32頁,共124頁。33RPC聲明- File_RPC.x #define RPC_ARGSIZE 256#define RPC_RETSIZE 256/* the interface version number */#define uSERVERVERS1/* program nu
12、mber range established by ONC */#define uSERVERPROG 0 x20000051struct CallArg_t char bodyRPC_ARGSIZE; /* RPCs arg data form */struct Return_t char bodyRPC_RETSIZE; /* RPCs arg data form */* program definition*/program SERVERPROG version SERVERVERS Return_t FILE_CREATE(CallArg_t) = 1;Return_t FILE_RE
13、AD(CallArg_t) = 2; Return_t FILE_WRITE(CallArg_t) = 3; Return_t FILE_DEL(CallArg_t) = 4; = uSERVERVERS; = uSERVERPROG;第33頁,共124頁。34RPC服務(wù)器存根程序 - File_RPC_svc.c #include #include FILE_RPC.h.void main2() SVCXPRT *transp; transp = svcudp_create(RPC_ANYSOCK); svc_register(transp, SERVERPROG, SERVERVERS,
14、serverprog_1, IPPROTO_UDP); /* 注冊(cè) */ transp = svctcp_create(RPC_ANYSOCK, 0, 0); svc_register(transp, SERVERPROG, SERVERVERS, serverprog_1, IPPROTO_TCP) ; /* 注冊(cè) */ svc_run(); / 啟動(dòng)RPC exit(1);第34頁,共124頁。35RPC服務(wù)器程序 - File_RPC_server.c static void serverprog_1(struct svc_req * rqstp, SVCXPRT * transp) u
15、nion CallArg_t file_create_1_arg; CallArg_t file_read_1_arg; : argument; char *result; xdrproc_t _xdr_argument, _xdr_result; char *(*local)(char *, struct svc_req *); switch (rqstp-rq_proc) : case FILE_READ: xdr_argument = xdr_CallArg_t; xdr_result = xdr_Return_t; local = (char *(*)(char *,struct sv
16、c_req *) file_read_1_svc;/* 被調(diào)用的子程序*/ break; : default: vcerr_noproc(transp);return; (void) memset(char *)&argument, 0, sizeof (argument); svc_getargs(transp, _xdr_argument, (caddr_t) &argument) result = (*local)(char *)&argument, rqstp); 第35頁,共124頁。36RPC客戶存根程序 - File_RPC_clnt.c ./* Default timeout
17、can be changed using clnt_control() */static struct timeval TIMEOUT = 25, 0 ;Return_t * file_read_1(CallArg_t *argp, CLIENT *clnt) static Return_t res; bzero(char *)&res, sizeof(res);if (clnt_call(clnt, FILE_READ, xdr_CallArg_t, argp, xdr_Return_t, &res, TIMEOUT) != RPC_SUCCESS) return (NULL);return
18、 (&res); .第36頁,共124頁。37RPC客戶程序 - File_RPC_client.c #include #include #include #include FILE_RPC. read(char *file, int position , int nbytes, char *buf) struct param p1; /* 參數(shù)緩沖區(qū) */ p1.offset = position; /* 讀位置 */ p1.count = nbytes; /* 讀長度 */ strcpy(&p1.filename,file) /* 文件名 */ CommonCallArg_t *
19、 argument = (CommonCallArg_t *) p1; hostname=localhost; CLIENT* cl = clnt_create(hostname, SERVERPROG, SERVERVERS, tcp); clnt_control(cl, CLSET_TIMEOUT, (char *) &WS_TIMEOUT); if ( file_read_1(argument, (CLIENT *)cl) 0 ) /*遠(yuǎn)程子程序調(diào)用*/ strcpy(buf, &p1.data); clnt_control(cl, CLSET_FD_CLOSE, NULL); clnt
20、_destroy(cl); 第37頁,共124頁。38DCE RPCDCE(Distributed Computing Environment)DCE RPC目標(biāo)客戶透明地調(diào)用遠(yuǎn)程服務(wù)支持客戶與服務(wù)器的獨(dú)立性不同的語言:C vs. Java不同的平臺(tái):windows, Unix不同的硬件IDL(Interface Definition Language) 接口定義語言第38頁,共124頁。39DCE客戶/服務(wù)器構(gòu)造第39頁,共124頁。40客戶/服務(wù)器程序的編寫IDL編譯器的輸出:頭文件如c語言形式的interface.h客戶存根程序由客戶程序調(diào)用的過程參數(shù)收集、打包、調(diào)用運(yùn)行系統(tǒng)發(fā)送提取應(yīng)答
21、、返回給客戶服務(wù)器存根程序由運(yùn)行系統(tǒng)調(diào)用的過程調(diào)用服務(wù)器過程以完成實(shí)際操作。第40頁,共124頁。41客戶進(jìn)程與服務(wù)器進(jìn)程的綁定端點(diǎn)表服務(wù)器端口號(hào)ftp8080地址表服務(wù)IP地址ftp4第41頁,共124頁。42DCE RPC的執(zhí)行 執(zhí)行過程client存根編排參數(shù),組成消息client機(jī)運(yùn)行庫按照綁定的協(xié)議,向server機(jī)發(fā)送消息server機(jī)運(yùn)行庫按照消息中指定的“端點(diǎn)”,轉(zhuǎn)交消息給server存根server存根解編參數(shù),調(diào)用server程序應(yīng)答過程與上面相反執(zhí)行策略最多一次(at-most-once):不重復(fù)執(zhí)行冪等性(Idempotent):可重復(fù)執(zhí)行,效果相同第42頁,共124頁
22、。434.3 面向消息的通信通信系統(tǒng)的一般結(jié)構(gòu)第43頁,共124頁。44面向消息的瞬時(shí)通信支持TCP/IP的 Berkeley Sockets 原語原語意義Socket創(chuàng)建新的通信端點(diǎn)Bind將本地地址附加(attach)到套接字上Listen宣布已準(zhǔn)備好接受連接Accept在準(zhǔn)備好連接請(qǐng)求之前阻塞調(diào)用方Connect主動(dòng)嘗試確立連接Send通過連接發(fā)送數(shù)據(jù)Receive通過連接接受數(shù)據(jù)Close釋放連接 服務(wù)器調(diào)用 客戶調(diào)用 客戶、 服務(wù)器調(diào)用 客戶、 服務(wù)器調(diào)用第44頁,共124頁。45Berkeley Sockets (2)使用Socket的面向連接的通信模式第45頁,共124頁。46B
23、erkeley Sockets 舉例(1)server程序#include #include #include .int sock_server(char* message ) . struct sockaddr_in addr,; int sock, slave; int len = sizeof(struct sockaddr_in) ; addr.sin_family = AF_INET; addr.sin_port = 80; addr.sin_addr.s_addr = INADDR_ANY ; fd = socket( addr-sa_family, SOCK_STREAM , 0
24、 ) ;/* 創(chuàng)建 */ bind(sock, addr, len );/* 綁定地址 */ listen( sock, 16 ); /* 偵聽連接 */ struct sockaddr_in client ; slave=accept(sock, (struct sockaddr*)& (client), &len ); /* create new slave socket */ recv( slave, buffer, sizeof(ulong), 0 ); put_message(message, buffer); close(sock) /* 關(guān)閉 */第46頁,共124頁。47Ber
25、keley Sockets 舉例(2)client程序#include #include #include .int sock_client (char * message, struct sockaddr_in server ) . struct sockaddr_in addr; int sock; int len; addr.sin_family = AF_INET; addr.sin_port = 80; addr.sin_addr.s_addr = INADDR_ANY ; sock = socket( addr-sa_family, SOCK_STREAM , 0 ) ;/* 創(chuàng)建
26、 */ len = sizeof(struct sockaddr_in) ; connect( sock, (struct sockaddr *)server, &len) ; set_message( buffer, message ) ; sendto(sock, buffer, sizeof(ulong) + message_size(), 0, (struct sockaddr*)server, &len ) close(fd); 第47頁,共124頁。48消息傳遞接口 (MPI)特點(diǎn)提供高層通信,支持并行計(jì)算, 如MPP, COW可靠的底層網(wǎng)絡(luò)支持分組通信,地址(groupID, p
27、rocessID)支持多種通信方式瞬時(shí)異步 MPI_bsend基于收條的瞬時(shí)同步 MPI_send基于交付的瞬時(shí)同步 MPI_ssend基于響應(yīng)的瞬時(shí)同步 MPI_sendrecv第48頁,共124頁。49消息傳遞接口 (MPI)MPI原語原語意義MPI_bsend將要送出的消息追加到本地發(fā)送緩沖區(qū)中MPI_send發(fā)送消息,并等待直到消息復(fù)制到本地或遠(yuǎn)程緩沖區(qū)中為止MPI_ssend 發(fā)送消息,并等待直到對(duì)方開始接受為止MPI_sendrecv發(fā)送消息,并等待直到收到應(yīng)答消息為止MPI_isend傳送要送出消息的引用,隨后繼續(xù)執(zhí)行MPI_issend傳送要送出消息的引用,并等待直到對(duì)方開始接
28、受為止MPI_recv接受消息,如果不存在等待的消息則阻塞MPI_irecv檢查是否有輸入的消息,但是無論有沒有消息都不會(huì)阻塞第49頁,共124頁。50面向消息的持久性通信消息隊(duì)列系統(tǒng)(message queuing System)支持持久異步通信適合于對(duì)傳輸時(shí)間要求寬松的場合,如幾分鐘。不保證消息到達(dá)接收方的時(shí)間,也不保證接收方一定讀取消息松散耦合的通信方式,使用方便面向消息的中間件(MOM, message oriented middleware)第50頁,共124頁。51消息隊(duì)列模型 (1)使用消息隊(duì)列的四種松散耦合通信第51頁,共124頁。52消息隊(duì)列模型 (2)消息隊(duì)列系統(tǒng)的基本接口
29、原語意義Put將消息追加進(jìn)指定隊(duì)列Get調(diào)用進(jìn)程阻塞,直到指定隊(duì)列變?yōu)榉强諡橹?,然后取出?duì)列中的第一個(gè)消息Poll查看指定隊(duì)列中的消息,并且取出隊(duì)列中的第一個(gè)消息。不阻塞調(diào)用進(jìn)程。Notify注冊(cè)一個(gè)處理程序,在有消息進(jìn)入指定隊(duì)列時(shí)調(diào)用該處理程序。第52頁,共124頁。53消息隊(duì)列系統(tǒng)的總體結(jié)構(gòu) (1)隊(duì)列分類源隊(duì)列(source queue):發(fā)送目的隊(duì)列(destination queue):接收隊(duì)列尋址邏輯地址:隊(duì)列名,如steencs.vu.nl網(wǎng)絡(luò)地址:IP地址隊(duì)列管理器發(fā)送/接收中轉(zhuǎn)(relay)第53頁,共124頁。54消息隊(duì)列系統(tǒng)的總體結(jié)構(gòu) (2)隊(duì)列層尋址和網(wǎng)絡(luò)層尋址之間的聯(lián)
30、系第54頁,共124頁。55消息隊(duì)列系統(tǒng)的總體結(jié)構(gòu) (3) 帶有路由器的消息隊(duì)列系統(tǒng)的一般結(jié)構(gòu)第55頁,共124頁。56消息代理器(broker)(1)作用格式轉(zhuǎn)換應(yīng)用層網(wǎng)關(guān)(gateway)實(shí)現(xiàn)規(guī)則數(shù)據(jù)庫轉(zhuǎn)換語言規(guī)則開發(fā)工具第56頁,共124頁。57消息代理器(broker)(2)消息隊(duì)列系統(tǒng)中消息代理器的通用結(jié)構(gòu)第57頁,共124頁。58IBM WebSphare MQ系統(tǒng)以前稱為:MQSeris隊(duì)列管理器(QM)第58頁,共124頁。59消息通道(Message Channel)消息通道:實(shí)現(xiàn)發(fā)送方和接收方QM之間的單向的、可靠的連接消息通道代理(MCA)發(fā)送MCA接收MCA通道代理的啟
31、動(dòng)應(yīng)用程序激活(不透明)消息到達(dá)觸發(fā)器網(wǎng)絡(luò)遠(yuǎn)程啟動(dòng)(控制消息發(fā)送給守護(hù)程序)通道代理的關(guān)閉超時(shí)自動(dòng)關(guān)閉第59頁,共124頁。60通道(Channel)通道代理的屬性.屬性描述Transport type決定要采用的傳輸協(xié)議FIFO delivery表明消息將要按照發(fā)送的次序到達(dá)Message length單個(gè)消息的最大長度Setup retry count指定啟動(dòng)遠(yuǎn)程MCA的最大重試次數(shù)Delivery retriesMCA將收到的消息放入隊(duì)列的最大重試次數(shù)第60頁,共124頁。61消息傳送 (1)MQ隊(duì)列網(wǎng)絡(luò)的結(jié)構(gòu)路由表(routing table):別名(Alias):保持應(yīng)用程序的QM名
32、字引用獨(dú)立性第61頁,共124頁。62消息隊(duì)列接口(MQI)IBM MQSeries MQI:API接口MQI原語原語描述MQopenOpen a (possibly remote) queueMQcloseClose a queueMQputPut a message into an opened queueMQgetGet a message from a (local) queue第62頁,共124頁。634.5* 面向流的通信媒體(media):傳載信息的手段:表示、存儲(chǔ)、傳輸、展示等例:圖像格式:GIF,JPEG,TIF連續(xù)型媒體(continuous representation
33、media)在數(shù)據(jù)項(xiàng)之間存在時(shí)間關(guān)系例:CD:采樣值/1/44100秒,VCD:禎/1/30秒離散型媒體第63頁,共124頁。64數(shù)據(jù)流數(shù)據(jù)流(stream)異步傳輸: delay(0, ) ; delay(傳輸延遲)同步傳輸: delay (0,max等時(shí)(isochronous)傳輸: delay min, max復(fù)雜數(shù)據(jù)流由多個(gè)子數(shù)據(jù)流(substream)組成例:DVD((左聲道,右聲道),視頻,字幕)第64頁,共124頁。65數(shù)據(jù)流 (1)例:在網(wǎng)絡(luò)中兩個(gè)進(jìn)程(source和sink)之間建立一個(gè)流數(shù)據(jù)槽數(shù)據(jù)源第65頁,共124頁。66數(shù)據(jù)流(2)例:在兩個(gè)設(shè)備之間直接建立一個(gè)流第6
34、6頁,共124頁。67數(shù)據(jù)流(3)例:向多臺(tái)設(shè)備多播一個(gè)流過濾器(filter):調(diào)整輸入流的質(zhì)量,以適應(yīng)輸出流的帶寬第67頁,共124頁。68數(shù)據(jù)流QoS (1)流的定義(flow specification)輸入流的特征要求的服務(wù)maximum data unit size (bytes)Token bucket rate (bytes/sec)Toke bucket size (bytes)Maximum transmission rate (bytes/sec)Loss sensitivity (bytes)Loss interval (sec)Burst loss sensitivi
35、ty (data units)Minimum delay noticed (sec)Maximum delay variation (sec)Quality of guarantee第68頁,共124頁。69數(shù)據(jù)流QoS (2)令牌桶(token bucket)算法原理系統(tǒng)以恒定速率生成token,存入令牌桶;應(yīng)用程序從桶中取出token,賦給數(shù)據(jù)單元帶有token的數(shù)據(jù)單元,在網(wǎng)絡(luò)上以恒定速率傳送第69頁,共124頁。70數(shù)據(jù)流的建立(1)QoS協(xié)議 :為QoS參數(shù)保留資源資源預(yù)留協(xié)議(RSVP)RSVP進(jìn)程sender設(shè)置到receiver的路徑,為每個(gè)中間節(jié)點(diǎn)提供流定義;receiver
36、沿著其上流路徑發(fā)保留請(qǐng)求;RSVP進(jìn)程檢查是否有足夠的可用資源,以及是否允許保留第70頁,共124頁。71數(shù)據(jù)流的建立(1)資源保留協(xié)議(RSVP)的基本結(jié)構(gòu)第71頁,共124頁。72數(shù)據(jù)流的同步機(jī)制 (1)流之間的同步例1:立體聲左、右聲道之間的同步audio: 44100HZ - 23s例2:DVD口形同步(音頻、視頻)video: 30HZ - 33ms/禎- 320*240B = 76.8KBaudio: 44100HZ - 44100/30= 1470采樣值 * 2 - 2.94KB帶寬:2.5MB/s - 2.5MB *0.033 = 83.33KB第72頁,共124頁。73數(shù)據(jù)流
37、的同步機(jī)制 (2)在數(shù)據(jù)單元層上的顯式同步讀寫進(jìn)程:讀流數(shù)據(jù)單元,同步寫第73頁,共124頁。74數(shù)據(jù)流的同步機(jī)制(3)由高層接口支持的同步多媒體中間件提供控制接口用戶自定義程序:檢查同步,調(diào)整流速第74頁,共124頁。75數(shù)據(jù)流的同步機(jī)制(4)同步機(jī)制的分布將多個(gè)流多路復(fù)合成一個(gè)單數(shù)據(jù)流例:MPEG-2每個(gè)流轉(zhuǎn)換成由數(shù)據(jù)包(packet)組成的流,每個(gè)包帶有一個(gè)基于90kHZ系統(tǒng)時(shí)鐘的時(shí)間戳將上述流復(fù)合成一個(gè)由變長包組成的程序流。在接受方,多路分解該復(fù)合流按照包上的時(shí)間戳,對(duì)流進(jìn)行同步第75頁,共124頁。764.5 分組通信與多播通信組:由系統(tǒng)或用戶確定的若干個(gè)進(jìn)程的集合組的成員籍(mem
38、bership)通信方式:點(diǎn)到點(diǎn)通信(point-to-point):單播(unicast)一到多通信(one-to-many) : 多播(multicast)、廣播(broadcast)第76頁,共124頁。77組通信的設(shè)計(jì)封閉組與開放組只有組內(nèi)成員之間可以廣播是通信反之,組外進(jìn)程也可以對(duì)組內(nèi)進(jìn)行廣播第77頁,共124頁。78組通信的設(shè)計(jì)對(duì)等組與分層組成員之間的地位是平等的反之,存在控制其它節(jié)點(diǎn)的超級(jí)節(jié)點(diǎn),稱為協(xié)調(diào)者參與者協(xié)調(diào)者第78頁,共124頁。79組通信的設(shè)計(jì)發(fā)送的實(shí)現(xiàn)方式多播:利用網(wǎng)絡(luò)的多播功能廣播:利用網(wǎng)絡(luò)的廣播功能單點(diǎn):利用進(jìn)程間的點(diǎn)到點(diǎn)通信第79頁,共124頁。80組通信的設(shè)計(jì)
39、發(fā)送和接收原語group_sendgroup_receive單程(one-way)模型原子性原子性廣播:一個(gè)消息被所有成員接收到,或者,一個(gè)也沒有接收到。第80頁,共124頁。81組通信的設(shè)計(jì)消息的收發(fā)順序全局時(shí)間順序If ts(m1) ts(m2) then G(m1) G(m2)絕對(duì)的次序一致性時(shí)間順序G(m1) G(m2) 或者 G(m2) G(m1)相對(duì)的次序時(shí)間次序不一致交疊發(fā)送接收次序G(m)表示所有組員接收到消息m的時(shí)間第81頁,共124頁。82組通信的設(shè)計(jì)重疊組例:不一致性問題在不同組之間的進(jìn)行協(xié)調(diào)非常困難可伸縮性例:在互聯(lián)網(wǎng)絡(luò)上,網(wǎng)關(guān)會(huì)在多個(gè)LAN上重復(fù)傳送一個(gè)消息很難在跨網(wǎng)
40、絡(luò)環(huán)境上實(shí)現(xiàn) LAN1 LAN2 LAN3 LAN4G1G2G3G4多播不一致的接收次序重復(fù)傳送消息第82頁,共124頁。83ISIS中的組通信ISIS:康奈爾大學(xué)開發(fā)的工具集(1987)同步類型:(a)同步:同一事件在各處的發(fā)生嚴(yán)格地按照同一時(shí)間(b)松散同步:事件發(fā)生需要一定的時(shí)間,但順序一致(c)虛擬同步:具有因果關(guān)系的事件,必須服從統(tǒng)一次序第83頁,共124頁。84ISIS中的組通信事件類型:因果相關(guān)的(causally-related):如果事件A的發(fā)生影響到事件B的發(fā)生,或反之。并發(fā)的(concurrent):事件A的發(fā)生與事件B的發(fā)生沒有關(guān)系ISIS廣播原語ABCAST:弱同步兩
41、段提交協(xié)議CBCAST:虛擬同步GBCAST:管理組成員的ABCAST通信P1P2P3m1m2第84頁,共124頁。85向量時(shí)鐘(1)因果性(causality):如果事件a,b存在因果關(guān)系。a為因,b為果,則C(a)C(b)Vector Clock如果VC(a)VC(b),則a與b為因果關(guān)系進(jìn)程Pi上的向量時(shí)鐘VCi的基本性質(zhì)VCii=n, 在Pi中發(fā)生了n個(gè)事件VCij=k,Pi已知在Pj中發(fā)生了k個(gè)事件第85頁,共124頁。86向量時(shí)鐘(2)向量修改規(guī)則Pi在執(zhí)行一個(gè)事件之前,Pi執(zhí)行VCiiVCii+1當(dāng)進(jìn)程Pi發(fā)送消息m時(shí),ts(m)=VCi當(dāng)進(jìn)程Pj收到m后,置VCjk=maxVC
42、jk,ts(m)kPi的消息m在進(jìn)程Pk正確遞交的條件:ts(m)i = VCki+1tsmjVCkj for all ij第86頁,共124頁。87CBCAST協(xié)議例1:三個(gè)進(jìn)程A,B, CVA, VB, Vc第87頁,共124頁。88CBCAST應(yīng)用舉例進(jìn)程1的向量 進(jìn)程2-6的向量123456433323675767888888222222111111555555發(fā)送消息例2:6個(gè)進(jìn)程第88頁,共124頁。89應(yīng)用層多播將節(jié)點(diǎn)組織成一個(gè)覆蓋網(wǎng)絡(luò)(overlay network),用來實(shí)現(xiàn)組通信樹型覆蓋網(wǎng)絡(luò)節(jié)點(diǎn)之間只有唯一路徑網(wǎng)狀覆蓋網(wǎng)絡(luò)節(jié)點(diǎn)之間有多條路徑第89頁,共124頁。90應(yīng)用層多
43、播舉例:Chord上的多播樹多播樹構(gòu)建生成一個(gè)多播標(biāo)識(shí)符(mid);/mid為160位密鑰查找結(jié)點(diǎn)succ(mid),將其作為根結(jié)點(diǎn)結(jié)點(diǎn)P加入多播樹P執(zhí)行l(wèi)ookup(mid);Q受到請(qǐng)求后,將P設(shè)為Q的子結(jié)點(diǎn);如果Q第一次收到mid請(qǐng)求,則Q成為轉(zhuǎn)發(fā)器,繼續(xù)轉(zhuǎn)發(fā)請(qǐng)求,直到根結(jié)點(diǎn);第90頁,共124頁。91覆蓋網(wǎng)絡(luò)的性能覆蓋網(wǎng)絡(luò)的鏈接與實(shí)際網(wǎng)絡(luò)層中路由器的鏈接之間的關(guān)系方案1:若A多播消息,,等鏈路會(huì)重復(fù)傳輸方案2: 消除了重復(fù)ABDC方案1ABCD方案2第91頁,共124頁。92多播樹的性能鏈接樹(link tree)計(jì)算數(shù)據(jù)包通過每個(gè)物理鏈接的次數(shù)延長(stretch)或相對(duì)延時(shí)懲罰(re
44、lative delay penalty)兩個(gè)節(jié)點(diǎn)之間的延時(shí)比例:Cost(B-Rb-Ra-Rc-C)=59 Cost (B-Rb-Rd-Rc-C) =47 stretch = 59/47 = 1.255樹開銷傳播消息到所有節(jié)點(diǎn)的總時(shí)間開銷構(gòu)造一棵開銷最小的生成樹第92頁,共124頁。93基于gossip的數(shù)據(jù)通信傳染協(xié)議(epidemic protocol)用于使本地信息在大規(guī)模節(jié)點(diǎn)集合中快速地傳播消息傳播模型基于傳染病理論節(jié)點(diǎn)狀態(tài)感染的(infective):已被更新,并愿意參加傳播疑似的(susceptible):還未被更新隔離的(removed):不愿意參加傳播第93頁,共124頁。9
45、4傳染協(xié)議反熵(anti-entropy)傳播模型熵:系統(tǒng)混亂度的量度節(jié)點(diǎn)P隨機(jī)地選擇節(jié)點(diǎn)Q,交換更新信息基于push的方法,P只將自己的更新推送給Q基于pull的方法,P只從Q中拉取新的更新基于push/pull的方法,P和Q互相發(fā)送更新傳播一個(gè)更新信息到所有節(jié)點(diǎn)需要O(log(N)輪,N為系統(tǒng)的節(jié)點(diǎn)數(shù)。每個(gè)節(jié)點(diǎn)作為發(fā)起者隨機(jī)地選擇一個(gè)節(jié)點(diǎn)進(jìn)行了至少一次更新信息交換,定義為1輪(round)第94頁,共124頁。95傳染協(xié)議傳播方法謠傳(rumor spreading)或稱為傳言(gossiping)仍為疑似的服務(wù)器的比例:s=e-(k+1)(1-s) 例:k =4, s do_someth
46、ing(); / Implicitly bind and invoke a method第99頁,共124頁。100客戶到對(duì)象的綁定(2)采用全局和局部引用的顯式綁定舉例Distr_object objPref; /Declare a systemwide object referenceLocal_object* obj_ptr; /Declare a pointer to local objectsobj_ref = ; /Initialize the reference to a distributed objectobj_ptr = bind(obj_ref); /Explicitly
47、 bind and obtain / a pointer to the local proxyobj_ptr - do_something(); /Invoke a method on the local proxy第100頁,共124頁。101對(duì)象引用的實(shí)現(xiàn)(1)方式1:服務(wù)器網(wǎng)址方式2:守護(hù)進(jìn)程守護(hù)進(jìn)程負(fù)責(zé)查找對(duì)象服務(wù)器的端點(diǎn)方式3:名字服務(wù)器Location Server負(fù)責(zé)查找對(duì)象服務(wù)器的IP和端點(diǎn)第101頁,共124頁。102對(duì)象引用的實(shí)現(xiàn)(2)方式4:實(shí)現(xiàn)句柄(Implementation Handle)指向proxy的一個(gè)具體實(shí)現(xiàn)方法(包括協(xié)議)可動(dòng)態(tài)地加載到客戶進(jìn)程中例:/pr
48、oxy.zipProxy代碼handle下載第102頁,共124頁。103參數(shù)傳遞局部對(duì)象:傳遞對(duì)象值遠(yuǎn)程對(duì)象:傳遞引用服務(wù)器客戶遠(yuǎn)程對(duì)象局部對(duì)象第103頁,共124頁。104例1:DCE 遠(yuǎn)程方法調(diào)用 基于RPC的客戶服務(wù)器模型 在IDL中擴(kuò)充分布式對(duì)象定義支持C+語言綁定 實(shí)現(xiàn)方式:遠(yuǎn)程對(duì)象 對(duì)象狀態(tài)集中保存在同一臺(tái)機(jī)器上 第104頁,共124頁。105DCE 分布式對(duì)象模型(a) 分布式動(dòng)態(tài)對(duì)象 (b)分布式命名對(duì)象第105頁,共124頁。106DCE 遠(yuǎn)程對(duì)象調(diào)用方法1:OID, IID, 參數(shù)對(duì)象表:對(duì)象在內(nèi)存/外存的位置方法2:綁定句柄(binding handle)(IID,協(xié)議
49、, IP,端點(diǎn))客戶服務(wù)器對(duì)象表調(diào)用(OID, IID, 參數(shù))RPC第106頁,共124頁。107將分布式對(duì)象集成到編程語言中保持盡可能多的普通對(duì)象語義支持高的分布透明性提供遠(yuǎn)程對(duì)象:狀態(tài)集中于本地接口分布與遠(yuǎn)地 代理(Proxy)例2:JAVA 遠(yuǎn)程方法調(diào)用對(duì)象proxyproxyproxy第107頁,共124頁。108JAVA 分布式對(duì)象模型遠(yuǎn)程對(duì)象與局部對(duì)象區(qū)別Clone時(shí): 不能復(fù)制proxy,客戶需重新綁定基于管程的同步方式:分布式同步控制在proxy端阻塞;或者,在server端阻塞對(duì)象proxyproxyproxy服務(wù)器客戶端第108頁,共124頁。109JAVA 遠(yuǎn)程對(duì)象調(diào)用
50、(1)參數(shù)傳遞參數(shù)編排:序列化,二進(jìn)制串表示局部對(duì)象:copy-by-value遠(yuǎn)程對(duì)象:copy-by-reference對(duì)象引用server IP, end-point, local OID第109頁,共124頁。110JAVA 遠(yuǎn)程對(duì)象調(diào)用(2)服務(wù)器類(server class)在服務(wù)器端的對(duì)象狀態(tài)、方法客戶器類(client class)在客戶端的Proxy實(shí)現(xiàn)代碼由對(duì)象接口定義生成第110頁,共124頁。111JAVA 舉例(1)Product.java接口定義程序ProductImpl實(shí)現(xiàn)對(duì)象接口的服務(wù)器類ProductServer創(chuàng)建服務(wù)器對(duì)象的服務(wù)器程序ProductClie
51、nt客戶程序Product_Stub客戶方的存根程序Product_Skel服務(wù)器方的框架程序第111頁,共124頁。112JAVA 舉例(2)/ Product.java 接口程序import java.rmi.*;public interface Product extends Remote / Gets the description of this product. / return the product description String getDescription() throws RemoteException;第112頁,共124頁。113JAVA 舉例(3)/ Prod
52、uctServer.java 服務(wù)器程序import java.rmi.*;import java.rmi.server.*;public class ProductServer public static void main(String args) System.out.println (Constructing server implementations.); ProductImpl p1 = new ProductImpl(Blackwell Toaster);System.out.println(Binding server implementations to registry.
53、);Naming.rebind(toaster, p1);System.out.println(Waiting for invocations from clients.); 第113頁,共124頁。114JAVA舉例(4)/ ProductImpl.java 對(duì)象實(shí)現(xiàn)import java.rmi.*;import java.rmi.server.*;public class ProductImpl extends UnicastRemoteObject implements Productpublic ProductImpl(String n) throws RemoteException name = n; public String getDescription() throws RemoteException return I am a + name + . Buy me
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 技術(shù)進(jìn)口企業(yè)經(jīng)營合同范本
- 二零二五年度甲級(jí)辦公租賃免責(zé)協(xié)議
- 家電齊全精裝修房屋租賃合同范本
- 工廠改造工程保證金合同
- 電腦配件采購合同
- 2025年湖南貨運(yùn)資格證模擬考試題
- 裝修工程現(xiàn)場管理合同
- 中心衛(wèi)生院臨時(shí)工聘用協(xié)議書
- 建筑工程廉政協(xié)議
- 二手房銷售代理合同
- 全國住戶收支調(diào)查業(yè)務(wù)知識(shí)考試復(fù)習(xí)題庫(含答案)
- 復(fù)方氨基酸注射液的匯總
- 2023年上海市秋考語文真題試卷含答案(整理版)
- 2023年心理咨詢師之心理咨詢師基礎(chǔ)知識(shí)考試題庫附完整答案【有一套】
- 一級(jí)建造師繼續(xù)教育最全題庫及答案(新)
- LS/T 1226-2022糧庫智能通風(fēng)控制系統(tǒng)
- 直線加速器專項(xiàng)施工方案
- 聯(lián)苯二氯芐生產(chǎn)工藝及產(chǎn)排污分析
- 儲(chǔ)能設(shè)備項(xiàng)目采購供應(yīng)質(zhì)量管理方案
- 美國房地產(chǎn)市場特征、框架與周期演變
- 光伏發(fā)電工程施工組織設(shè)計(jì)施工工程光伏發(fā)電工程光伏發(fā)電施工組織設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論