既然有http请求,为什么还要用rpc调用?

在程序开发中,我们经常会调用第三方API,而这类API一般提供多种方式供我们调用,比如:基于HTTP协议的、还有RPC方式调用的,以致于很多人会有这种质疑:既然有了HTTP这种请求方式,为什么还有RPC的存在?

HTTP和RPC是完全不同的概念

在这里我们需要搞清楚一点的是,HTTP和RPC在概念上就是不同的,两种是不能相提并论的。

  • HTTP是超文本传输协议

  • RPC是指远程过程调用,它是对不同系统间相互调用方式的一种描述,RPC不是协议也不是一种新技术,严格意义上应该称它是一种解决方案(概念)或技术实现的框架。RPC框架底层一般支持多种协议,比如:HTTP、TCP、自定协议等
    所以说RPC也是可以通过HTTP来实现的!

RPC与HTTP调用的应用场景

RPC框架提供的是面向服务的封装,它针对服务的性能效率、可用性等都做了优化(比如提供了:注册中心、服务治理、负载均衡、二进制传输、熔断、服务降级等功能),是一套完整的解决方案;而HTTP调用缺少这些高级特性,它只是简单的数据通信,另外HTTP API受限于HTTP协议(要带HTTP请求头),传输效率及安全性不如RPC。

为什么使用RPC而不是简单的HTTP API?

HTTP API一般在接口数量不多的情况下采用的,因为它使用起来简单快捷,直接利用现成的HTTP协议就可以进行数据传输。

但对于一个大型项目,内部模块子系统众多,接口也变得很多了,在这种情况下如果再使用一个个零散的HTTP API,维护成本极高。所以RPC框架优点就显示出来了,比如说:

  • 支持长链接,减少了网络开销;

  • 拥有注册中心,服务治理起来更方便;

  • 有监控功能,易于定位问题;

  • 对调用方来说是无感知、统一化的。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

文章分类 Binance消息 标签: ,