0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

为什么有了HTTP,还需要RPC协议?

亿佰特物联网应用专家 2023-08-14 10:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

为什么有了HTTP,还需要RPC协议呢?在进行说明之前,首先我们需要了解什么是HTTP协议,什么是RPC协议。

0ea2595c-3a47-11ee-bbcf-dac502259ad0.png

什么是HTTP协议?

HTTP是一种广泛使用的网络传输协议,它定义了客户端(如浏览器, 手机用户APP等)和服务器(网站等提供服务的,服务端)之间的通信格式和通信方法,它是基于请求—响应这样一种通信模型,即服务端根据请求返回一个响应,在请求和响应中,都包含了两端(客户端和服务端)之间进行交互的一些信息,如方法、头部、正文等。

0eb13288-3a47-11ee-bbcf-dac502259ad0.png

图1 HTTP交互基本流程图


HTTP具有很多优点,它支持多种数据格式和编码方式,可以实现跨平台和跨语言的通信,通信简单、灵活、易于扩展。但是同时它也有一些缺点:

(1)HTTP是无状态的,每次请求都需要重新建立连接,这会增加网络开销和延迟。

(2)数据传输是基于文本的,这会导致数据量较大,解析效率较低。

(3)安全性较差,因此容易受到中间人攻击、重放攻击等。

(4)语义较弱,HTTP只能表达基本的增删改查操作,不能满足复杂的业务逻辑。

0ec55308-3a47-11ee-bbcf-dac502259ad0.png

什么是RPC协议?


RPC即Remote Procedure Call(远程程序调用),它是一种远程过程调用协议,它允许客户端像调用本地函数一样调用远程服务器上的函数。

0ed30ad4-3a47-11ee-bbcf-dac502259ad0.png

图2 RPC协议交互流程

RPC的优点是高效、强大、易于使用,但是它也有一些缺点,比如:

(1)与HTTP相反,RPC是有状态的,需要维护客户端和服务器之间的连接状态,这会增加系统的复杂度和资源消耗。

(2)RPC的数据传输是基于二进制的,这会导致数据不易阅读和调试。

(3)RPC的兼容性较差,不同的RPC框架之间可能存在协议和接口的不一致性。

(4)RPC的可扩展性较差,难以支持动态服务发现和负载均衡等功能。

0efebf6c-3a47-11ee-bbcf-dac502259ad0.png

二者的选择使用


基于TCP建立的HTTP和各类RPC协议,只是定义了不同消息格式的应用层协议。HTTP协议是超文本传输协议,而RPC本身并不是一个具体的协议,而是一种调用方式。

0f1db37c-3a47-11ee-bbcf-dac502259ad0.png

虽然HTTP现在叫超文本协议,支持音频视频,但HTTP设计初主要是用做展示网页文本,所以它传输的内容以字符串为主,内容存在非常多的冗余。而RPC协议定制化程度更高,可以采用体积更小的protobuf或其他序列化协议去保存结构体数据,同时也不需要像HTTP那样考虑各种浏览器行为,性能更好。因此在公司内部微服务中抛弃HTTP,转而使用RPC协议。虽然后来HTTP得到了很大的改进,但由于很多公司内部已经用了多年的RPC协议,基于历史原因,一般没有选择更换成HTTP。

在实际运用中,不论是HTTP还是RPC,它们都有各自的优缺点,没有绝对的好坏之分。针对不同的使用场景选择合适的协议。比如:

(1)在微服务架构中,服务之间需要频繁地进行内部调用,RPC可以提供更高的性能和可靠性。

(2)在分布式计算中,需要将大量的计算任务分发到不同的节点上执行,RPC可以实现更灵活的负载均衡和容错机制。

(3)而在实时通信中,需要实现低延迟和高并发的数据交换,RPC可以支持多种传输协议和通信模式。

而假如你需要实现跨平台和跨语言的通信,或者需要支持多种数据格式和编码方式,或者需要利用现有的HTTP基础设施和工具,可以选择HTTP协议。

当然这样不是绝对固定的组合,也可以结合两个协议来实现更好的网络,例如:

(1)我们可以在HTTP协议上封装RPC协议,使得RPC请求可以通过HTTP代理或者网关来转发和处理。

(2)可以在RPC协议上使用HTTP协议作为传输层,使得RPC请求可以利用HTTP的特性来实现缓存、压缩、加密等功能。

