RPC和HTTP区别是什么?

这篇具有很好参考价值的文章主要介绍了RPC和HTTP区别是什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RPC和HTTP区别是什么?,rpc,http,网络协议

 文章来源地址https://www.toymoban.com/news/detail-565957.html

🏆今日学习目标:

🍀RPC和HTTP区别是什么?
创作者:林在闪闪发光
⏰预计时间:30分钟
🎉个人主页:林在闪闪发光的个人主页

 🍁林在闪闪发光的个人社区,欢迎你的加入: 林在闪闪发光的社区

目录

        1 什么是RPC协议

1.1 简介

2 什么是HTTP协议

2.1 简介

2.2 原理及模型

范围和目的

1 通信模式

2 数据传输格式

3 应用场景

3 为什么要拿HTTP和RPC协议进行比较?

4 两者的相同点

5 两者的不同点

 开源RPC框架

Dubbo

Motan

gRPC

thrift


1 什么是RPC协议

1.1 简介

RPC 是Remote Procedure Call的缩写,译为远程过程调用,要想实现RPC通常需要包含传输协议和序列化协议的实现。而我们熟知的HTTP,他的中文名叫超文本传输协议,所以他就是一种传输协议。所以,我们可以认为RPC和HTTP并不是同一个维度的两个概念。只不过他们都是可以作为远程调用的,所以经常拿来对比。


RPC的具体实现上,可以像HTTP一样,基于TCP协议来实现,也可以直接基于HTTP协议实现


RPC主要用于公司内部服务之间的互相调用,所以他性能消耗低,传输效率高,服务治理方便。而HTTP主要用于对外的异构环境,浏览器调用,APP接口调用,第三方接口调用等等。

2 什么是HTTP协议

2.1 简介


这是老生常谈的协议了 too,HTTP即超文本传输协议(Hyper Text Transfer Protocol)

HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。

2.2 原理及模型


HTTP协议是处于OSI网络模型的最上层应用层的协议,基于TCP协议,是通信协议中相对简单的协议之一,为什么简单呢?我认为原因有二:一是封装了大量的协议和报文头,使用简单,二是明文传输,处理简单,也是基于此,HTTP协议成为了互联网中最广泛的协议之一。
 

范围和目的

HTTP是一种应用层协议,它主要用于在Web服务器和客户端之间传输HTML页面和其他Web资源。HTTP是一个请求-响应协议,它定义了客户端如何发送请求以及服务器如何响应请求。

RPC则是一种通用的远程调用协议,它被用于在不同的计算机之间执行远程方法调用。RPC协议的主要目的是允许一个程序调用远程服务器上的函数或方法,就好像这些函数或方法是本地的一样。

1 通信模式

HTTP是一种无状态协议,它使用请求-响应模式进行通信。每次客户端发送请求时,服务器都会对其进行处理并返回响应,但这两个请求之间没有直接联系。这意味着在HTTP中,客户端和服务器之间的通信是不可靠的,需要使用其他机制来确保数据的完整性和一致性。

RPC通信则可以是有状态的,它使用类似本地方法调用的方式进行通信。客户端通过调用远程服务器上的方法来发送请求,服务器对该请求进行处理并返回响应。在整个过程中,客户端和服务器之间建立了一条持久的连接,这使得通信更加可靠。

2 数据传输格式

HTTP通常使用JSON或XML等文本格式来传输数据。这些格式具有良好的可读性和可扩展性,但是它们比二进制数据传输更慢,并且需要更多的网络带宽。

RPC则可以使用二进制协议来传输数据,例如Google开发的Protobuf(Protocol Buffers)和Apache Thrift等。这些协议具有更高的效率和更小的数据传输量,但它们的可读性和可扩展性较差。

3 应用场景

HTTP主要应用于Web应用程序,例如Web服务和浏览器。它可以使用各种语言和框架来开发和使用,因此它非常适合开发基于Web的应用程序。

RPC则主要用于分布式系统和互联网应用程序中。由于它具有高效、可靠、可扩展等特性,因此它被广泛应用于云计算、大数据等领域。

3 为什么要拿HTTP和RPC协议进行比较?


为什么要拿HTTP和RPC进行比较呢,我觉得大抵是因为HTTP和RPC是互联网应用系统中使用最广泛的两种网络通信协议了吧(模仿下鲁迅),并且在使用上似乎谁都能替代谁(当然抛开使用效率层面),一个是简单易用,一个是复杂高效,因此二者间的比较会很丰富。

4 两者的相同点


都是基于TCP协议点对点通信
都可以在不同编程语言(应用系统)间进行通信

5 两者的不同点


