仿真软件技术 课件 第9章 -分布式交互通信技术:RPC通信技术_第1页
仿真软件技术 课件 第9章 -分布式交互通信技术:RPC通信技术_第2页
仿真软件技术 课件 第9章 -分布式交互通信技术:RPC通信技术_第3页
仿真软件技术 课件 第9章 -分布式交互通信技术:RPC通信技术_第4页
仿真软件技术 课件 第9章 -分布式交互通信技术:RPC通信技术_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课前回顾REP客户端REQ服务器

ZeroMQ的三种模式请求-应答模式、发布-订阅模式、管道模式这是哪种模式?请求-应答模式对应于RPC的传统客户端/服务器模型问题引导RPC通信原理是什么?RPC通信与本地过程调用的区别?常见的RPC框架有哪些?仿真软件技术第9章分布式交互通信技术SimulationSoftwareTechnology第9.1节RPC通信第9.3节RPC通信9.3.1RPC通信的基本概念9.3.2RPC调用9.3.3RPC通信的常见框架本讲内容9.3.1RPC通信的基本概念RPCRPC,远程过程调用(RemoteProcedureCall)通俗来说是指计算机A上的进程,调用另外一台计算机B上的进程,其中A上的调用进程被挂起,而B上的被调用进程开始执行,当值返回给A时,A进程继续执行。RPC背后的思想是尽量使远程过程调用具有与本地调用相同的形式。9.3.1RPC通信的基本概念RPC概念RPC(远程过程调用)远程过程过程调用远程方法业务拆解分布式部署方法调用传入参数执行方法得到返回值RPC为分布式系统构建带来便利,但分布式系统本身也有通信延迟、地址空间被隔离等问题9.3.1RPC通信的基本概念RPC通信流程客户服务器调用远程过程从调用返回请求应答调用本地过程并返回结果等待结果时间9.3.1RPC通信的基本概念RPC核心部分服务调用方(Consumer)调用端的本地存根(Stub)服务提供方(Provider)服务端的本地存根(Stub)RPCRuntimeRPC核心部分本地存根是为了解决地址空间隔离问题RPCRuntime负责数据包的重传、确认、路由、加密等9.3.1RPC通信的基本概念RPC核心部分01服务提供方服务提供方的职责就是提供服务,执行接口实现的方法逻辑,也就是为服务提供端的本地存根提供方法的具体实现。02本地存根本地存根分为服务调用端的本地存根和服务提供端的本地存根。服务调用端的本地存根和服务调用方都属于服务消费端,它们存在于同一台机器上,本地存根会解析函数调用的函数名、参数等信息,整理并且组装这些数据,然后将这些数据安装定义好的协议进行序列化,打包成可传输的消息,交给RPC通信者。9.3.1RPC通信的基本概念RPC核心部分03服务调用方当服务提供端的RPCRuntime收到请求后,交由服务提供端的本地存根进行参数等数据的转化。等函数执行完成后,服务提供端会将执行结果返回给服务提供端的本地存根,由本地存根再将结果数据系列化、打包,最后交给RPCRuntime。04RPCRuntime服务调用方也叫服务消费者,它的职责之一是需要提供调用的接口的全限定名和方法,调用方法的参数给调用端的本地存根;职责之二是从调用端的本地存根中接收执行结构。9.3.1RPC通信的基本概念与本地过程调用的区别和联系

区别本地过程调用(LPC)发生在同一台计算机内部,不涉及网络通信;RPC则涉及网络通信,需要处理网络延迟、数据序列化与反序列化等问题。