所以总的来说,RPC的出现是为了应对HTTP协议满足不了的对性能有所要求的网络场景。它们并不是互斥的,而是可以根据不同的场景和需求进行选择和组合的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信
    +关注

    关注

    18

    文章

    6457

    浏览量

    140282
  • 协议
    +关注

    关注

    2

    文章

    620

    浏览量

    41198
  • 网络
    +关注

    关注

    14

    文章

    8340

    浏览量

    95600
  • HTTP
    +关注

    关注

    0

    文章

    538

    浏览量

    35567
  • RPC
    RPC
    +关注

    关注

    0

    文章

    114

    浏览量

    12298
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自动驾驶占用网络还需要卷积神经网络吗?

    在占用网络流行之前,自动驾驶的主流感知方案是基于CNN的目标检测。你可以把它想象成给摄像头拍到的每一张照片画框。
    的头像 发表于 05-04 18:05 266次阅读
    自动驾驶<b class='flag-5'>有</b><b class='flag-5'>了</b>占用网络<b class='flag-5'>还需要</b>卷积神经网络吗?

    FRED应用:RPC Photonics 扩散片BSDF导入模拟

    摘要 RPC Photonics公司高品质的的工程漫射体BSDF测试数据,但它对于FRED帮助甚少,下面这个步骤描述了如何利用FRED脚本转换RPC Photonics提供的TXT文件,并将数据
    发表于 04-30 08:16

    自动驾驶占用网络还需要数据标注吗?

    能够通过空间体素化的方式来感知世界,甚至可以识别那些从未见过的异形障碍物,那它是不是不再需要传统意义上的数据标注?事实上,占据网络不仅没有取消标注,反而将标注的维度和难度推向一个新的高度。   为什么占据网络变得如此重要?
    的头像 发表于 04-17 08:53 422次阅读
    自动驾驶占用网络<b class='flag-5'>还需要</b>数据标注吗?

    单片机中有FLASH为啥还需要EEROM?

    单片机里明明FLASH,为啥还要再塞个EEPROM?不少刚接触嵌入式的小伙伴估计都有过这样的疑惑:FLASH能存程序,容量大,读取又快,干嘛还要加个读写慢、容量小的EEPROM?这不是多此一举嘛。其实,这俩兄弟各有所长,分工明确,就像你电脑里的固态硬盘和内存条,谁也替不了谁。
    的头像 发表于 03-05 13:39 309次阅读
    单片机中有FLASH为啥<b class='flag-5'>还需要</b>EEROM?

    电子产品CE认证还需要做RoHS吗?2026年合规答疑

    很多电子企业出口欧盟时都会陷入一个核心困惑:“我的电子产品已经做了CE认证,还需要额外做RoHS吗?”答案很明确:多数电子电气类产品,CE认证仍需满足RoHS合规,二者并非二选一,而是“包含与被
    的头像 发表于 02-09 16:43 1406次阅读
    电子产品<b class='flag-5'>有</b>CE认证<b class='flag-5'>还需要</b>做RoHS吗?2026年合规答疑

    工业领域为什么会用到HTTP协议

    工业领域使用HTTP协议主要源于其 通用性、易用性、扩展性 以及与现代工业系统集成需求的契合,尽管工业环境对实时性、可靠性的要求较高,但HTTP在特定场景下仍能发挥关键作用。以下是具体原因分析
    的头像 发表于 12-27 09:38 277次阅读

    HTTP物联网网关是什么?什么功能?

    HTTP物联网网关是一种硬件或软件设备,位于物联网设备与云端服务之间,以HTTP协议为核心通信方式,负责数据的采集、处理、传输和管理。它作为物联网架构中的关键组件,解决不同设备间
    的头像 发表于 12-24 11:33 547次阅读
    <b class='flag-5'>HTTP</b>物联网网关是什么?<b class='flag-5'>有</b>什么功能?

    HTTP通信网关是什么?什么功能?

    HTTP通信网关是连接不同网络或协议的关键设备/服务器,在HTTP通信中扮演着协议转换、安全加固、性能优化等核心角色,其本质是 实现不同协议
    的头像 发表于 12-23 11:14 651次阅读

    使用 HTTP 协议能否实现 IAP 功能?

    使用 HTTP 协议,能否实现 IAP 功能?
    发表于 12-23 06:35

    使用HTTP实现IAP的方法

    使用 HTTP 协议进行固件升级没有使用 TFTP 常见,但是在需要通过 Internet 进行远程编程时,这种解决方案就显得极为有用。这时,需要使用 TCP 传输
    发表于 12-16 06:18

    荣耀的星际穿越,中国的AI星海

    这么多AI产品,我们为什么还需要千问App
    的头像 发表于 11-18 13:22 6444次阅读
    荣耀的星际穿越,中国的AI星海

    东方的ChatGPT来了?这么多AI产品,我们为什么还需要千问App

    行业芯事行业资讯
    脑极体
    发布于 :2025年11月17日 19:06:36

    请问riscv中断还需要软件保存上下文和恢复吗?

    以下是我拷贝的文档里的说明,这个中断处理还需要软件来写上下文保存和恢复,在使用ARM核的单片机都不需要考虑这些的,使用过的小伙伴能解答吗? 3.8. 进出中断的上下文保存和恢复 RISC-V架构
    发表于 10-20 09:56

    请问STM32新出的芯片USB还需要上拉电阻吗?

    我记得F103的USB需要上拉个电阻,STM32新出的芯片USB还需要上拉电阻吗?例如H5系列
    发表于 07-18 06:40

    HTTP协议在工业领域会用到吗

    、控制器、工业机器人等)需要接入网络以实现远程监控和管理。HTTP协议作为一种广泛应用的网络协议,可以用于设备与工业互联网平台之间的通信。设备通过H
    的头像 发表于 06-03 09:17 794次阅读