rpc和http有哪些区别?通信协议网络模型服务治理框架...(代码片段)

魏小言 魏小言     2023-01-20     620

关键词:


RPC 和 HTTP 有哪些区别?通信协议、网络模型、服务治理框架…

之前有小朋友问 RPC 请求和 HTTP 请求有什么区别?

公司里服务之间使用 RPC 、对外服务的接口用 HTTP、跨语言服务交互的时候用基于 HTTP 的 RPC …
很多场景使用不同的方式,这里总的来简单梳理一下,更深一点的等时间充裕了再码文!

不可对比性

RPC 和 HTTP 从本质上根本没有可比性。

  • HTTP 超文本传输协议,是因特网上应用最为广泛的一种网络传输协议。
  • RPC 服务进程通信方式中同步过程调用的一种实现方式统称。

RPC

在应用服务中,为了提高可用性、保障应用价值快速持续的交付,往往会把应用拆分为多个服务,多个服务协同对外提供业务功能支撑。

服务之间相互通信方式统称为 IPC [inter-process communication]。IPC 有两种实现方式,分别是 同步过程调用、异步消息调用。在同步过程调用的具体实现中,有一种实现方式为 RPC 通信方式,远程过程调用[Remote Procedure Call]。RPC 这种方式,可以让两个不同服务的子进程进行交互,就像是调用本地方法一样。

RPC 交互一般为应用内部服务通信,通信双方信息了解,可根据服务业务场景自定义通信协议。目前业界的 RPC 交互框架都分别支持各自定义的协议类型及数据格式。
如,阿里的 Dubbo 框架 支持 thrift、webservice、hessian、dubbo…;百度的 Ral 框架 支持 msgpack、ral、ral2、http…;京东的 JSF 框架 支持 jsf…;微博的 Motan 框架支持 motan、motan2、http…

注意,这里的通信协议中包含了 HTTP 协议。

HTTP

在应用服务对外交互时,通常都是以 HTTP 协议开头,就像我们日常访问的网页、APP、浏览器…等都是通过 URI 定位资源路径;
在 云原生应用架构中,提倡使用 已发布和版本化的API通信,这些API通常是具有 JSON 序列化的 HTTP REST 风格;……

归结出来,HTTP 更具有通用性,更灵活。其屏蔽了底层服务技术实现,而且 REST 风格开发成本低…

其他通信协议

有了 HTTP 协议,为什么还有其他协议呢?像 msgpack、dubbo…

因为 HTTP 臃肿,效率并非最优。

在网络模型中,RPC 你可以理解为 会话层机制。而 HTTP 则属于最上层应用层,通过 三次握手、四次挥手建立连接;协议约束从网络层,每层都会对数据流增加 Header 信息;在传输层会对数据流补充系列校验等信息……

在一些服务内部场景中,HTTP 显得很臃肿,在资源占用、传输效率、数据有效率…等方面略输一筹;故各个团队根据不同的使用场景,开发设计自定义的通信协议,使服务通信效率更高、更快,各种通信协议就诞生了。

通信协议实质

在业界的各种服务治理 RPC 框架中,除了协议本身数据段的约束不同,其内在更代表了不同的通信方式:长短连接、连接个数、序列化方式…

协议名称序列化连接使用场景
dubboHessian 二进制序列化单连接;长连接;TCP;NIO异步传输传入传出参数数据包较小(建议小于100K),消费者比提供者个数多,单一消费者无法压满提供者,尽量不要用dubbo协议传输大文件或超大字符串。
rmiJava标准二进制序列化多连接;短连接;TCP;同步传输传入传出参数数据包大小混合,消费者与提供者个数差不多,可传文件。

Q&A

1、如何设计一款 RPC 框架呢?

RPC\\HTTP 还有很多带挖掘的点,感兴趣的可私信或关注后续博文

附录

忙碌和早起

rpc服务和http服务对比(代码片段)

...清楚RPC(即RemoteProcedureCall,远程过程调用)和HTTP调用的区别,不都是写一个服务然后在客户端调用么?这里请允许我迷之一笑~Naive!本文简单地介绍一下两种形式的C/S架构,先说一下他们最本质的区别,就是RPC主要是基于TCP/IP... 查看详情

