




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第4章 分布式通信管理 第1页,共124页。2主要内容4.1 分层通信协议4.2 远程过程调用(RPC)4.3 面向消息的通信4.4 *面向流的通信4.5 分组通信与多播通信4.6 *远程对象调用(RMI)4.7 习题第2页,共124页。34.1 分层通信协议开放式系统:可按照协议进行通信协议:消息的格式、内容和意义协议的种类有连接(connection):如,电话无连接(connectionless):如,短信ISO OSI参考模型分层协议(1983)第3页,共124页。4ISO OSI参考模型分层协议进程A进程B第4页,共124页。5ISO OSI参考模型分层协议ISO OSI参考模型的特
2、点分层:功能分解。独立性。接口(提供功能的操作集):标准化。协议栈:有序性报文(message)格式第5页,共124页。6基本网络协议物理层位(bit),字节(byte)电气的、机械的、信号接口例:RJ双绞线、USB数据链路层帧(frame)帧头、帧尾检错(如,Checksum)第6页,共124页。7基本网络协议-链路层协议举例发送方和接受方的交互举例第7页,共124页。8基本网络协议网络层IP包(IP packet)网址路由(routing)无连接IP协议(最广泛的网络协议)传输层可靠的通信(不丢失,保证报序)TCP协议 有连接的UDP协议 无连接的第8页,共124页。9高层网络协议会话层会
3、话(session)控制同步控制:如,检查点(checkpoint)表示层数据的格式和含义:如,记录定义应用层所有应用:电子邮件,文件传输,远程终端等应用协议具体应用协议通用协议: FTP, HTTP第9页,共124页。10网络技术的发展(1)分组交换(Packet Switching)协议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协议R.Kahn(M
4、IT,ARPA),V,Cerf(UCLA,Stanford),ARPANET 1970 IEEE通信1974第10页,共124页。11网络技术的发展(2)CDMA协议与EthernetDr.B.Metcalfe(Harward, MIT,PARC),19733COM,以太网适配器Stanford校园网与LANLeonard Bosack, Sandy Lerner(Stanford),1980-1983Cisco(1984),Cisco路由器第11页,共124页。12中间件协议中间件层(Middleware)独立于应用的协议,支持中间件服务通信协议(RPC, RMI, CORBA, MPI)安
5、全性协议(认证、授权)分布式事务处理协议(提交、封锁)第12页,共124页。13中间件协议第13页,共124页。14中间件通信服务例:Pony快递公司时代的通信存储-分类-转发第14页,共124页。15中间件通信服务例:电子邮件系统(提交) (交付) 客户程序服务器程序第15页,共124页。16通信类型保存方式持久性通信(persistent):发送方提交的消息一直被持久地存储,直到被交付给接受方瞬时性通信(transient):当传输中断或接收方不活动时,则丢弃消息交互方式异步性通信(asynchronous)发送方提交消息后,可立即执行同步性通信(synchronous)发送方被阻塞,直到
6、得知其消息被接受后,方可继续执行第16页,共124页。17通信持久性和同步性 (1)(a) 持久异步通信 (b)持久同步通信 第17页,共124页。18通信持久性和同步性(2)(c) 瞬时异步通信 (d) 基于接受的瞬时同步通信第18页,共124页。19通信持久性和同步性(3)(e)基于交付的 (f)基于响应的 瞬时同步通信 瞬时同步通信第19页,共124页。204.2 远程过程调用(RPC)像本地子程序一样,调用远地子程序调用者和被调者都不用考虑消息通信举例:int read(int fd, char * buf, int nbytes);count = read(fd, buf, nbyt
7、es);参数传递call-by-value : 例:fd, nbytescall-by-reference: 例:* buf第20页,共124页。21过程调用中的参数传递参数传递call-by-copy/restore:例,Ada的in-out参数第21页,共124页。22RPC调用原理第22页,共124页。23服务器基本RPC操作客户客户存根程序:主程序端的子程序代理服务器存根程序:子程序端的主程序代理 OS主程序C存根OS 子程序S存根运行系统运行系统第23页,共124页。24RPC执行的主要步骤12345678910第24页,共124页。25RPC执行的主要步骤客户过程以普通方式调用相应
8、的客户存根客户存根建立消息,然后调用本地操作系统客户端操作系统将消息发送到远程操作系统远程操作系统将消息送到服务器存根服务器存根取出消息中的参数后调用服务器程服务器完成工作后将结果返回至服务器存根服务器存根将结果打包成消息,并调用本地操作系统服务器操作系统将消息发送至客户端操作系统客户端操作系统将消息交给客户存根客户存根从消息中取出结果返回给客户第25页,共124页。26参数传递参数编排(marshalling):将参数装入消息例:远程过程 add(i,j)第26页,共124页。27参数传递问题值的传递不同编码表示:ASCII/ UNICODE不同数字表示:小末端/大末端,补码/反码例:x00
9、05,JILL; x5000,JILL; x0005,LLIJL L I J J I L L L L I J(a) X86格式 (b) SPARC格式 (c) 全部逆转的格式 第27页,共124页。28参数传递问题引用(指针)的传递:禁止传递指针/引用策略1:call-by-copy/restore(复制-还原)策略2:请求被引用的数据主程序子程序bufbuf1.copy2.restore第28页,共124页。29参数说明和存根生成例:foobar(char x;float y;int z5) . 基本数据结构的规范化表示 整形:2的补码,小端 字符型:16位Unicode 浮点型: IEEE
10、 #754局部变量xy5z0z1z2z3z4第29页,共124页。30扩展RPC模型- 异步RPC(1)(a)传统的RPC (b)异步RPC异步RPC第30页,共124页。31双异步RPC延期的同步RPC(deferred synchronous RPC)单程RPC(one-way RPC)客户发出请求后,不等待服务器应答,立即继续执行扩展RPC模型- 异步RPC(2)第31页,共124页。32RPC编程举例/* 生成RPC程序 - SUN ONC RPC*/rpcgen FILE_RPC.x =编译结果 /* 参数定义 */ FILE_RPC.h FILE_RPC_xdr.c /* 参数编排
11、和解编程序*/ /* 服务器端程序 */ FILE_RPC_svc.c /* server存根 */ FILE_RPC_server.c /* 服务器模版程序 */ /* 客户端程序 */ 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服务器存根程序 - 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); /* 注册 */ transp = svctcp_create(RPC_ANYSOCK, 0, 0); svc_register(transp, SERVERPROG, SERVERVERS, serverprog_1, IPPROTO_TCP) ; /* 注册 */ svc_run(); / 启动RPC exit(1);第34页,共124页。35RPC服务器程序 - 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;/* 被调用的子程序*/ 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; /* 参数缓冲区 */ 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 ) /*远程子程序调用*/ strcpy(buf, &p1.data); clnt_control(cl, CLSET_FD_CLOSE, NULL); clnt
20、_destroy(cl); 第37页,共124页。38DCE RPCDCE(Distributed Computing Environment)DCE RPC目标客户透明地调用远程服务支持客户与服务器的独立性不同的语言:C vs. Java不同的平台:windows, Unix不同的硬件IDL(Interface Definition Language) 接口定义语言第38页,共124页。39DCE客户/服务器构造第39页,共124页。40客户/服务器程序的编写IDL编译器的输出:头文件如c语言形式的interface.h客户存根程序由客户程序调用的过程参数收集、打包、调用运行系统发送提取应答
21、、返回给客户服务器存根程序由运行系统调用的过程调用服务器过程以完成实际操作。第40页,共124页。41客户进程与服务器进程的绑定端点表服务器端口号ftp8080地址表服务IP地址ftp4第41页,共124页。42DCE RPC的执行 执行过程client存根编排参数,组成消息client机运行库按照绑定的协议,向server机发送消息server机运行库按照消息中指定的“端点”,转交消息给server存根server存根解编参数,调用server程序应答过程与上面相反执行策略最多一次(at-most-once):不重复执行幂等性(Idempotent):可重复执行,效果相同第42页,共124页
22、。434.3 面向消息的通信通信系统的一般结构第43页,共124页。44面向消息的瞬时通信支持TCP/IP的 Berkeley Sockets 原语原语意义Socket创建新的通信端点Bind将本地地址附加(attach)到套接字上Listen宣布已准备好接受连接Accept在准备好连接请求之前阻塞调用方Connect主动尝试确立连接Send通过连接发送数据Receive通过连接接受数据Close释放连接 服务器调用 客户调用 客户、 服务器调用 客户、 服务器调用第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、 ) ;/* 创建 */ 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) /* 关闭 */第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 ) ;/* 创建
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)特点提供高层通信,支持并行计算, 如MPP, COW可靠的底层网络支持分组通信,地址(groupID, p
27、rocessID)支持多种通信方式瞬时异步 MPI_bsend基于收条的瞬时同步 MPI_send基于交付的瞬时同步 MPI_ssend基于响应的瞬时同步 MPI_sendrecv第48页,共124页。49消息传递接口 (MPI)MPI原语原语意义MPI_bsend将要送出的消息追加到本地发送缓冲区中MPI_send发送消息,并等待直到消息复制到本地或远程缓冲区中为止MPI_ssend 发送消息,并等待直到对方开始接受为止MPI_sendrecv发送消息,并等待直到收到应答消息为止MPI_isend传送要送出消息的引用,随后继续执行MPI_issend传送要送出消息的引用,并等待直到对方开始接
28、受为止MPI_recv接受消息,如果不存在等待的消息则阻塞MPI_irecv检查是否有输入的消息,但是无论有没有消息都不会阻塞第49页,共124页。50面向消息的持久性通信消息队列系统(message queuing System)支持持久异步通信适合于对传输时间要求宽松的场合,如几分钟。不保证消息到达接收方的时间,也不保证接收方一定读取消息松散耦合的通信方式,使用方便面向消息的中间件(MOM, message oriented middleware)第50页,共124页。51消息队列模型 (1)使用消息队列的四种松散耦合通信第51页,共124页。52消息队列模型 (2)消息队列系统的基本接口
29、原语意义Put将消息追加进指定队列Get调用进程阻塞,直到指定队列变为非空为止,然后取出队列中的第一个消息Poll查看指定队列中的消息,并且取出队列中的第一个消息。不阻塞调用进程。Notify注册一个处理程序,在有消息进入指定队列时调用该处理程序。第52页,共124页。53消息队列系统的总体结构 (1)队列分类源队列(source queue):发送目的队列(destination queue):接收队列寻址逻辑地址:队列名,如steencs.vu.nl网络地址:IP地址队列管理器发送/接收中转(relay)第53页,共124页。54消息队列系统的总体结构 (2)队列层寻址和网络层寻址之间的联
30、系第54页,共124页。55消息队列系统的总体结构 (3) 带有路由器的消息队列系统的一般结构第55页,共124页。56消息代理器(broker)(1)作用格式转换应用层网关(gateway)实现规则数据库转换语言规则开发工具第56页,共124页。57消息代理器(broker)(2)消息队列系统中消息代理器的通用结构第57页,共124页。58IBM WebSphare MQ系统以前称为:MQSeris队列管理器(QM)第58页,共124页。59消息通道(Message Channel)消息通道:实现发送方和接收方QM之间的单向的、可靠的连接消息通道代理(MCA)发送MCA接收MCA通道代理的启
31、动应用程序激活(不透明)消息到达触发器网络远程启动(控制消息发送给守护程序)通道代理的关闭超时自动关闭第59页,共124页。60通道(Channel)通道代理的属性.属性描述Transport type决定要采用的传输协议FIFO delivery表明消息将要按照发送的次序到达Message length单个消息的最大长度Setup retry count指定启动远程MCA的最大重试次数Delivery retriesMCA将收到的消息放入队列的最大重试次数第60页,共124页。61消息传送 (1)MQ队列网络的结构路由表(routing table):别名(Alias):保持应用程序的QM名
32、字引用独立性第61页,共124页。62消息队列接口(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):传载信息的手段:表示、存储、传输、展示等例:图像格式:GIF,JPEG,TIF连续型媒体(continuous representation
33、media)在数据项之间存在时间关系例:CD:采样值/1/44100秒,VCD:祯/1/30秒离散型媒体第63页,共124页。64数据流数据流(stream)异步传输: delay(0, ) ; delay(传输延迟)同步传输: delay (0,max等时(isochronous)传输: delay min, max复杂数据流由多个子数据流(substream)组成例:DVD((左声道,右声道),视频,字幕)第64页,共124页。65数据流 (1)例:在网络中两个进程(source和sink)之间建立一个流数据槽数据源第65页,共124页。66数据流(2)例:在两个设备之间直接建立一个流第6
34、6页,共124页。67数据流(3)例:向多台设备多播一个流过滤器(filter):调整输入流的质量,以适应输出流的带宽第67页,共124页。68数据流QoS (1)流的定义(flow specification)输入流的特征要求的服务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数据流QoS (2)令牌桶(token bucket)算法原理系统以恒定速率生成token,存入令牌桶;应用程序从桶中取出token,赋给数据单元带有token的数据单元,在网络上以恒定速率传送第69页,共124页。70数据流的建立(1)QoS协议 :为QoS参数保留资源资源预留协议(RSVP)RSVP进程sender设置到receiver的路径,为每个中间节点提供流定义;receiver
36、沿着其上流路径发保留请求;RSVP进程检查是否有足够的可用资源,以及是否允许保留第70页,共124页。71数据流的建立(1)资源保留协议(RSVP)的基本结构第71页,共124页。72数据流的同步机制 (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数据流
37、的同步机制 (2)在数据单元层上的显式同步读写进程:读流数据单元,同步写第73页,共124页。74数据流的同步机制(3)由高层接口支持的同步多媒体中间件提供控制接口用户自定义程序:检查同步,调整流速第74页,共124页。75数据流的同步机制(4)同步机制的分布将多个流多路复合成一个单数据流例:MPEG-2每个流转换成由数据包(packet)组成的流,每个包带有一个基于90kHZ系统时钟的时间戳将上述流复合成一个由变长包组成的程序流。在接受方,多路分解该复合流按照包上的时间戳,对流进行同步第75页,共124页。764.5 分组通信与多播通信组:由系统或用户确定的若干个进程的集合组的成员籍(mem
38、bership)通信方式:点到点通信(point-to-point):单播(unicast)一到多通信(one-to-many) : 多播(multicast)、广播(broadcast)第76页,共124页。77组通信的设计封闭组与开放组只有组内成员之间可以广播是通信反之,组外进程也可以对组内进行广播第77页,共124页。78组通信的设计对等组与分层组成员之间的地位是平等的反之,存在控制其它节点的超级节点,称为协调者参与者协调者第78页,共124页。79组通信的设计发送的实现方式多播:利用网络的多播功能广播:利用网络的广播功能单点:利用进程间的点到点通信第79页,共124页。80组通信的设计
39、发送和接收原语group_sendgroup_receive单程(one-way)模型原子性原子性广播:一个消息被所有成员接收到,或者,一个也没有接收到。第80页,共124页。81组通信的设计消息的收发顺序全局时间顺序If ts(m1) ts(m2) then G(m1) G(m2)绝对的次序一致性时间顺序G(m1) G(m2) 或者 G(m2) G(m1)相对的次序时间次序不一致交叠发送接收次序G(m)表示所有组员接收到消息m的时间第81页,共124页。82组通信的设计重叠组例:不一致性问题在不同组之间的进行协调非常困难可伸缩性例:在互联网络上,网关会在多个LAN上重复传送一个消息很难在跨网
40、络环境上实现 LAN1 LAN2 LAN3 LAN4G1G2G3G4多播不一致的接收次序重复传送消息第82页,共124页。83ISIS中的组通信ISIS:康奈尔大学开发的工具集(1987)同步类型:(a)同步:同一事件在各处的发生严格地按照同一时间(b)松散同步:事件发生需要一定的时间,但顺序一致(c)虚拟同步:具有因果关系的事件,必须服从统一次序第83页,共124页。84ISIS中的组通信事件类型:因果相关的(causally-related):如果事件A的发生影响到事件B的发生,或反之。并发的(concurrent):事件A的发生与事件B的发生没有关系ISIS广播原语ABCAST:弱同步两
41、段提交协议CBCAST:虚拟同步GBCAST:管理组成员的ABCAST通信P1P2P3m1m2第84页,共124页。85向量时钟(1)因果性(causality):如果事件a,b存在因果关系。a为因,b为果,则C(a)C(b)Vector Clock如果VC(a)VC(b),则a与b为因果关系进程Pi上的向量时钟VCi的基本性质VCii=n, 在Pi中发生了n个事件VCij=k,Pi已知在Pj中发生了k个事件第85页,共124页。86向量时钟(2)向量修改规则Pi在执行一个事件之前,Pi执行VCiiVCii+1当进程Pi发送消息m时,ts(m)=VCi当进程Pj收到m后,置VCjk=maxVC
42、jk,ts(m)kPi的消息m在进程Pk正确递交的条件:ts(m)i = VCki+1tsmjVCkj for all ij第86页,共124页。87CBCAST协议例1:三个进程A,B, CVA, VB, Vc第87页,共124页。88CBCAST应用举例进程1的向量 进程2-6的向量123456433323675767888888222222111111555555发送消息例2:6个进程第88页,共124页。89应用层多播将节点组织成一个覆盖网络(overlay network),用来实现组通信树型覆盖网络节点之间只有唯一路径网状覆盖网络节点之间有多条路径第89页,共124页。90应用层多
43、播举例:Chord上的多播树多播树构建生成一个多播标识符(mid);/mid为160位密钥查找结点succ(mid),将其作为根结点结点P加入多播树P执行lookup(mid);Q受到请求后,将P设为Q的子结点;如果Q第一次收到mid请求,则Q成为转发器,继续转发请求,直到根结点;第90页,共124页。91覆盖网络的性能覆盖网络的链接与实际网络层中路由器的链接之间的关系方案1:若A多播消息,,等链路会重复传输方案2: 消除了重复ABDC方案1ABCD方案2第91页,共124页。92多播树的性能链接树(link tree)计算数据包通过每个物理链接的次数延长(stretch)或相对延时惩罚(re
44、lative delay penalty)两个节点之间的延时比例:Cost(B-Rb-Ra-Rc-C)=59 Cost (B-Rb-Rd-Rc-C) =47 stretch = 59/47 = 1.255树开销传播消息到所有节点的总时间开销构造一棵开销最小的生成树第92页,共124页。93基于gossip的数据通信传染协议(epidemic protocol)用于使本地信息在大规模节点集合中快速地传播消息传播模型基于传染病理论节点状态感染的(infective):已被更新,并愿意参加传播疑似的(susceptible):还未被更新隔离的(removed):不愿意参加传播第93页,共124页。9
45、4传染协议反熵(anti-entropy)传播模型熵:系统混乱度的量度节点P随机地选择节点Q,交换更新信息基于push的方法,P只将自己的更新推送给Q基于pull的方法,P只从Q中拉取新的更新基于push/pull的方法,P和Q互相发送更新传播一个更新信息到所有节点需要O(log(N)轮,N为系统的节点数。每个节点作为发起者随机地选择一个节点进行了至少一次更新信息交换,定义为1轮(round)第94页,共124页。95传染协议传播方法谣传(rumor spreading)或称为传言(gossiping)仍为疑似的服务器的比例:s=e-(k+1)(1-s) 例:k =4, s do_someth
46、ing(); / Implicitly bind and invoke a method第99页,共124页。100客户到对象的绑定(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对象引用的实现(1)方式1:服务器网址方式2:守护进程守护进程负责查找对象服务器的端点方式3:名字服务器Location Server负责查找对象服务器的IP和端点第101页,共124页。102对象引用的实现(2)方式4:实现句柄(Implementation Handle)指向proxy的一个具体实现方法(包括协议)可动态地加载到客户进程中例:/pr
48、oxy.zipProxy代码handle下载第102页,共124页。103参数传递局部对象:传递对象值远程对象:传递引用服务器客户远程对象局部对象第103页,共124页。104例1:DCE 远程方法调用 基于RPC的客户服务器模型 在IDL中扩充分布式对象定义支持C+语言绑定 实现方式:远程对象 对象状态集中保存在同一台机器上 第104页,共124页。105DCE 分布式对象模型(a) 分布式动态对象 (b)分布式命名对象第105页,共124页。106DCE 远程对象调用方法1:OID, IID, 参数对象表:对象在内存/外存的位置方法2:绑定句柄(binding handle)(IID,协议
49、, IP,端点)客户服务器对象表调用(OID, IID, 参数)RPC第106页,共124页。107将分布式对象集成到编程语言中保持尽可能多的普通对象语义支持高的分布透明性提供远程对象:状态集中于本地接口分布与远地 代理(Proxy)例2:JAVA 远程方法调用对象proxyproxyproxy第107页,共124页。108JAVA 分布式对象模型远程对象与局部对象区别Clone时: 不能复制proxy,客户需重新绑定基于管程的同步方式:分布式同步控制在proxy端阻塞;或者,在server端阻塞对象proxyproxyproxy服务器客户端第108页,共124页。109JAVA 远程对象调用
50、(1)参数传递参数编排:序列化,二进制串表示局部对象:copy-by-value远程对象:copy-by-reference对象引用server IP, end-point, local OID第109页,共124页。110JAVA 远程对象调用(2)服务器类(server class)在服务器端的对象状态、方法客户器类(client class)在客户端的Proxy实现代码由对象接口定义生成第110页,共124页。111JAVA 举例(1)Product.java接口定义程序ProductImpl实现对象接口的服务器类ProductServer创建服务器对象的服务器程序ProductClie
51、nt客户程序Product_Stub客户方的存根程序Product_Skel服务器方的框架程序第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 服务器程序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 对象实现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等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《市场营销革新》课件
- 2025简易货物运输的合同范本
- 2024年09月河北秦皇岛市妇幼保健院第二轮招聘编外人员11人笔试历年专业考点(难、易错点)附带答案详解
- 2024年09月河北承德市直事业单位选调工作人员12人笔试历年专业考点(难、易错点)附带答案详解
- 2025汽车保养行业员工劳动合同范本
- 2025苹果的买卖合同示范文本
- 2024年09月新疆乌鲁木齐水磨沟区疾控中心定向招聘核酸检测员200人笔试历年专业考点(难、易错点)附带答案详解
- 2024年09月江苏宿迁苏宿工业园区社区卫生服务中心招聘拟聘用人员(第二批)笔试历年专业考点(难、易错点)附带答案详解
- 2024年09月新疆医科大学第八附属医院高层次人才引进人员及拟录用人员笔试历年专业考点(难、易错点)附带答案详解
- 2025综合支架承包合同协议书示例
- 采油工程 试题及答案
- 西医临床基因组学应用试题及答案
- 内河船客运培训课件
- 2023-2029年中国鸡尾酒行业市场运行态势及投资战略规划报告
- 2024年记者证考试挑战试题及答案
- T-CECS120-2021套接紧定式钢导管施工及验收规程
- 2024年湖北省武汉市高考数学一调试卷
- 照片里的故事
- 土木工程毕业设计框架结构教学楼计算书
- 整理【越南】环境保护法
- 河北工业大学硕士生指导教师(含新申请者)简况表.
评论
0/150
提交评论