RPC和HTTP区别是什么?

news2024/11/27 10:37:47

 

🏆今日学习目标:

🍀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框架


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的一个跨语言的高性能的服务框架,也得到了广泛的应用

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/753240.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

二、遥感物理基础(3)大气对太阳辐射的影响

前言 本文内容较为枯燥,是遥感的物理原理,作者已经尽量去帮助读者理解了,无论是精细的阅读还是走马观花,长期下来都能提高读者对专业知识的理解;作者非物理专业,对某些知识点的总结仅是个人理解&#xff0c…

【Java】JVM执行流程、类加载过程和垃圾回收机制

JVM执行流程执行引擎本地方法接口运行时数据区方法区堆虚拟机栈(线程私有)本地方法栈(线程私有)程序计数器(线程私有) 堆溢出问题类加载类加载的过程加载连接验证准备解析 初始化 双亲委派机制 垃圾回收死亡对象的判断算法引用计数算法可达性分析算法 垃圾回收的过程标记-清除算…

Win11 锁屏、开机画面使用window聚焦 壁纸失效解决方案

1、设置>个性化>锁屏界面>个性化锁屏界面 切换为图片。 2、打开文件资源管理器,导航栏中点击查看>显示>勾选隐藏的项目。 3、打开C:\用户\你的用户\AppData\Local\Packages\Microsoft.Windows.ContentDeliveryManager_xxxxxxx\LocalSta…

Docker安装Rabbitmq超详细教程

🚀 Docker安装Rabbitmq保姆级教程 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介&#xff1…

检测到目标网站存在Bash Shell历史记录文件

详细描述 Bash Shell历史记录文件.bash_history包含了用户在bash shell运行的命令的历史记录.可能包含有与目标机器相关的敏感信息。这些敏感信息可以帮助攻击者针对站点发起进一步的攻击,降低攻击的难度。 解决办法 如果不需要该文件,建议删除对应的…

ARM Coresight 系列文章 5 - ARM Coresight APB Interconnect(APBIC)

文章目录 APBIC 介绍APBIC ROM TableError response软件访问的控制 APBIC 介绍 下图是基于SOC-400的 DAP 架构图,从图中可以看到 DAP 口出来的DAP-APB 会接入 APBIC 的 Slave 口,系统总线也接入了 APBIC 的 APB Slave port(图中并没有直接标出slave por…

FastDVDnet Towards Real-Time Deep Video Denoising Without Flow

FastDVDnet: Towards Real-Time Deep Video Denoising Without Flow Estimation 原文: https://ieeexplore.ieee.org/document/9156652 由于视频有着较强的时间相关性,那么一个好的视频去噪算法必将要充分利用这一特点。利用时间相关性主要体现为两个方面…

Linux:企业级服务器嵌入式系统优势与应用

Linux在企业级服务器领域具有广泛应用。作为一种强大的操作系统,Linux可以用于构建企业的WWW服务器、数据库服务器、负载均衡服务器、邮件服务器、DNS服务器、代理服务器、路由器等。通过采用Linux系统,企业不仅可以降低运营成本,还能获得高稳…

Linux5.14 ELK企业级日志分析系统

文章目录 计算机系统5G云计算第四章 LINUX ELK 企业级日志分析系统一、ELK 概述1.ELK 简介1)ElasticSearch2)Kiabana3)Logstash4)可以添加的其它组件:Filebeat5)缓存/消息队列(redis、kafka、Ra…

【Shell学习】

Shell学习 Shell介绍 Shell是一种用于操作系统的命令行解释器,它提供了与操作系统内核进行交互的接口。它允许用户通过键入命令来执行各种操作,包括文件管理、进程控制、网络通信等。   下面是一些关于Shell的介绍: Shell是一种解释性语言…

使用php数组实现双色球的随机选号

一、双色球彩票介绍 双色球是中国福利彩票的一种常见玩法,也是全国彩民最爱的彩种之一。玩法规则是在33个红色球中选择6个数字,在16个蓝色球中选择1个数字,红色球号码区间为1-33,蓝色球号码区间为1-16。可以单式投注或者复式投注…

【数据结构】初识

🍁 博客主页:江池俊的博客_CSDN博客-C语言——探索高效编程的基石领域博主 🍁 专栏:https://blog.csdn.net/2201_75743654/category_12348274.html 🍁 如果觉得博主的文章还不错的话,请点赞👍收藏&#x1f…

在UI中使用SpriteMask裁减任意shader的粒子效果

前言 由于我们需要在Mask中对粒子效果进行裁减。但是我们的的特效同事不愿意每个shader都去添加Stencil。所以使用SpriteMask方式进行裁减。 使用步骤 1. 添加SpriteMask Component 更具你需要的Mask形状设置精灵图片。又因为实际是精灵,并不属于UI系统&#xff…

什么是 XSS 攻击,攻击原理是什么

什么是 XSS 攻击? XSS(Cross-Site Scripting)攻击是一种常见的 Web 安全漏洞,其攻击目标是 Web 应用程序中的用户,攻击者通过在 Web 页面中植入恶意脚本,从而实现窃取用户敏感信息、篡改用户数据等目的。 …

水母搜索(JS)算法(含MATLAB代码)

先做一个声明:文章是由我的个人公众号中的推送直接复制粘贴而来,因此对智能优化算法感兴趣的朋友,可关注我的个人公众号:启发式算法讨论。我会不定期在公众号里分享不同的智能优化算法,经典的,或者是近几年…

zeppelin的hive使用

zeppelin的hive使用 配置项 default.driver org.apache.hive.jdbc.HiveDriver default.url jdbc:hive2://192.168.xxx.xxx:10000 default.user hiveHive使用:点击create new note Default Interpreter选择hive

苹果iOS App Store上架操作流程详解:从开发者账号到应用发布

很多开发者在开发完iOS APP、进行内测后,下一步就面临上架App Store,不过也有很多同学对APP上架App Store的流程不太了解,下面我们来说一下iOS APP上架App Store的具体流程,如有未涉及到的部分,大家可以及时咨询&#…

代码随想录算法训练营day2 | 977. 有序数组的平方,209. 长度最小的子数组

目录 977. 有序数组的平方 209. 长度最小的子数组 59. 螺旋矩阵 II 977. 有序数组的平方 977. 有序数组的平方 难度:easy 类型:双指针(相向指针) 思路: 暴力法是将每个数都平方后,再排序(快排)&#…

MySQL 多表查询练习

1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );创建score表。SQL代码如下: CREATE TABLE s…

万字长文 | Hadoop 上云: 存算分离架构设计与迁移实践

一面数据原有的技术架构是在线下机房中使用 CDH 构建的大数据集群。自公司成立以来,每年都保持着高速增长,业务的增长带来了数据量的剧增。 在过去几年中,我们按照每 1 到 2 年的规划扩容硬件,但往往在半年之后就不得不再次扩容。…