RPC 和HTTP 的区别

服务发现

  • HTTP,知道服务域名,可以通过 DNS 解析 得到 服务的IP地址,从而进行访问
  • RPC 需要一个专门的中间服务去保存服务名和IP信息(注册中心,nacos、consul),想要访问某个服务,就得同时注册到 中间服务,然后获取需要顶用服务的IP 和端口信息

底层链接形式

  • HTTP/1.1 默认在底层建立TCP 链接后,会一直保持这个链接(keep alive),后边的请求和响应回服用这条链接
  • RPC 协议,和http 相同的地方是,通过 建立TCP 长链接进行数据交互,不同的地方是,RPC 一般会再建立一个链接池,大量请求时,会建立多条链接放在链接池中。需要时,从链接池取,不需要时,放回链接池

传输内容

  • RPC 和HTTP 协议都有请求头和请求体,但是请求头里面放的内容不一致,由于请求体的数据格式不一致,请求头里面会存储请求体的解析方式,为了解决 body 的解析方式,请求体会有差异
  • 一般消息都是结构化的信息,但是 TCP 传输过程中,都是 二进制 的 01 串(计算机只认识 0,1),所以从应用层将数据传输前,将结构体转换成 二进制 ,这个过程叫做 序列化, 反过来,从传输层发送的消息是二进制的,需要将二进制的数据转换成 结构体的过程叫 反序列化
  • 一般,HTTP协议为了做到足够的通用,会在请求头中添加更多的信息,所有内容会偏多,整个消息体 会比RPC 偏大。但是不绝对,如果RPC 底层协议采用 http ,那就相反了

总结

  1. TCP 、UDP协议,是传输层协议,而 RPC 和 http 都定义了不同的消息格式,可以认为都是应用层协议

  2. HTTP协议: hyper text transfer protocol(超文本传输协议), 由于浏览器的诞生衍生出来的协议

  3. RPC 协议 : romote procedure call (远程过程调用协议),他本身不是一种协议,而是一种调用方式。 RPC 本身有很多实现方式,底层协议不一定基于TCP,可以是 UDP、http 协议

  4. 纯裸的TCP 能收发数据,但是他它是一个无边界的数据流,上层(应用层)需要定义消息格式,用于定义消息边界

  5. 历史的发展来说,RPC 其实比HTTP 出出现的时间更早, HTTP 主要用于 B/S 架构,RPC 主要用于C/S 架构,现在慢慢的有了融合的迹象。

  6. HTTP/2.0 在 HTTP/1.0 上做了优化,性能比RPC 都好

RPC和 HTTP协议的更多相关文章

  1. RPC基于http协议通过netty支持文件上传下载

    本人在中间件研发组(主要开发RPC),近期遇到一个需求:RPC基于http协议通过netty支持文件上传下载 经过一系列的资料查找学习,终于实现了该功能 通过netty实现文件上传下载,主要在编解码时 ...

  2. Solon rpc 之 SocketD 协议 - 消息鉴权模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  3. Solon rpc 之 SocketD 协议 - 消息上报模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  4. Solon rpc 之 SocketD 协议 - 消息应答模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  5. Solon rpc 之 SocketD 协议 - 消息订阅模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  6. Solon rpc 之 SocketD 协议 - RPC调用模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  7. Solon rpc 之 SocketD 协议 - 单链接双向RPC模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  8. Solon rpc 之 SocketD 协议 - 消息加密模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  9. Solon rpc 之 SocketD 协议 - RPC鉴权模式

    Solon rpc 之 SocketD 协议系列 Solon rpc 之 SocketD 协议 - 概述 Solon rpc 之 SocketD 协议 - 消息上报模式 Solon rpc 之 Soc ...

  10. 游戏编程系列[2]--游戏编程中RPC与OpLog协议的结合--序

    在系列[1]中,我们展示了RPC调用协议的定义以及演示,通过方法定义以及协议约定,进行了协议约定以及调用过程的约定.然而,实际上在游戏中,调用过程之后,需要传输相对多的数据给服务端. 常用场景,客户端 ...

随机推荐

  1. 调试YOLOv3/YOLOv5过程中遇到的问题汇总

    今日立冬 yolov1 yolo1论文 https://www.bilibili.com/video/BV15w411Z7LG yolo2论文 https://www.bilibili.com/vid ...

  2. 使用C代码实现读取文件中的hex字符串,转换为字节数组

    举例说明: ptp.txt文件中的内容为: 7a7ac0a8c80100000000003388f70002002c000004000000000000000000000000000000000000 ...

  3. Java常用的三个方法 `wait ` `notify` `notifyAll`

    常用的三个方法 wait notify notifyAll wait();方法使当前线程进入等待状态,直到另一个线程调用该对象的notify()或notifyAll()方法来唤醒它 notify(); ...

  4. Windows10 LTSC版,比Win7还干净

    在Windows操作系统的发展历程中,每一个版本都承载着微软对用户需求的深度理解和技术创新.其中,Windows 7以其稳定.高效和简洁的特点,赢得了众多用户的喜爱. 然而,随着技术的不断进步和用户需 ...

  5. bpmn.js

    在 BPMN.js 中,$inject 属性通常用于声明依赖注入的模块列表.这些模块会在创建对象实例时由依赖注入框架(如 AngularJS)提供.以下是在 BPMN.js 中常见的一些 $injec ...

  6. log4net info 方法 根据不同业务创建不同的文件名

    log4net info 方法 根据不同业务创建不同的文件名 <configuration> <!-- ... 其他配置 ... --> <configSections& ...

  7. 使用final shell 连接使用 ubuntu server linux

    书接上回,VM 安装ubuntu server:https://www.cnblogs.com/runliuv/p/16880599.html 1.从 https://www.hostbuf.com/ ...

  8. k8s节点状态Init:0/1

    k8s节点状态Init:0/1 在节点机器上打印日志: journalctl -f -u kubelet 出现以下内容: 5月 29 15:27:34 k8snode2 kubelet[2249]: ...

  9. Promise 期约

    Promise 期约之前 回调地狱 设想这样一个经常发生的场景,我们希望处理Ajax请求的结果,所以我们将处理请求结果的方法作为回调传入,需要将请求结果继续处理,这就导致我们陷入了回调地狱 doSom ...

  10. springboot之日志配置-logback

    springboot之日志配置-logback 1.为什么使用logback logback是springboot默认集成的,是基于Sl4J的日志框架. logback的内核重写了,使得在某些关键路径 ...