首页 > 其他分享 >RPC和 HTTP协议

RPC和 HTTP协议

时间:2024-07-31 20:17:31浏览次数:16  
标签:协议 HTTP 请求 TCP RPC 链接

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 都好

标签:协议,HTTP,请求,TCP,RPC,链接
From: https://www.cnblogs.com/zbcn/p/18335386

相关文章

  • 【动态路由协议】RIP
    一、前导知识       动态路由协议分类:               1.IGP(内部网关协议,位于同一个自治系统内)                       1.1距离矢量路由协议                               RIP(距离矢......
  • 基于 STM32 的 NAS私有云盘搭建:集成LwIP 协议、HTTP/HTTPS、WEB前端技术栈(代码示例)
    项目概述在本项目中,我们将搭建一个基于STM32的NAS(网络附加存储)私盘,通过网络访问存储在外部SATA硬盘上的文件。该项目将使用STM32开发板、外接SATA硬盘、LwIP协议栈以及FATFS文件系统来实现文件的上传、下载和管理,用户可以通过简单的Web界面进行操作。系统设计......
  • go-zero api 调用 rpc 实践
    目录rpc部分proto定义rpc代码生成完成rpcserver业务逻辑修改rpc配置文件启动rpcserverapi部分api定义复制rpc生成的代码到api修改对应代码启动apiserver测试及结果postman发送请求apiserverrpcserver在微服务中,外部通过api请求资源,内部通过rpc完成调用处......
  • 如何设计可扩展的RPC协议
    如何设计可扩展且向后兼容的RPC协议为什么不直接用现成的HTTP协议?RPC的职责是负责应用间的通信,所以性能要求相对更高。而HTTP协议的数据包相对于请求数据本身要大很多,有很多冗余内容(如换行回车等),会影响性能。另外HTTP协议是无状态的协议,每次请求都要重新建立连接。因此对于要......
  • Profibus转EtherCAT协议转化网关(功能与配置)
    如何能够把Profibus和EtherCAT通讯连接起来?这几天有几个客户朋友咨询到这个问题,作者在这里统一为大家回复一下。想要解决这个问题其实也非常简单,只需要用到一个设备,名为JM-DPM-ECT。下面作者为大家详细讲解一下该设备的主要功能及详细配置方法。一,设备主要功能捷米特JM-DPM-......
  • 零代码GIS视效升级!一键添加环境效果,支持多种GIS影像协议
    在当今的三维GIS领域,如何轻松实现视效升级?这款免费可视化工具——山海鲸可视化,可以给你提供零代码解决方案。山海鲸可视化从三维GIS需求出发,带来了一键添加环境效果的强大功能,显著提升视觉效果。无论是体积云、体积雾还是其他天气效果,只需简单操作,即可呈现逼真环境场景,让GIS视效焕......
  • RPC核心原理
    什么是RPCRPC就是远程过程调用RPC的作用屏蔽远程调用和本地调用的区别,让我们感觉就是调用本地项目内的方法。隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。RPC通信流程一个完整的RPC会涉及哪些步骤呢?在调用方程序中,RPC框架根据调用的服务接口提前生成动态代理实现类......
  • 浅谈取样器之HTTP请求
    浅谈取样器之HTTP请求HTTP请求(HTTPRequest)是进行Web应用负载测试时最常用的取样器类型,允许用户模拟各种HTTP请求,如GET、POST等,以评估服务器在不同负载条件下的表现。添加HTTP请求线程组:在刚创建的线程组上右键>“添加(Add)”>“取样器(Sampler)”>“HTTP请求(H......
  • 协议加密
    根据上篇,如果我们通讯协议不进行加密,被人抓包后很容易解析出来,这个时候我们就需要对协议进行加密处理,协议传输本质上是传输的二进制字节流,我们可以考虑用一定的方式修改字节数据,最简单的方式是把0改成1,把1改成0,也就是直接取反,这也是一种加密方式,虽然比较容易被破解,意义不大,我们可......
  • SOMEIPSRV_RPC_11: 字段的设定器和有效载荷
    测试目的:验证字段的setter方法是否按照规范要求,通过请求/响应调用实现,其中请求消息的负载包含期望的字段值,响应消息的负载包含已设置到字段的值。描述本测试用例旨在验证DUT(DeviceUnderTest,被测试设备)在接收到字段setter方法的请求时,是否能够正确地在响应消息中返回设......