rpc和http的区别

参考技术ARPC调用和HTTP调用1.协议RPC是通常基于TCP/IP协议HTTP基于HTTP协议2.效率RPC比HTTP效率高3.复杂度RPC比HTTP复杂。涉及RPC框架,服务注册与发现,服务治理。长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开... 查看详情

http与rpc通信协议的比较

...七层:应用层    定义了用于在网络中进行通信和数据传输的接口-用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输和处理;   第六层:表示层    掩盖不同系统间的数据格式的... 查看详情

rpc(remoteprocedurecall基于服务调用)和restful(representationalstatetransfer基于资源)通信协议异同?常见rpc和restful框架(代码片段

...服务调用的SOAP示例基于资源的RESTful示例常用的RPC框架有哪些?常用的restful框架有哪些?RPC与RESTful有什么区别?RPC(RemoteProcedureCall)和RESTful(RepresentationalStateTransfer)是两种不同的通信协议和架构风... 查看详情

我不懂微服务:http服务

...RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC是基于Socket的,工作在会话层。二、http协议我们再来看一下http服务,http服务... 查看详情

http与rpc通信协议的比较

...a;  第七层:应用层    定义了用于在网络中进行通信和数据传输的接口-用户程式;提供标准服务,比如虚拟终端、文件以及任务的传输和处理;   第六层:表示层    掩盖不同系统间的数据格式的... 查看详情

rpc服务和http服务的区别

   1、最本质区别:RPC服务基于TCP/IP协议;HTTP服务主要是基于HTTP协议;  2、由于HTTP协议(应用层协议)是位于TCP协议(传输层协议)之上的,相比之下,RPC效率更高;  3、虽然RPC效率更高,但HTTP服务开发迭代会更... 查看详情

rpc核心原理

...叫做服务提供方,为了实现远程调用,一个完整的RPC会涉及哪些步骤呢?RPC需要通过网络传输数据,并且通常用于系统之间的交互,所以需要保证可靠性,在网络协议上一般会采用TCP,常用的HTTP就是TCP协议之上的.对于调用方来说,使用远... 查看详情

rpc

...的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。... 查看详情

谈谈rpc

...的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。  RCP采用客户机/服务器模... 查看详情

rpc

...的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。  RPC采用客户机/服务器模... 查看详情

既然有http请求,为什么还要用rpc调用?

...RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式... 查看详情

远程过程调用协议(rpc)

...的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。RPC采用客户机/服务器模式。... 查看详情

大名鼎鼎的rpc和mq到底有啥区别和联系

RPC(RemoteProcedureCall)远程过程调用,主要解决远程通信间的问题,不需要了解底层网络的通信机制。RPC框架知名度较高的有Thrift(FB的)、dubbo(阿里的)。 RPC的一般需要经历4个步骤:1、建立通信首先要解决通讯的问题:即A机器... 查看详情

tcp和udp的区别

...,既然两种传输协议都可以用于通信,那它们两者又有何区别。本文将以下面5个点进行对比:连接特点交互通信数据处理传输服务报头开销UDP和TCP在TCP/IP模型中的位置在比较这两者的区别之前,有必要了解下TCP/IP模型,这有利... 查看详情

tcp和udp的区别

...,既然两种传输协议都可以用于通信,那它们两者又有何区别。本文将以下面5个点进行对比:连接特点交互通信数据处理传输服务报头开销UDP和TCP在TCP/IP模型中的位置在比较这两者的区别之前,有必要了解下TCP/IP模型,这有利... 查看详情

网络体系结构

...连接服务各自的特点是什么?OSI网络参考模型定义了哪些数据单元有两个网络都可以提供可靠的面向连接服务,其中一个提供可靠的字节流,另一个提供可靠的报文流。这两者是否相同?“有证实”和“无证实”... 查看详情

http和rpc的区别是什么?各自的优缺点有哪些?

rpc和http的区别是什么rpc和http的存在重大不同的是:http请求是使用具有标准语义的通用的接口定向到资源的,这些语义能够被中间组件和提供服务的来源机器进行解释。结果是使得一个应用支持分层的转换(layersoftransformat... 查看详情