联系RPC和LPC在本质上都是过程调用,都涉及函数的调用和执行。RPC可以看作是LPC的一种扩展,将调用范围从本地扩展到了远程。第9.1节RPC通信9.3.1RPC通信的基本概念9.3.2RPC调用9.3.3RPC通信的常见框架本讲内容9.3.2RPC调用RPC调用RPC调用,大抵可以分为下面四个阶段:服务暴露服务发现服务引用方法调用9.3.2RPC调用服务暴露服务暴露也称服务导出,发生在Provider端远端本地服务暴露发生在Provider端,暴露在本地是指直接将Provider的地址+端口写死在Consumer中,耦合度严重。暴露在远程是指把Provider服务暴露在注册中心。9.3.2RPC调用服务发现服务发现注册中心式直连式两种方式和服务暴露相对应服务发现的过程发生在(Consumer)端,服务发现的过程也就是寻址的过程Consumer端如果要发起RPC调用,则需要先知道自己想要调用的应用服务有哪些服务提供者,也就是需要知道这些服务提供者的地址和端口。9.3.2RPC调用服务引用服务引用服务引用的过程是与某一个服务节点建立连接服务引用的过程发生在服务发现之后,当Consumer端通过服务发现获取所有服务提供者的地址后,通过负载均衡策略选择其中一个服务提供著的节点进行服务引用。服务引用的过程就是与某一个服务节点建立连接,以及在Consumer端创建接口的代理的过程其中建立连接也就是两端的RPCRuntime建立连接的过程。9.3.2RPC调用方法调用发起请求Consumer接收结果序列化反序列化接收结果数据等待接收请求数据发送结果数据反序列化序列化接收调用返回结果执行方法stubRPCRuntimeRPCRuntimestubProvider发送请求数据调用方法的数据包传输调用结果的数据包传输网络机器A机器B方法调用以下关于RPC通信的说法中,论述正确的是()RPC允许像调用本地服务一样调用远程服务,并隐藏了具体的通信细节RPC通信是一种基于HTTP协议的通信方式RPC通信主要用于在同一台计算机上的两个进程间进行通信。RPC通信中,客户端和服务器端必须共享相同的内存空间。ABCD提交单选题1分第9.1节RPC通信9.3.1RPC通信的基本概念9.3.2RPC调用9.3.3RPC通信的常见框架本讲内容9.3.3RPC通信的常见框架RPC框架RPC框架是为了不用感知RPC调用实现中细节的工具,就是一个轮子。常见的框架有dubbo、gRPC、Trift等9.3.3RPC通信的常见框架Dubbodubbo由阿里巴巴开源的高性能RPC框架,支持服务治理和多种协议,设计了自己的SPI机制,增加模块之间的可插拔能力。9.3.3RPC通信的常见框架Dubbo特点提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。远程通讯提供基于接口方法的透明远程过程调用(RPC),包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。集群容错基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。自动发现9.3.3RPC通信的常见框架gRPCgRPCgRPC是2015年google开源的一个语言中立、平台中立、高性能的框架,采用自研的ProtocolBuffers作为序列化的解决方案,支持流式通信组合,权限验证机制丰富。9.3.3RPC通信的常见框架gRPC实现封装DATAJSONGPBGRPCHTTP2.0TCP业务模块的数据,通信双方需要了解彼此的数据模型,才能正确交互信息gRPC通过ProtocolBuffers编码格式承载数据远程过程调用,定义了远程过程调用的协议交互格式gRPC承载在HTTP2.0协议上TCP连接提供面向连接的、可靠的、顺序的数据链路9.3.3RPC通信的常见框架gRPC特点使用HTTP/2作为底层传输协议,支持多路复用,能够高效的传输大量的请求和响应数据。高性能支持请求和响应的流式传输,可以实现双向流式通信、单向流式通信等多种模式。可拓展性使用ProtocolBuffers作为接口定义语言,通过定义接口和消息类型,可以方便地生成各种场景的需求。代码自动生成支持多种编程语言,可以在不同的语言之间进行通信。跨语言支持9.3.3RPC通信的常见框架ThriftThriftThrift是保存语言和平台中立的RPC框架,设计了自己的IDL编译工具,具有高性能、多语言支持、动态扩展性等特点。9.3.3RPC通信的常见框架Thrift特点通过IDL文件定义接口函数和数据类型,这些文件可以被Thrift的编译器转化为不同语言的代码,从而实现跨语言通信。接口描述语言Thrift为服务器端程序提供了多种工作模式,如线程池模型、非阻塞模型等,可以根据实际应用场景选择最合适的工作模式。多种工作模型Thrift支持二进制传输协议,相比文本格式(如XML,JSON),二进制传输在体积和效率上更有优势,特别是在数据量大的体系中。高效传输9.3.3RPC通信的常见框架现有框架对比gRPCThiftdubbo开发语言多语言多语言Java序列化protobufThift格式hession2注册中心××Zk等跨语言√√×服务定义protobuf文件Thift文件Java接口服务治理×××9.3.3RPC通信的常见框架RPC框架选择框架语言与平台中立项目需求和规模社区和生态性能和扩展性模块开发可能是跨语言、跨平台的强大的社区与生态系统意味着更好的支持与更新,以及更多的工具与插件框架的性能和扩展性需求,需要考虑具体场景选择不同的RPC框架适用于不同的项目此外

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论