RPC和HTTP区别是什么?

 

今日学习目标:

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区别是什么?_第1张图片

  • 数据编码格式不同
  • 一般情况下,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区别是什么?_第2张图片

 

你可能感兴趣的:(rpc,http,网络协议)