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

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

3天内不再提示

什么是HTTP协议?什么是RPC协议?二者如何选择使用?

kae1_cdebyte 来源:亿佰特物联网应用专家 2023-08-11 09:25 次阅读

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

01什么是HTTP协议?

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

wKgZomTVjh6AY7K9AAAIzTOV66Q161.png

图1 HTTP交互基本流程图

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

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

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

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

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

02什么是RPC协议?

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

wKgaomTVjh6ABmIgAAEX_MmADKY665.png

图2 RPC协议交互流程

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

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

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

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

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

03二者的选择使用

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

wKgaomTVjh6ADxuuAACs9tCgRvs049.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协议满足不了的对性能有所要求的网络场景。它们并不是互斥的,而是可以根据不同的场景和需求进行选择和组合的。

审核编辑:汤梓红

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

    关注

    33

    文章

    7640

    浏览量

    148509
  • 服务器
    +关注

    关注

    12

    文章

    8120

    浏览量

    82522
  • HTTP
    +关注

    关注

    0

    文章

    467

    浏览量

    30316
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1272

    浏览量

    78301
  • RPC
    RPC
    +关注

    关注

    0

    文章

    102

    浏览量

    11423

原文标题:为什么有了HTTP,还需要RPC协议?

文章出处:【微信号:cdebyte,微信公众号:亿佰特物联网应用专家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    通信网络技术:RPC服务和HTTP服务的区别分析

    ! 本文简单地介绍一下两种形式的 C/S 架构,先说一下他们最本质的区别,就是 RPC 主要是基于 TCP/IP 协议的,而 HTTP 服务主要是基于 HTTP
    的头像 发表于 11-26 13:52 2522次阅读

    什么是HTTP协议HTTP协议的基本特点和发展历程

    上期文章小编给大家介绍了一些关于MQTT协议的基础知识,今天我们来了解另一个应用层协议——HTTP协议
    发表于 08-04 09:52 572次阅读
    什么是<b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>?<b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>的基本特点和发展历程

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

    为什么有了HTTP,还需要RPC协议呢?在进行说明之前,首先我们需要了解什么是HTTP协议,什么是RPC
    的头像 发表于 08-14 10:05 665次阅读
    为什么有了<b class='flag-5'>HTTP</b>,还需要<b class='flag-5'>RPC</b><b class='flag-5'>协议</b>?

    HTTP协议是什么

    前言HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的种网络传输协议,所有的WWW文件都必须遵守这个标准。
    发表于 08-03 06:12

    什么是Http协议

    文章目录**1、说一下什么是Http协议?****2、什么是Http无状态协议?怎么解决Http无状态
    发表于 12-22 06:27

    HTTP,HTTP协议的作用是什么?

    HTTP,HTTP协议的作用是什么? HTTP:Hypertext Transfer Protocol 超文本传输协议
    发表于 03-22 10:45 2.5w次阅读

    HTTP协议培训教程资料

    HTTP协议培训教程资料 协议基础  HTTP(HyperText Transfer Protocol)是超文本传输协议的缩写,它用于传送
    发表于 03-22 10:47 541次阅读

    HTTP协议的使用方式和设计原理讲解

    HTTP 协议在网络知识中占据了重要的地位,HTTP 协议最基础的就是请求和响应的报文,而报文又是由报文头(Header)和实体组成。大多数 Htt
    发表于 06-28 09:08 3964次阅读
    <b class='flag-5'>HTTP</b><b class='flag-5'>协议</b>的使用方式和设计原理讲解

    什么是RPC?为什么需要RPC

    首先要明确一点:RPC可以用HTTP协议实现,并且用HTTP是建立在 TCP 之上最广泛使用的 RPC,但是互联网公司往往用自己的私有
    的头像 发表于 04-16 12:49 1.4w次阅读
    什么是<b class='flag-5'>RPC</b>?为什么需要<b class='flag-5'>RPC</b>?

    深入理解RPC自定义网络协议

    只要涉及到网络通信,必然涉及到网络协议,应用层也是一样。在应用层最标准和常用的就是HTTP协议。但在很多性能要求较高的场景各大企业内部也会自定义的 RPC
    的头像 发表于 06-12 15:00 2141次阅读

    HTTPRPC

    TCP是传输层的协议,而基于TCP造出来的HTTP和各类RPC协议,它们都只是定义了不同消息格式的应用层协议而已。
    的头像 发表于 11-23 08:54 640次阅读
    <b class='flag-5'>HTTP</b>和<b class='flag-5'>RPC</b>

    有了HTTP,为什么还要RPC

    实际应用过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。我们应该将重点放在应用层和传输层这两个层面。因为HTTP是应用层协议,而TCP是传输层协议。好,知道了
    的头像 发表于 04-27 14:29 485次阅读
    有了<b class='flag-5'>HTTP</b>,为什么还要<b class='flag-5'>RPC</b>?

    RPC接口与HTTP接口哪一个更好?

    HTTP接口和RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而
    发表于 06-13 09:18 656次阅读
    <b class='flag-5'>RPC</b>接口与<b class='flag-5'>HTTP</b>接口哪一个更好?

    基于Client/Server架构的HTTP接口和RPC接口

    HTTP接口和RPC接口都是生产上常用的接口,顾名思义,HTTP接口使用基于HTTP协议的URL传参调用,而
    发表于 06-13 09:18 421次阅读
    基于Client/Server架构的<b class='flag-5'>HTTP</b>接口和<b class='flag-5'>RPC</b>接口

    RPC接口和HTTP接口的区别与联系

      HTTP服务 RPC接口和HTTP接口的区别与联系 参考文献   HTTP接口和RPC接口都是生产上常用的接口,顾名思义,
    的头像 发表于 06-17 14:54 1103次阅读
    <b class='flag-5'>RPC</b>接口和<b class='flag-5'>HTTP</b>接口的区别与联系