所属网络七层模型中不同的网络层级(部分RPC框架属于应用层)

 RPC和HTTP区别是什么?,rpc,http,网络协议

  • 数据编码格式不同
  • 一般情况下,RPC是长连接,HTTP则是短连接
  • 一般情况下,RPC的传输效率高于HTTP

 开源RPC框架

Dubbo


Dubbo 是阿里巴巴公司开源的一个Java高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。目前已经进入Apache孵化器

Motan


Motan是新浪微博开源的一个ava RPC框架。2016年5月开源。Motan 在微博平台中已经广泛应用,每天为数百个服务完成近千亿次的调用。

gRPC


gRPC是Google开发的高性能、通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBufProtocol Buffers)序列化协议开发,且支持众多开发语言。本身它不是分布式的,所以要实现上面的框架的功能需要进一步的开发.

thrift


thrift是Apache的一个跨语言的高性能的服务框架,也得到了广泛的应用

 RPC和HTTP区别是什么?,rpc,http,网络协议

 

到了这里,关于RPC和HTTP区别是什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RPC和HTTP调用的区别

    RPC(Remote Procedure Call)和HTTP调用都是用于实现远程通信的方法,但它们有一些重要的区别: 通信协议 : RPC:RPC通常使用自定义的二进制协议或者序列化协议(如Protobuf、Thrift)来进行通信。这些协议更加高效,因为它们可以将数据以二进制形式传输,减少了序列化和反序列化

    2024年02月07日
    浏览(44)
  • RPC与HTTP之间的区别详解

    RPC和HTTP都是网络协议,用于系统之间的通信和交互。但二者有以下主要区别: - RPC:远程过程调用,是一种进程间通信方式。双方建立链接后,一个进程可以直接调用另一个进程的函数。 - HTTP:超文本传输协议,是一种客户端和服务器之间的请求-响应模式。客户端发送请求,服务器返

    2024年02月15日
    浏览(74)
  • 什么场景只能用HTTP,不能用RPC?

    1、在异构系统(跨语言和跨平台),HTTP具有更好的兼容性,因为HTTP是一种通用的协议,几乎所有的编程语言和操作系统都支持HTTP协议,而不是所有的编程语言和操作系统都支持相同的RPC协议。 2、RPC适合用在企业内部,要求使用同一套注册中心进行服务治理,如果是跨组织,

    2024年03月13日
    浏览(45)
  • 为什么有了 HTTP 还要 RPC

    哈喽大家好,我是咸鱼 随着互联网技术的发展,分布式架构越来越被人们所采用。在分布式架构下, 为了实现复杂的业务逻辑,应用程序需要分布式通信实现远程调用 而这时候就需要一种协议来支持远程过程调用,以便实现不同应用程序之间的数据交换和信息传递。其中常

    2024年02月05日
    浏览(49)
  • catface,使用Interface定义Controller,实现基于Http协议的RPC调用

    : Interface定义Controller;feign服务端;feign interface;Http RPC;cat-client;cat-server;catface; 概   要: catface ,使用类似 FeignClient 的Interface作为客户端发起Http请求,然后在服务端使用实现了这些Interface的类作为 Controller 角色,将客户端、服务端通过Interface耦合在一起,实

    2024年02月09日
    浏览(49)
  • RPC failed; result=35, HTTP code = 0 git报错-网络问题

    git报错如下,怎么处理呢 1.网络问题,有时github不稳定,要么等待网络,要么直接下载zip的 2.至于其他方法 在访问github的时候遇到了如上的问题. 我的问题是result = 35 和 result = 7 之间无限循环. 如图所示,只要将https这五个字母,改成git就可以了.

    2024年02月16日
    浏览(35)
  • Go语言网络编程入门:TCP、HTTP、JSON序列化、Gin、WebSocket、RPC、gRPC示例

    在本文中,我们将介绍Go语言中的网络编程的不同方式,包括TCP、HTTP、Gin框架、WebSocket、RPC、gRPC的介绍与连接实例,并对所有示例代码都给出了详细的注释,最后对每种模式进行了总结。 TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,提供

    2024年02月16日
    浏览(59)
  • 【原理】RPC与HTTP

    RPC服务基本架构包含了四个核心的组件,分别是Client,Server,Clent Stub以及Server Stub。 RPC 让远程调用就像本地调用一样,其调用过程可拆解为以下步骤。 ① 服务调用方(client)以本地调用方式调用服务; ② client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消

    2024年04月14日
    浏览(43)
  • RPC与HTTP的关系

    RPC与HTTP是两个不同维度的东西 HTTP 协议( H yper T ext T ransfer P rotocol),又叫做 超文本传输协议 ,是一种传输协议,平时通过浏览器浏览网页网页,用到的就是 HTTP 协议。 而 RPC ( R emote P rocedure C all),又叫做 远程过程调用 。它本身并不是一个具体的协议,而是一种 调用方

    2024年02月07日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包