文章目录

  • 一、RPC是什么?
  • 二、RPC和HTTP对比
  • 1.具体实现
  • 2.效率
  • 3.连接方式
  • 4.性能
  • 5.注册中心
  • 6.负载均衡
  • 总结



一、RPC是什么?

RPC(Remote Procedure Call) 远程过程调用协议,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数方法,由于不在一个内存空间,不能直接调用,需要通过网络来表达调用的语义和传达调用的数据。

RPC协议规定允许互联网中一台主机程序调用另一台主机程序,而程序员无需对这个交互过程进行编程。在RPC协议中强调当A程序调用B程序中功能或方法时,A是不知道B中方法具体实现的。

RPC是上层协议,底层可以基于TCP协议,也可以基于HTTP协议。一般我们说RPC都是基于RPC的具体实现,如:Dubbo框架。从广义上讲只要是满足网络中进行通讯调用都统称为RPC,甚至HTTP协议都可以说是RPC的具体实现,但是具体分析看来RPC协议要比HTTP协议更加高效,基于RPC的框架功能更多。

RPC协议是基于分布式架构而出现的,所以RPC在分布式项目中有着得天独厚的优势。

二、RPC和HTTP对比

1.具体实现

RPC:可以基于TCP协议,也可以基于HTTP协议。

HTTP:基于HTTP协议

2.效率

RPC:自定义具体实现可以减少很多无用的报文内容,使得报文体积更小。

HTTP:如果是HTTP 1.1 报文中很多内容都是无用的。如果是HTTP2.0以后和RPC相差不大,比RPC少的可能就是一些服务治理等功能。

3.连接方式

RPC:长连接支持。

HTTP:每次连接都是3次握手。

4.性能

RPC:可以基于很多序列化方式。如:thrift

HTTP: 主要是通过JSON,序列化和反序列效率更低。

5.注册中心

RPC :一般RPC框架都带有注册中心。

HTTP:都是直连。

6.负载均衡

RPC:绝大多数RPC框架都带有负载均衡测量。

HTTP:一般都需要借助第三方工具。如:nginx

总结

RPC框架一般都带有丰富的服务治理等功能,更适合企业内部接口调用。而HTTP更适合多平台之间相互调用。