一文带你搞懂 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 不同的网络通信协议各自具有更擅长的领域。
版权声明: 本文为 InfoQ 作者【Barry Yan】的原创文章。
原文链接:【http://xie.infoq.cn/article/4595e5614d0f526ea9aa651e4】。文章转载请联系作者。
评论