分布式系统之2通信1.ppt

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2、远程对象方法调用 在将客户绑定到对象之后,就可以通过代理来调用对象的方法,这种远程对象方法的调用称为RMI(Remote Method Invocation)。 静态远程方法调用:使用预定义接口。即,在开发客户程序的时候需要知道对象的调用接口。 动态远程方法调用:运行时建立对象方法的调用。最常见的形式如下: invoke(object, method, input_parameters, output_parameters); 作业 中间件层协议位于七层模型的什么位置? 基本RPC调用过程中客户端进程阻塞时间是多长? RPC调用能传递指针参数吗?有什么解决方式? 异步RPC与同步RPC二者的过程有什么不同?异步 RPC是否适用于有返回值的调用? 第二章 通信 概述 进程间通信——分布式系统的核心 分布式系统通信——基于底层网络提供的消息传递机制 四种广泛使用的模型: 远程过程调用RPC 远程方法(对象)调用RMI 面向消息的中间件 流 一、分层协议 1、概念 目标:进程通信的基础 ISO OSI参考模型 低层协议 传输层协议 高层协议 TCP/IP协议族,互联网的实际标准 OSI七层模型 2、低层协议 物理层 定义网络的物理特性,包括机械、电气等特性 数据链路层 检测并纠正物理层传输的错误 网络层 首要任务是最佳路径选择(路由选择) 传输协议 传输层的主要任务:提供可靠的传输服务。 客户端-服务器TCP TCP连接过程 a 正常的TCP握手过程 b 事务性TCP 3、高层协议 会话层和表示层协议 应用层协议 中间件协议 中间件是一种应用程序,它在逻辑上位于应用层,但包含多个通用协议。 为提供不同的中间件服务,设计不同的中间件协议。例如: 授权协议(授权与认证) 分布式提交协议(用于分布式事务) 分布式锁协议(解决分布式并发访问) 调整后的网络通信参考模型 二、远程过程调用(RPC) 1、RPC的目标 将消息传递的大部分复杂性隐藏起来 理解 RPC实现的复杂性 分布式系统透明性的宗旨 许多分布式系统基于显式消息交换,消息的发送和接收都无法隐藏通信的存在,而通信的隐藏对分布式系统的访问透明性极其重要。 RPC允许程序调用位于其他机器上的进程。其原理描述如下: 当主机A上的进程调用B上的进程时,A上的调用进程被挂起,B上的被调用进程执行。调用方通过参数将信息传递给被调用方,然后通过传回的结果得到信息。整个过程用户看不到消息的传递细节。 B A 调用 传回 RPC原理 2、RPC基本原理 RPC调用基本过程 3、基本RPC操作 常规调用(本地调用):参数压栈 例:count = read(fd, buf, nbytes); 基本RPC操作 RPC的两个概念:客户端存根和服务器端存根,同一RPC过程在客户端和服务器上的不同形式。 完整的RPC步骤: 客户过程以正常方式调用客户存根 客户存根生成一个消息,然后调用本地操作系统 客户端操作系统将消息发送给远程操作系统,并阻塞客户过程 远程操作系统将消息交给服务器存根 服务器存根将参数提取出来,然后调用服务器 服务器执行要求的操作,操作完成后将结果返回给服务器存根 服务器存根将结果打成消息包,然后调用本地操作系统 服务器操作系统将消息发送回客户端操作系统 客户端操作系统将消息交给客户存根 客户存根将结果从消息中提取出来,返回给调用进程 基本RPC流程 4、参数传递1——传递值参数 第一种参数传递的方式:传递值参数 把参数的值打包到消息中,并在消息中加入要调用的过程名称或者编号。 传递值参数 传递值参数的一个关键问题:各种系统的数据表示方式不一致。 原始消息和逆转后的消息。(方框中的数字表示字节地址) a、 奔腾处理器系统上的原始消息 b、 SPARC处理器系统接收的消息 c、逆转后的消息 参数传递2——传递引用参数 既然有远程过程调用,能否传递指针参数,因为对很多过程,指针参数有着非常重要甚至无法替代的地位。 最大难题:指针只有在使用该指针的进程所在的地址空间内才有意义。 第一种解决办法:禁止指针与引用(当然不可取)。 传递引用参数 第二种办法:如果我们知道指针所指区域的大小,很容易想到把该内存区域的值整块打包到消息中。服务器执行完后把改动后的这块区域复制到结果消息中,客户存根再将它还原。这种方式实际上是用复制-还原调用来代替引用(指针)调用。 客户机 服务器 传递引用参数 更进一步,如果我们知道缓冲区是用作输入还是输出,就可以省略其中某些步骤而提高调用效率。如果为输入缓冲区,则没必要回传,如果为输出缓冲区,则在调用时可以不传递。 服务器 客户机 服务器 客户机 参数说明与存根生成 RPC协议:规定消息格式,以及各种简单数据类型的一致表示方式。 存根的实现:用接口

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档