`

HTTP与RPC的区别

阅读更多

OSI网络结构的七层模型

各层的具体描述如下:

  第七层:应用层     定义了用于在网络中进行通信和数据传输的接口 - 用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输 和处理; 
  第六层:表示层     掩盖不同系统间的数据格式的不同性; 指定独立结构的数据传输格式; 数据的编码和解码;加密和解密;压缩和 解压缩 
  第五层:会话层     管理用户会话和对话; 控制用户间逻辑连接的建立和挂断;报告上一层发生的错误 
  第四层:传输层     管理网络中端到端的信息传送; 通过错误纠正和流控制机制提供可靠且有序的数据包传送; 提供面向无连接的数 据包的传送; 
  第三层:网络层     定义网络设备间如何传输数据; 根据唯一的网络设备地址路由数据包;提供流和拥塞控制以防止网络资源的损耗 
  第二层:数据链路层 定义操作通信连接的程序; 封装数据包为数据帧; 监测和纠正数据包传输错误 
  第一层:物理层      定义通过网络设备发送数据的物理方式; 作为网络媒介和设备间的接口;定义光学、电气以及机械特性。

 在上述7层中,http协议是应用层协议。HTTP协议是超文本传送协议(HyperText Transfer Protocol)的缩写,它是万维网(World Wide Web,www,也简称为Web)的基础。HTTP协议设计之初就是为了实现Web的想法。HTTP协议位于TCP/IP协议栈的应用层。基于HTTP协议的客户/服务器模式的信息交换过程,分四个过程:建立连接、发送请求信息、发送响应信息、关闭连接。

而关于RPC的基本概念介绍如下:


英文原义:Remote Procedure Call Protocol
中文释义:(RFC-1831)远过程调用协议
   注解:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加轻易。
   RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用过程接收答复信息,获得进程结果,然后调用执行继续进行。
RPC信息协议由两个不同结构组成:调用信息和答复信息。

 

同时也注意到 了 这样的信息

远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)

几种基于HTTP协议的RPC性能比较

RPC和Socket的区别

http://blog.163.com/fanning_7213/blog/static/249650520113124540501/

RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像LPC(本地过程调用).

    越底层,代码越复杂、灵活性越高、效率越高;越上层,抽象封装的越好、代码越简单、效率越差。Socket和RPC的区别再次说明了这点。

不论是程序员在编写基于C/S(客户端服务器)的程序时,还是网络工程师在处理RPC问题时,他们问的最多的就是RPC和Socket有什么区别和联系? 
   RPC(Remote Procedure Call,远程过程调用)是建立在Socket之上的,出于一种类比的愿望,在一台机器上运行的主程序,可以调用另一台机器上准备好的子程序,就像 LPC(本地过程调用).RPC带来了开发C/S程序的简单可靠的手段,它通过一种叫XDR的数据表达方法描述数据,程序员书写伪代码,然后由 rpcgen程序翻译为真正的可编译的C语言源代码,再编译成真正的Client端和Server端程序。 
  RPC作为普遍的C/S开发方 法,开发效率高效,可靠.但RPC方法的基本原则是--以模块调用的简单性忽略通讯的具体细节,以便程序员不用关心C/S之间的通讯协议,集中精力对付实 现过程.这就决定了 RPC生成的通讯包不可能对每种应用都有最恰当的处理办法,与Socket方法相比,传输相同的有效数据,RPC占用更多的网络带宽. 
  RPC是在Socket的基础上实现的,它比socket需要更多的网络和系统资源.另外,在对程序优化时,程序员虽然可以直接修改由rpcgen产生的令人费解的源程序,但对于追求程序设计高效率的RPC而言,获得的简单性则被大大削弱. 
RPC与是Socket的类比

 

 

人们常常错误地将HTTP称作一种远程过程调用(RPC)[23]机制,仅仅是因为它包括了请求和响应。

    调用远程机器上的一个过程(procedure)的观念,是RPC与其他形式的基于网络的应用通信的区别在。 RPC的协议识别出过程并且传递给它固定的一组参数,然后等待在使用相同接口返回的一个消息中提供的回答。远程方法调用(RMI)也是类似的,除了过程被标识为一个{对象,方法}的组合,而不是一个简单的服务过程(service procedure)。被代理的RMI添加了名称服务的间接层和少量其他的技巧(trick),但是接口基本上是相同的。

   将HTTP和RPC区分开的并不是语法,甚至也不是使用一个流作为参数所获得的不同的特性,尽管它帮助解释了为何现有的RPC机制对于Web来说是不可用的。

 

   使得HTTP与RPC存在重大不同的是:请求是使用具有标准语义的通用的接口定向到资源的,这些语义能够被中间组件和提供服务的来源机器进行解释。结果是使得一个应用支持分层的转换(layers of transformation)和间接层(indirection),并且独立于消息的来源,这对于一个Internet规模、多个组织、无法控制的可伸缩性的信息系统来说,是非常有用的。与之相比较,RPC的机制是根据语言的API(language API)来定义的,而不是根据基于网络的应用来定义的。

分享到:
评论

相关推荐

    2-OSI模型与RPC协议1

    RPC与HTTP区别网络7层协议如图所示.如图-22所示图-22层级关系与对应的协议.如图-23所示图-23区别:1.RPC是传输层协议(4层).而HTTP协议

    Rabbit:RPC框架,使用ZooKeeper,Netty,期待良好的设计

    2、RPC与HTTP请求的区别:利用应用层的HTTP协议,也可以满足客户/服务器模式的信息交换,那为何还需要更为复杂的RPC框架呢?我们知道,使用HTTP接口,一般有四个过程:(3次握手)建立(TCP协议)连接,发送请求信息...

    IO_deep_learning_notes.zip

    主要来自于以下课程内容以及其他牛人文章总结+一nene自己的思考 ...207 全手写基于Netty的RPC框架 简单重构框架分层及RPC传输的本质及有无状态的RPC区别 地址 216 自定义HTTP协议解析和HTTPserver调用实现 地址

    组:轻量级框架。实现了定时任务功能,分布式任务变量,命令行控制台,数据库脚本自动化,单元测试,rpc服务,多进程服务(模拟map-reduce)等等实用的功能!! https:fucongcong.gitbooks.iogroup-doccontent

    一键启动rpc服务,不与主业务冲突,轻松完成后续SOA转行,支持TCP HTTP Websocket协议 一键启动定时任务,还在用系统自带的cronjob?(支持子进程重启,自动重启,防止内存泄漏) 一键启动任务,还在自己集成的服务...

    大型分布式网站架构与实践

     如何实现基于HTTP协议和TCP协议的RPC调用,它们之间有何差别,分别适应何种场景。  如何实现服务的动态注册和路由,以及软负载均衡的实现。  1.1 基于TCP协议的RPC 3  1.1.1 RPC名词解释 3  1.1.2 对象的...

    Spring Cloud OpenFeign 远程调用

    OpenFeign 和 Dubbo一样是一个RPC远程调用框架,目的是使的我们调用接口和调用本地方法一样简单,开发者无需关心和远程的交互细节( 即不需要通过常规的 Http Client 构建请求再解析返回数据,让开发者在调用远程接口...

    ASP API接口和返回的版本

    这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的...

    JSP API接口和返回的版本

    这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的...

    PHP API接口和返回的版本

    这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的...

    .NET API接口和返回的版本

    这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的...

    JS JSP ASP .NET J2AM API接口和返回的版本

    这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的...

    JS API接口和返回的版本

    这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的...

    2AM API接口和返回的版本

    这个服务器端只要它的名字与发布的地址与上面那个发布函数的例子一样的话,上面的那个客户端就可以得到同样的结果,也就是说,在客户端看来是没有任何区别的。 它并不是只可以在 PHP 中使用,它同样支持其它语言的...

    REST API.md

    REST 、DO、RPC之间区别对比 REST与CORBA、SNMP、SOAP比较 腾讯开放平台REST API 示例 通过URL来设计系统结构,抽象的是资源,而不是对象、过程,完成的是用户接口 REST API的开发框架介绍:JSR-311,REST Web ...

    SpringCloud1.pdf

    - 了解RPC与Http的区别 - 知道什么是SpringCloud - 独立搭建Eureka注册中心 - 独立配置Robbin负载均衡 # 1.系统架构演变 随着互联网的发展,网站应用的规模不断扩大。需求的激增,带来的是技术上的压力。系统...

    浅谈soap协议

    本文对 SOAP 作了一个初步介绍,给出几个简单示例;接着比较 CORBA,DCOM/COM 与 SOAP 的联系与区别;然后浅析 SOAP 简单的理解为 RPC+HTTP+XML 时的运行机制;最后展现 SOAP 的前景。

    2020年春招最新阿里Java面试题集锦

    rpc与http的区别 设计rpc协议需要注意什么 项目中如何使用kafka 消息队列的使用场景 kafka如何保证消息投递的可靠性 聊聊jvm,内存分布,垃圾回收 创建类的流程,类加载流程 了解做过的项目的复杂度 一面: 自我介绍...

    java面试笔试资料包括JAVA基础核心知识点深度学习Spring面试题等资料合集.zip

    Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别.doc MySQL千万级的大表要怎么优化(读写分离、水平拆分、垂直拆分).doc redis缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级.doc RPC (Remote ...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【WEB】session与cookie的区别与联系;session的生命周期 34 session与cookie的区别与联系 34 session的生命周期 35 【WEB】servlet 生命周期 35 【WEB】阐述JDBC操作数据库的步骤 36 【WEB】JSP内置对象 37 【WEB】...

    Python编程入门经典

    1.1 编程与使用计算机的区别 3 1.1.1 编程的一致性 3 1.1.2 编程的可控性 4 1.1.3 程序要应对变化 4 1.1.4 小结 4 1.2 准备工作 4 1.2.1 在非Windows系统上安装 Python 3.1 5 1.2.2 使用Python Shell 5 1.3 开始使用...

Global site tag (gtag.js) - Google Analytics