《第二章分布式系统的通信》由会员分享,可在线阅读,更多相关《第二章分布式系统的通信(57页珍藏版)》请在金锄头文库上搜索。
1、第第2 2章章 分布式系统的通信分布式系统的通信 分层协议分层协议 异步传输模式网(异步传输模式网(ATMATM) 客户客户- -服务器模式服务器模式 远程过程调用远程过程调用 组通信组通信2.1 2.1 分层协议分层协议开放系统互联参考模型(开放系统互联参考模型(OSIOSI) OSI 模型中的层、接口和协议模型中的层、接口和协议 网络物理层数据链路层网络层传输层会话层表示层应用层进程A机器1物理层数据链路层网络层传输层会话层表示层应用层进程B机器2应用层协议表示层协议会话层协议传输层协议网络层协议数据链路层协议物理层协议12345672.1 2.1 分层协议分层协议开放系统互联参考模型(开
2、放系统互联参考模型(OSIOSI)典型消息结构典型消息结构 消息消息应用层头应用层头表示层头表示层头会话层头会话层头传输层头传输层头网络层头网络层头数据链路层头数据链路层头数据链路数据链路层尾层尾实际网络中传输的位实际网络中传输的位2.22.2 异步传输模式网(异步传输模式网(ATMATM网)网)异步传输模式异步传输模式ATM模型模型 异步传输模式(异步传输模式(Asynchronous Transfer Mode)发送者首先建立一个连接(一条虚拟线路)到接收者。在建发送者首先建立一个连接(一条虚拟线路)到接收者。在建立过程中,从发送者到接收者之间建立一个路由,并将路由立过程中,从发送者到接收
3、者之间建立一个路由,并将路由信息放在沿途的交换机上。信息放在沿途的交换机上。系统发送包时,包先被硬件拆成固定大小的单位(信元),系统发送包时,包先被硬件拆成固定大小的单位(信元),信元沿着交换机中的路径流动。信元沿着交换机中的路径流动。当不再需要连接时,释放此连接,并从交换机中删除该路由当不再需要连接时,释放此连接,并从交换机中删除该路由信息。信息。2.2 2.2 异步传输模式网(异步传输模式网(ATMATM网)网)异步传输模式异步传输模式ATM协议分层协议分层 物理层(物理层(OSI第第1层)层)ATM层层处处理理包包括括路路由由选选择择在在内内的的信信元元和和信信元元传传输输。(包包括括O
4、SI第第2,3层一部分层一部分) ATM不修复丢失或损坏的信元。不修复丢失或损坏的信元。适适配配层层将将包包拆拆分分成成信信元元并并在在另另一一头头组组装装。(OSI第第4层层) 适适配配层层没有提供可靠的端对端服务,传输连接必须在上一层实现。没有提供可靠的端对端服务,传输连接必须在上一层实现。物理层ATM层适配层上面各层2.3 2.3 客户机服务器模式客户机服务器模式2.3.1 2.3.1 客户机和服务器客户机和服务器基本思想基本思想 构构造造一一个个操操作作系系统统,由由一一组组协协同同进进程程组组成成,这这组组进进程程称称为为服服务器务器(server),为用户提供服务的进程称为客户,为
5、用户提供服务的进程称为客户(client). 客户和服务器都运行在相同的微内核中。客户和服务器都运行在相同的微内核中。 客客户户和和服服务务器器都都以以用用户户进进程程方方式式运运行行, 一一台台机机器器可可以以运运行行于单个进程、多个客户、多个服务器或者两者的混合。于单个进程、多个客户、多个服务器或者两者的混合。2.3 2.3 客户机服务器模式客户机服务器模式2.3.1 2.3.1 客户机和服务器客户机和服务器通信特点通信特点 客客户户服服务务器器模模式式通通常常以以简简单单的的面面向向非非连连接接的的请请求求/应应答答协协议议为为基基础础。通通信信服服务务可可以以简简化化为为由由微微内内核
6、核提提供供的的两两个个系系统统调调用用,一一个是负责发送报文(个是负责发送报文(send),一个是负责接收报文(),一个是负责接收报文(receive)。)。内核内核客户客户内核内核服务服务网络网络应答应答请求请求物理层物理层数据链路层数据链路层请求请求/应答应答12345672.3 2.3 客户机服务器模式客户机服务器模式2.3.3 2.3.3 寻址寻址机器机器.进程编址方式进程编址方式 机器号和进程号,机器号用于使内核将消息正确地发送到适机器号和进程号,机器号用于使内核将消息正确地发送到适当的机器上。进程号用来使内核决定消息要给哪一个进程。当的机器上。进程号用来使内核决定消息要给哪一个进程
7、。内核内核C内核内核S1:请求:请求243.0212:给:给199.0响应响应2.3 2.3 客户机服务器模式客户机服务器模式2.3.3 2.3.3 寻址寻址带有广播的进程编址带有广播的进程编址 进程在相当大且专用的地址空间中选择自己的标识号。发送进程在相当大且专用的地址空间中选择自己的标识号。发送者广播一个特殊的定位包,包含目的进程的地址,所有内核检查者广播一个特殊的定位包,包含目的进程的地址,所有内核检查并察看地址是不是它们的,如果是回答并察看地址是不是它们的,如果是回答“我在这里我在这里”消息给出网消息给出网络地址,发送内核使用这个地址并络地址,发送内核使用这个地址并“记住记住”它。它。
8、 CS1:广播:广播432:“我在这里我在这里”123:请求:请求4:应答:应答2.3 2.3 客户机服务器模式客户机服务器模式2.3.3 2.3.3 寻址寻址通过名字服务器进行地址查询通过名字服务器进行地址查询 在客户机中存放在客户机中存放ASCII服务器的名字,每次客户机运行时,服务器的名字,每次客户机运行时,首先试图使用服务器,客户机发出一请求消息给一个特殊映射服首先试图使用服务器,客户机发出一请求消息给一个特殊映射服务器,(常常称为名字服务器)问一个目前服务器所在的机器号,务器,(常常称为名字服务器)问一个目前服务器所在的机器号,有了这个地址后,可以直接发送请求。有了这个地址后,可以直
9、接发送请求。名字服务器SC1:查找:查找2:NS应答应答NS1:请求:请求2:应答:应答1234网络网络2.3 2.3 客户机服务器模式客户机服务器模式2.3.3 2.3.3 寻址寻址进程编址方法总结进程编址方法总结 在客户机代码中指明机器在客户机代码中指明机器.号;号; 让进程选择随机地址,用广播定位进程。让进程选择随机地址,用广播定位进程。 在客户机中存放在客户机中存放ASCII服务器名字,运行时寻找它。服务器名字,运行时寻找它。三种方法的缺点:三种方法的缺点: 机器机器.进程编址方式:不透明进程编址方式:不透明 带有广播的进程编址:给系统造成额外负担带有广播的进程编址:给系统造成额外负担
10、 通过名字服务器进行地址查询:需要一个中间部件通过名字服务器进行地址查询:需要一个中间部件名字服务器。名字服务器。 2.3 2.3 客户机服务器模式客户机服务器模式2.3.4 2.3.4 阻塞与非阻塞原语阻塞与非阻塞原语阻塞原语阻塞原语 阻塞的阻塞的Send:阻塞直到消息传送完毕阻塞直到消息传送完毕. 阻塞的阻塞的Receive: 阻塞直到消息被实际接收并放入由参数阻塞直到消息被实际接收并放入由参数指定的消息缓冲区指定的消息缓冲区. 客户阻塞客户阻塞消息被发送消息被发送从内核返回,从内核返回,进程释放进程释放陷阱内核陷阱内核阻塞进程阻塞进程客户运行客户运行客户运行客户运行2.3 2.3 客户机
11、服务器模式客户机服务器模式2.3.4 2.3.4 阻塞与非阻塞原语阻塞与非阻塞原语非阻塞原语非阻塞原语 非阻塞的非阻塞的Send:消息发送前取得系统控制权消息发送前取得系统控制权. 非阻塞的非阻塞的Receive:告诉内核消息缓冲区的位置告诉内核消息缓冲区的位置,立即取得立即取得系统控制权系统控制权.2.3 2.3 客户机服务器模式客户机服务器模式2.3.4 2.3.4 阻塞与非阻塞原语阻塞与非阻塞原语非阻塞原语非阻塞原语 缺点缺点在消息被发送之前,发送者不能修改消息缓冲区。后继在消息被发送之前,发送者不能修改消息缓冲区。后继的进程在传输过程中可能覆盖该消息的进程在传输过程中可能覆盖该消息 。
12、发送进程不知道传送何时进行,它无法知道何时重新使发送进程不知道传送何时进行,它无法知道何时重新使用缓冲区。用缓冲区。2.3 2.3 客户机服务器模式客户机服务器模式解决方法解决方法内核将消息拷贝到内部缓冲区,其后允许进程继续执行。内核将消息拷贝到内部缓冲区,其后允许进程继续执行。 当消息发送后,中断发送者并通知它缓冲区可用。当消息发送后,中断发送者并通知它缓冲区可用。 返回返回陷阱陷阱客户运行客户运行客户运行客户运行消息被发送消息被发送客户阻塞客户阻塞消息拷贝到消息拷贝到内核缓冲内核缓冲时间时间2.3 2.3 客户机服务器模式客户机服务器模式2.3.5 2.3.5 有缓冲和无缓冲原语有缓冲和无
13、缓冲原语无缓冲原语无缓冲原语 一一个个地地址址指指定定给给一一个个特特定定进进程程。如如调调用用receive(addr,&m) ,告告诉诉运运行行的的机机器器内内核核,调调用用的的进进程程正正在在监监听听地地址址addr,m指指出出消消息息缓冲区,用于保存传送过来的消息缓冲区,用于保存传送过来的消息。 内核内核C内核内核A S客户客户对应一个进程对应一个进程的地址的地址服务器服务器2.3 2.3 客户机服务器模式客户机服务器模式2.3.5 2.3.5 有缓冲和无缓冲原语有缓冲和无缓冲原语无缓冲原语无缓冲原语 缺点缺点 如果在客户机调用如果在客户机调用send原语之后调用原语之后调用recei
14、ve原语,无法处原语,无法处理理 解决方法解决方法丢丢弃弃消消息息,使使客客户户机机超超时时,并并希希望望服服务务器器在在客客户户机机传传送送前前调调用接收原语。用接收原语。 让让接接收收内内核核在在短短时时间间内内保保存存到到来来的的消消息息,以以防防合合适适的的receive原语可以很快完成。原语可以很快完成。 2.3 2.3 客户机服务器模式客户机服务器模式2.3.5 2.3.5 有缓冲和无缓冲原语有缓冲和无缓冲原语有缓冲原语有缓冲原语 对接收消息感兴趣的进程让内核为之建立一个邮箱,并指定对接收消息感兴趣的进程让内核为之建立一个邮箱,并指定一个地址以便于寻找网络信包。所有具有该地址的输入
15、消息被放一个地址以便于寻找网络信包。所有具有该地址的输入消息被放入邮箱中,调用入邮箱中,调用receive时只要从邮箱中取出一条消息。时只要从邮箱中取出一条消息。 内核内核CS对应一个邮箱对应一个邮箱的地址的地址A网络网络2.3 2.3 客户机服务器模式客户机服务器模式2.3.6 2.3.6 可靠和非可靠原语可靠和非可靠原语如何保证消息被成功发送如何保证消息被成功发送重新定义非可靠的重新定义非可靠的send语义。系统无法保证消息成功发送,语义。系统无法保证消息成功发送,完成可靠的通信依赖于用户。完成可靠的通信依赖于用户。要求接收机器的内核给发送机器的内核发送一个确认消息。要求接收机器的内核给发
16、送机器的内核发送一个确认消息。 客户客户服务器服务器31421.请求(客户向服务器)请求(客户向服务器)2.ACK(内核给内核)(内核给内核)3.应答(服务器向客户)应答(服务器向客户)4.ACK(内核给内核)(内核给内核)2.3 2.3 客户机服务器模式客户机服务器模式2.3.6 2.3.6 可靠和非可靠原语可靠和非可靠原语如何保证消息被成功发送如何保证消息被成功发送 客户机在发送消息后阻塞,服务器的内核不发送确认消息,客户机在发送消息后阻塞,服务器的内核不发送确认消息,而是将应答作为确认消息。而是将应答作为确认消息。 折衷方案折衷方案 当一个请求到达服务器内核,计时器启动,如果服务器当一个
17、请求到达服务器内核,计时器启动,如果服务器能很快给出应答,这个应答就是确认消息。否则,单独发送能很快给出应答,这个应答就是确认消息。否则,单独发送确认消息。确认消息。客户服务器2131.请求(客户向服务器) 2.应答(服务器向客户) 3.ACK(内核给内核)2.3 2.3 客户机服务器模式客户机服务器模式2.3.7 2.3.7 客户机客户机- -服务器模式的实现服务器模式的实现四个设计问题的选择四个设计问题的选择项目项目选择选择1选择选择2选择选择3寻址寻址机器数目机器数目共享进程地址共享进程地址ASCII名字通过服名字通过服务器查找务器查找阻塞阻塞阻塞原语阻塞原语具有拷贝到核的非阻塞具有拷贝
18、到核的非阻塞具有中断的非阻塞具有中断的非阻塞缓冲缓冲无缓冲,丢弃无缓冲,丢弃不希望的消息不希望的消息无缓冲,临时保持不期无缓冲,临时保持不期望的消息望的消息邮箱邮箱可靠性可靠性非可靠非可靠请求请求-确认确认-应答确认应答确认请求请求-应答应答-确认确认34=81种组合种组合 2.3 2.3 客户机服务器模式客户机服务器模式2.3.7 2.3.7 客户机客户机- -服务器模式的实现服务器模式的实现大报文传输问题大报文传输问题将将大大报报文文分分成成多多个个包包分分别别传传递递,给给每每个个报报文文分分配配一一个个报报文文号号,并并将将该该报报文文号号放放入入属属于于这这个个报报文文的的包包中中,
19、有有一一系系列列的的数数字字给给出信包的顺序。出信包的顺序。确认消息确认消息对对每每个个单单独独的的包包进进行行确确认认。优优点点:如如果果一一个个包包丢丢失失,仅仅仅仅这这个包需要重新传递。缺点:网络上会有更多的包。个包需要重新传递。缺点:网络上会有更多的包。仅仅仅仅对对一一个个报报文文确确认认。优优点点:信信包包少少。缺缺点点:一一旦旦包包丢丢失失,恢复起来更复杂。恢复起来更复杂。2.3 2.3 客户机服务器模式客户机服务器模式2.3.7 2.3.7 客户机客户机- -服务器模式的实现服务器模式的实现客户客户-服务器协议中的包类型服务器协议中的包类型代码代码包类型包类型 来源来源 至至说明
20、说明REQ请求请求客户客户 服务器服务器客户要求服务客户要求服务REP应答应答服务器服务器客户客户 服务器对客户的应答服务器对客户的应答ACK确认确认服务器、客服务器、客户户其他其他前面的包已到达前面的包已到达AYA你在这里吗你在这里吗?客户客户服务器服务器查看服务器是否崩溃查看服务器是否崩溃IAA我在这里我在这里服务器服务器客户客户服务器没有崩溃服务器没有崩溃TA再试一次?再试一次?服务器服务器客户客户服务器没有空间服务器没有空间AU地址未知地址未知服务器服务器客户客户没有进程再使用此地没有进程再使用此地址址2.3 2.3 客户机服务器模式客户机服务器模式2.3.7 2.3.7 客户机客户机
21、- -服务器模式的实现服务器模式的实现客户客户-服务器通信使用的包交换示例服务器通信使用的包交换示例服务器服务器客户客户REQ REP服务器服务器客户客户REQ REPACK服务器服务器客户客户REQ ACKACK REP服务器服务器客户客户REQ ACKAYA IAA REPACK2.4 2.4 远程过程调用远程过程调用2.4.1 2.4.1 基本基本RPCRPC操作操作 RPC的基本思想:调用远程过程就像调用本地过程一样。的基本思想:调用远程过程就像调用本地过程一样。 传统过程调用传统过程调用主函数主函数局部变量局部变量主函数主函数局部变量局部变量主函数主函数局部变量局部变量Read的局部
22、变量的局部变量返回地址返回地址fdbufbytesSP SP SP 0 0 2.4 2.4 远程过程调用远程过程调用2.4.1 基本基本RPCRPC操作操作 RPC中的调用与消息中的调用与消息 图图2-162.4 2.4 远程过程调用远程过程调用2.4.1 2.4.1 基本基本RPCRPC操作操作 RPC的主要步骤的主要步骤 客户过程以普通方式调用相应的客户存根客户过程以普通方式调用相应的客户存根; 客户存根建立消息并激活内核陷阱客户存根建立消息并激活内核陷阱; 内核将消息发送给远程内核内核将消息发送给远程内核; 远程内核将消息送到服务器存根远程内核将消息送到服务器存根; 服务器存根取出消息中
23、的参数后调用服务器存根服务器存根取出消息中的参数后调用服务器存根; 服务器完成工作后将结果返回给服务器存根服务器完成工作后将结果返回给服务器存根; 服务器存根将它打包并激活内核陷阱服务器存根将它打包并激活内核陷阱; 远程内核将消息发送给客户内核远程内核将消息发送给客户内核; 客户内核将消息交给客户存根客户内核将消息交给客户存根; 客户存根从消息中取出结果返回给客户客户存根从消息中取出结果返回给客户.2.4 2.4 远程过程调用远程过程调用2.4.2 2.4.2 参数传递参数传递 Sum(4,7)远程计算远程计算 sum47n=sum(4,7)内核内核sum47 sum(i,j) int i.j
24、; return(i+j);内核内核Message存根存根客户机客户机服务器机服务器机2.4 2.4 远程过程调用远程过程调用2.4.2 2.4.2 参数传递参数传递 数字、字符格式不同数字、字符格式不同设计一个网络标准或规范化的格式设计一个网络标准或规范化的格式 根据需要转换(在消息中加入格式信息)根据需要转换(在消息中加入格式信息)存根从何处来存根从何处来根据形式说明和编码规则自动生成根据形式说明和编码规则自动生成 如何处理指针如何处理指针通常采用复制通常采用复制/恢复机制恢复机制2.4 2.4 远程过程调用远程过程调用2.4.3 动态捆绑动态捆绑 客户如何定位服务器客户如何定位服务器服务
25、器向服务器向Binder注册,注册时需要登记服务器的名字、版注册,注册时需要登记服务器的名字、版本、句柄、唯一标识,以便客户进程能寻找到服务器进程。本、句柄、唯一标识,以便客户进程能寻找到服务器进程。客户从客户从Binder获得服务器句柄获得服务器句柄 和唯一标识。客户存根将和唯一标识。客户存根将句柄作为地址,向它发送消息。句柄作为地址,向它发送消息。不足之处:不足之处: 输入和输出接口需要额外的开销。在大型分布式系统输入和输出接口需要额外的开销。在大型分布式系统中,中,binder会成为系统瓶颈。会成为系统瓶颈。2.4 2.4 远程过程调用远程过程调用2.4.4 2.4.4 失败情况下的失败
26、情况下的RPCRPC语义语义 客户无法定位服务器客户无法定位服务器原因:服务器关闭,客户存根过时原因:服务器关闭,客户存根过时解决方法解决方法使用全局变量使用全局变量异常处理机制异常处理机制客户请求消息丢失客户请求消息丢失解决方法解决方法使用计时器重发消息。使用计时器重发消息。2.4 2.4 远程过程调用远程过程调用2.4.4 2.4.4 失败情况下的失败情况下的RPCRPC语义语义 服务器应答消息丢失服务器应答消息丢失无法区分请求丢失、应答丢失、服务器太慢。无法区分请求丢失、应答丢失、服务器太慢。解决方法:解决方法:将请求构造成幂等的。将请求构造成幂等的。客户内核给要发送的消息分配一个序号。
27、客户内核给要发送的消息分配一个序号。 2.4 2.4 远程过程调用远程过程调用2.4.4 2.4.4 失败情况下的失败情况下的RPCRPC语义语义 服务器崩溃服务器崩溃客户无法区分执行前或执行后崩溃。客户无法区分执行前或执行后崩溃。接收接收执行执行应答应答REQREP服务器服务器接收接收执行执行REQREP服务器服务器crash接收接收REQNOREP服务器服务器crash正常状态正常状态执行后崩溃执行后崩溃执行前崩溃执行前崩溃2.4 2.4 远程过程调用远程过程调用2.4.4 2.4.4 失败情况下的失败情况下的RPCRPC语义语义 服务器崩溃服务器崩溃解决方法:解决方法:至少一次语义。等待
28、服务器重新启动,然后重发请求。至少一次语义。等待服务器重新启动,然后重发请求。最多一次语义。立即放弃并报告失败。最多一次语义。立即放弃并报告失败。不作任何保证。当服务器崩溃时,客户得不到任何帮助不作任何保证。当服务器崩溃时,客户得不到任何帮助和保证。和保证。精确一次语义。不容易实现。精确一次语义。不容易实现。2.4 2.4 远程过程调用远程过程调用2.4.4 失败情况下的失败情况下的RPCRPC语义语义 客户机崩溃客户机崩溃存在孤儿问题存在孤儿问题孤孤儿儿:客客户户已已发发出出请请求求但但在在应应答答到到来来之之前前崩崩溃溃了了,此此时时已已激激活活了了服服务务器器中中的的相相应应计计算算,但
29、但没没有有客客户户在在等等待待结结果果。这样的计算成为孤儿。这样的计算成为孤儿。解决方法解决方法根根除除:客客户户存存根根发发送送一一个个RPC前前在在日日志志文文件件中中记记下下要要执执行行操操作作的的信信息息。当当客客户户重重新新启启动动后后,系系统统检检查查日日志志文文件件,并准确清除孤儿。并准确清除孤儿。2.4 2.4 远程过程调用远程过程调用2.4.4 失败情况下的失败情况下的RPCRPC语义语义 客户机崩溃客户机崩溃解决方法解决方法再再生生:将将时时间间划划分分成成顺顺序序编编号号的的纪纪元元。当当一一客客户户重重新新启启动动时时,它它向向所所有有机机器器广广播播一一个个新新纪纪元
30、元的的开开始始。广广播播后后,所所有有远远程程计计算算被终止。被终止。温温和和再再生生:当当接接到到客客户户开开始始新新纪纪元元的的广广播播后后,每每台台机机器器检检查查自自己己是是否否有有远远程程计计算算,若若有有则则试试图图去去找找到到该该远远程程计计算算的的调调用用者者。若没有找到该计算的调用者,则终止计算。若没有找到该计算的调用者,则终止计算。过过期期:每每一一个个RPC执执行行时时事事先先分分给给一一个个标标准准时时间间段段T 。当当T到到期期而而调调用用未未完完成成时时再再申申请请一一个个T。如如果果客客户户崩崩溃溃,服服务务器器在在客客户重新启动前等候了一个户重新启动前等候了一个
31、T后,所有孤儿都被清除。后,所有孤儿都被清除。2.4 远程过程调用远程过程调用2.4.5 2.4.5 实现的问题实现的问题 RPC协议族协议族任何已经存在的能够实现从客户内核到服务器内核之间按任何已经存在的能够实现从客户内核到服务器内核之间按位传送的协议都可以作为位传送的协议都可以作为RPC的协议。的协议。如何选择对性能有很大影响如何选择对性能有很大影响面向连接还是面向非连接的协议面向连接还是面向非连接的协议标准的通用协议还是专门为标准的通用协议还是专门为RPC设计的协议设计的协议信包和报文的长度信包和报文的长度2.4 远程过程调用远程过程调用2.4.5 实现的问题实现的问题 确认确认停等协议
32、停等协议 爆发协议爆发协议0 1 2 30123ACK 0ACK 1ACK 2ACK 30123ACK 0-3Timeclientserverclientserver4k data2.4 2.4 远程过程调用远程过程调用2.4.5 实现的问题实现的问题 确认确认如何处理超限错误如何处理超限错误如果超限错误是由于芯片处理中断而暂时无法接收信包如果超限错误是由于芯片处理中断而暂时无法接收信包引起的,发送者可在发送两个信包之间加入一段延迟时引起的,发送者可在发送两个信包之间加入一段延迟时间。间。如果超限错误是由于芯片的缓冲区不够而引起的,如果如果超限错误是由于芯片的缓冲区不够而引起的,如果缓冲区容量
33、为缓冲区容量为n个信包,则可在发送个信包,则可在发送n个信包后留一个间个信包后留一个间隙,或是在发出隙,或是在发出n个信包后,得到一个确认后再发送后个信包后,得到一个确认后再发送后面的包。面的包。2.4 2.4 远程过程调用远程过程调用2.4.5 2.4.5 实现的问题实现的问题 关键路径关键路径每个每个RPC执行的一系列指令顺序称为关键路径。执行的一系列指令顺序称为关键路径。调用存根过程准备消息缓冲区组装参数到缓冲区填入消息头信息陷阱到内核切换到内核将消息拷贝到内核确定目的地址将地址放入消息头启动网络接口开始计时执行服务调用服务器启动栈上的参数拆卸成参数形式切换到服务器存根将消息拷贝到服务器
34、检查该村更是否在等待选定哪一个服务器存根检查包的有效性处理中断客户客户存根内核服务器服务器存根内核服务器机客户机2.4 2.4 远程过程调用远程过程调用2.4.5 2.4.5 实现的问题实现的问题 在关键路径在关键路径的什么地方的什么地方耗时最多?耗时最多?2.4 2.4 远程过程调用远程过程调用2.4.5 实现的问题实现的问题 拷贝拷贝八次拷贝八次拷贝 客户存根客户存根客户内核缓冲区客户内核缓冲区客户接口芯片缓冲区客户接口芯片缓冲区服服务器接口芯片缓冲区务器接口芯片缓冲区服务器内核缓冲区服务器内核缓冲区服务器存根服务器存根如果此调用含有一个大的值参数组时,还需另外三步拷如果此调用含有一个大的
35、值参数组时,还需另外三步拷贝:贝:v将数组拷入客户进程的堆栈以调用客户存根。将数组拷入客户进程的堆栈以调用客户存根。v客户存根组装时,将数组从堆栈拷贝到消息缓冲区中。客户存根组装时,将数组从堆栈拷贝到消息缓冲区中。v服务器存根将数组从消息中取出,放入服务器进程服务器存根将数组从消息中取出,放入服务器进程的堆栈中。的堆栈中。 2.4 2.4 远程过程调用远程过程调用2.4.5 实现的问题实现的问题 拷贝拷贝分散分散-集中集中(汇集)汇集)具有分散具有分散-集中能力网络接口芯片可以减少拷贝次数。集中能力网络接口芯片可以减少拷贝次数。它通过连接两个或多个内存缓冲区来装配一个信包。它通过连接两个或多个
36、内存缓冲区来装配一个信包。在发送端,在发送端, 由客户内核缓冲区生成报文消息头,由客由客户内核缓冲区生成报文消息头,由客户存根生成报文消息体,当发送时,由网络芯片组装报户存根生成报文消息体,当发送时,由网络芯片组装报文。文。接受端将接收来的报文分解成消息体和消息头,并放入接受端将接收来的报文分解成消息体和消息头,并放入相应的缓冲区。相应的缓冲区。 2.4 远程过程调用远程过程调用2.4.5 实现的问题实现的问题 计时管理计时管理使用排序表使用排序表 使用进程表使用进程表 1420014205进程进程 314212进程进程 214216进程进程 00现在时间现在时间142001421601421
37、214205现在时间现在时间进程表进程表01232.5 2.5 组通信组通信2.5.1 2.5.1 组通信的引入组通信的引入 组组及其主要性质及其主要性质组:组是指在某系统或用户指定方式下协同工作的多个进组:组是指在某系统或用户指定方式下协同工作的多个进程的集合。程的集合。主要性质:当一条消息发送到该组后,组内的所有成员都主要性质:当一条消息发送到该组后,组内的所有成员都能收到该消息。能收到该消息。三种通信方式:多点传送、广播通信和单点传送。三种通信方式:多点传送、广播通信和单点传送。 SRSRRRRRRRR2.5 2.5 组通信组通信2.5.2 2.5.2 设计的问题设计的问题 封闭组与开放
38、组封闭组与开放组封闭组:只允许组内成员给该组发送消息,组外成员不能封闭组:只允许组内成员给该组发送消息,组外成员不能向作为一个整体的组发送消息。并行系统,如象棋游戏。向作为一个整体的组发送消息。并行系统,如象棋游戏。开放组:系统内任何进程可以给任何组发送消息,如复制开放组:系统内任何进程可以给任何组发送消息,如复制服务器。服务器。 不允许不允许进程不是进程不是组的成员组的成员封闭组封闭组允许允许进程不是进程不是组的成员组的成员开放组开放组2.5 2.5 组通信组通信2.5.2 2.5.2 设计的问题设计的问题 对等组与分层组对等组与分层组对等组:所有进程地位相同,做决定需组内成员表决。对等组:
39、所有进程地位相同,做决定需组内成员表决。 分层组:分层组:由协调者负责作出决定。由协调者负责作出决定。 对等组对等组分层组分层组协调者协调者工作人员工作人员优点:对称的,没有单点故障优点:对称的,没有单点故障缺点:组内要做出决定更为复杂缺点:组内要做出决定更为复杂优点:组内要做出决定简单优点:组内要做出决定简单缺点:单点故障缺点:单点故障2.5 2.5 组通信组通信2.5.2 2.5.2 设计的问题设计的问题 组的成员组的成员组管理:组管理:使用组服务器使用组服务器分布式方法管理组内成员分布式方法管理组内成员两个带欺骗性的问题两个带欺骗性的问题 区分组成员自愿离开和崩溃区分组成员自愿离开和崩溃
40、加入与离开一个组与发送的消息同步加入与离开一个组与发送的消息同步2.5 2.5 组通信组通信2.5.2 设计的问题设计的问题 组的编址组的编址 给每个组一个唯一的地址,有三种实现方法:给每个组一个唯一的地址,有三种实现方法:进程进程0 0向包括进程向包括进程1 1,3 3,4 4的进程组发消息的进程组发消息0123401234内核丢弃消息内核丢弃消息多点传送多点传送01234单点传送单点传送广播传送广播传送2.5 2.5 组通信组通信2.5.2 2.5.2 设计的问题设计的问题 组的编址组的编址 发送者提供一个所有目的地址的显示列表发送者提供一个所有目的地址的显示列表不透明;一旦组成员改变,用
41、户进程必须更新器组成员不透明;一旦组成员改变,用户进程必须更新器组成员列表列表。判定编址判定编址每条消息包含一个需要计算的判定每条消息包含一个需要计算的判定是一个布尔表达式,涉及到接收者的机器号、它的局部是一个布尔表达式,涉及到接收者的机器号、它的局部变量或其他因素。变量或其他因素。布尔表达式为布尔表达式为TRUE,则消息被接收。如果为,则消息被接收。如果为FALSE,则消息被丢弃。则消息被丢弃。2.5 2.5 组通信组通信2.5.2 2.5.2 设计的问题设计的问题 发送和接收原语发送和接收原语如何将点对点通信和组通信融于一个单独的原语集之中。如何将点对点通信和组通信融于一个单独的原语集之中
42、。采用单向通信模型采用单向通信模型send和和receive的显示调用。系统根据的显示调用。系统根据地址地址 (进程地址或者组地址)区分。(进程地址或者组地址)区分。一些系统引入新的库例程一些系统引入新的库例程 group_send group_receive原子性原子性 原子性:当一条消息发给一个组后,要么该组的所有成员原子性:当一条消息发给一个组后,要么该组的所有成员都收到,要么均未收到。都收到,要么均未收到。如何保证原子性如何保证原子性2.5 2.5 组通信组通信2.5.2 设计的问题设计的问题 消息的顺序消息的顺序一个例子一个例子保证消息传递顺序保证消息传递顺序全局时间顺序和一致时间顺
43、序全局时间顺序和一致时间顺序04时间到1到0到1到3到3到4012340123452.5 组通信组通信2.5.2 设计的问题设计的问题 组的重叠组的重叠一个例子一个例子ABCD1243组组1组组2如何保证不同组时间如何保证不同组时间顺序一致?顺序一致?2.5 组通信组通信2.5.2 设计的问题设计的问题 可测量性可测量性一个例子一个例子G1G3G2G4局域网局域网1局域网局域网4局域网局域网2局域网局域网3多点广播多点广播网关网关如何避免信包被成倍如何避免信包被成倍地多点广播地多点广播?2.6 2.6 小结小结分布式系统的通信分布式系统的通信 客户客户- -服务器模式服务器模式客户向服务器发送
44、请求,然后服务器发回应答。通信原语客户向服务器发送请求,然后服务器发回应答。通信原语的设计问题有:阻塞与非阻塞、有缓冲区和无缓冲区、可的设计问题有:阻塞与非阻塞、有缓冲区和无缓冲区、可靠与不可靠等等。靠与不可靠等等。远程过程调用远程过程调用一台机器上运行的客户进程调用在另一台机器上的某个过一台机器上运行的客户进程调用在另一台机器上的某个过程。运行系统嵌入在存根的过程库中,用来收集参数、建程。运行系统嵌入在存根的过程库中,用来收集参数、建立消息并与内核一起建立一个实际的传递位的接口。立消息并与内核一起建立一个实际的传递位的接口。组通信组通信RPCRPC只能用于一个服务器与一个客户通信的方式。当通
45、信涉只能用于一个服务器与一个客户通信的方式。当通信涉及到多个进程时,需要组通信机制。及到多个进程时,需要组通信机制。习题1. 1.客户客户- -服务器模式的主要思想及优点。服务器模式的主要思想及优点。2.2.客户为了发送消息给服务器,它必须知道服务器的客户为了发送消息给服务器,它必须知道服务器的地址。试给出服务器进程编址的几种方法,并说明地址。试给出服务器进程编址的几种方法,并说明如何定位进程。如何定位进程。3.3.对于接收消息对于接收消息ReceiveReceive原语,为什么需要缓存原语,为什么需要缓存, , 缓存的缓存的作用是什么作用是什么? ?4.4.说明在说明在C/SC/S模式下解决
46、消息可靠传输的三种方法模式下解决消息可靠传输的三种方法? ?5.5.说明说明RPCRPC的主要思想及的主要思想及RPCRPC调用的主要步骤。调用的主要步骤。习题6.6.在在RPCRPC调用时,如果服务器崩溃了,有哪些解决方法调用时,如果服务器崩溃了,有哪些解决方法?7.7.在在RPCRPC调用时,如果客户机崩溃了,有哪些解决方法调用时,如果客户机崩溃了,有哪些解决方法?8.8.一个影响一个影响RPCRPC执行时间的问题是消息的拷贝问题,试执行时间的问题是消息的拷贝问题,试说明在那些环节需要拷贝,并说明减少拷贝次数的说明在那些环节需要拷贝,并说明减少拷贝次数的方法。方法。9.9.在组通信中,给出组编址的的三种方式。在组通信中,给出组编址的的三种方式。10.10.用组通信方式时,举例说明消息顺序的重要性,并用组通信方式时,举例说明消息顺序的重要性,并说明解决方法。说明解决方法。