一文带你搞懂HTTP和RPC协议的异同
1 什么是RPC协议
1.1 简介
这是老生常谈的协议了,RPC即远程过程调用(Remote Procedure Call),
RPC协议是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
1.2 原理及模型
RPC协议广泛的应用于分布式系统中,主要用于不同计算机(即服务节点)间的通信,RPC主要是基于Socket,而Socket又基于TCP,因此我们可以理解为RPC基于TCP协议(部分RPC框架基于HTTP协议),在TCP的基础上增加了编程语言的机制,比如反射、编码与解码、以及动态代理,因此我们可以认为RPC只是一个概念,而实现这一概念有不同方式,典型的RPC框架如gRPC、Thrift、Netty、Dubbo等都是基于这一思想。
2 什么是HTTP协议
2.1 简介
这是老生常谈的协议了 too,HTTP即超文本传输协议(Hyper Text Transfer Protocol)
HTTP是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
2.2 原理及模型
HTTP协议是处于OSI网络模型的最上层应用层的协议,基于TCP协议,是通信协议中相对简单的协议之一,为什么简单呢?我认为原因有二:一是封装了大量的协议和报文头,使用简单,二是明文传输,处理简单,也是基于此,HTTP协议成为了互联网中最广泛的协议之一。
3 为什么要拿HTTP和RPC协议进行比较?
为什么要拿HTTP和RPC进行比较呢,我觉得大抵是因为HTTP和RPC是互联网应用系统中使用最广泛的两种网络通信协议了吧(模仿下鲁迅),并且在使用上似乎谁都能替代谁(当然抛开使用效率层面),一个是简单易用,一个是复杂高效,因此二者间的比较会很丰富。
4 两者的相同点
- 都是基于TCP协议点对点通信
- 都可以在不同编程语言(应用系统)间进行通信
5 两者的不同点
- 所属网络七层模型中不同的网络层级(部分RPC框架属于应用层)
- 数据编码格式不同
- 一般情况下,RPC是长连接,HTTP则是短连接
- 一般情况下,RPC的传输效率高于HTTP
6 总结
在系统开发中,一般需要对外提供接口时,因为普适性,HTTP是首选,而在同一个组织或公司内部进行不同系统间服务的提供时,面向服务封装的RPC更具有竞争力,可以针对服务进行可用性和效率的优化,因此HTTP和RPC不同的网络通信协议各自具有更擅长的领域。
一文带你搞懂HTTP和RPC协议的异同相关推荐
- ipv6单播地址包括哪两种类型_IPV6中为啥没有ARP了呢?一文带你搞懂NDP邻居发现协议...
前言 前面我们介绍了ICMPv6协议 除了提供ICMPv4常用的基本功能之外,还有邻居发现(ND)的功能.一文带你看懂ICMPv6和ICMPv4的区别 那么究竟什么是邻居发现协议(ND)呢? 邻居发现 ...
- 一文带你搞懂从动态代理实现到Spring AOP
摘要:本文主要讲了Spring Aop动态代理实现的两种方式. 1. Spring AOP Spring是一个轻型容器,Spring整个系列的最最核心的概念当属IoC.AOP.可见AOP是Spring ...
- 一文带你搞懂C#多线程的5种写法
一文带你搞懂C#多线程的5种写法 1.简介 超长警告! 在学习本篇文章前你需要学习的相关知识: 线程基本知识 此篇文章简单总结了C#中主要的多线程实现方法,包括: Thread 线程 ThreadPo ...
- RPC框架:一文带你搞懂RPC
RPC是什么(GPT答) ChatGPT回答: RPC(Remote Procedure Call)是一种分布式应用程序的编程模型,允许程序在不同的计算机上运行.它以一种透明的方式,将一个程序的函数调 ...
- 如何查询你电脑的IP地址?一文带你搞懂IP地址
上一章介绍了数据链路层--以太网数据帧的报文格式(你知道以太网数据帧在网络中如何发送和接收的吗?一文带你搞懂它),本章介绍下网络层--IP地址. 大家都知道计算机都会有一个IP地址,只有配置了IP地址 ...
- RPC框架:从原理到选型,一文带你搞懂RPC
大家好,我是华仔,RPC系列的文章是我去年写的,当时写的比较散,现在重新进行整理.对于想学习RPC框架的同学,通过这篇文章,让你知其然并知其所以然,便于以后技术选型,下面是文章内容目录: RPC 什么 ...
- 一文带你搞懂什么是测试开发!
需要说明的是,原文发表于作者的公众号中,文章篇幅虽长,但内容朴实.且能帮助读者进一步理解测试开发工作,请读者耐心品完~ 01 开始前说点什么 1. 自我反省 公众号开通了也有两年多了,除了刚开通的那段 ...
- 秒杀系统架构分析与实战,一文带你搞懂秒杀架构!
作者丨猿码道 jianshu.com/p/df4fbecb1a4b 1.秒杀业务分析 正常电子商务流程 (1)查询商品: (2)创建订单: (3)扣减库存: (4)更新订单: (5)付款: (6)卖家 ...
- 【MDX】一文带你搞懂SQL Server Analysis Services 的安装和使用
目录 Step 1: Install developer and management tools 安装 new stand-alone SQL Server installation or add ...
最新文章
- Windows Azure Pack与SCVMM标签解析分享
- grid中的绑定 格式化
- 仿基金查询输入框下拉筛选值效果(JavaScript)
- [原创]TimeQuest约束外设之诡异的Create Generated Clocks用法
- python调用pyd_Python生成pyd文件
- GDCM:gdcm::GroupDict的测试程序
- ROS-ROS中的坐标管理系统 TF
- C# Window Form解决播放amr格式音乐问题
- 互联网十几年 我们错失了哪些创业机会
- python读取mat文件报错【NotImplementedError: Please use HDF reader for matlab v7.3 files】
- 谷歌浏览器86版_Google 谷歌浏览器 Chrome v87.0.4280.66 Win Mac Linux 安卓等稳定版
- 为什么csgo一直显示连接官方服务器失败,CSGO提示连接任意官方服务器失败怎么办?五大详细解决方法看这里!...
- SQL WITH TIES解释与用法
- layui中实现动态的cols表头字段
- 「电创云」:「空间优造」与「绿多多」「绿点」绿色社区
- VR中姿态、定位和身份识别系统的设计
- 百度刘捷:数据驱动,AI赋能助力城市数字化转型
- C/C++面试题-2 之2/2
- 同步、异步 阻塞、非阻塞
- java的nullpoint_Java中避免NullPointerException的方法总结