RPC 与 HTTP 区别

RPC 与 HTTP 区别

  • 1. 前言
  • 2. 正文
  • 3. HTTP 既然也是 RPC 的一种实现?为什么公司还要自研 RPC 框架?

1. 前言

       网上很多博客都是在说HTTPRPC采取不同的协议,RPC所传输的数据是经过压缩的二进制数据,但是HTTP协议同样支持gzip压缩算法。其次,另一个说法就是HTTP的报头所占的有太多无效信息,但是20-60字节的首部长度会对业务有很大影响吗?以现阶段计算机处理及网络传输速度,应该并无影响。这也是我在网上所看到大部分的答案,之前也一直被这个带偏,直到一次面试被指正。

2. 正文

       首先需要声明的是RPCHTTP并不位于同一层面,两者的概念截然不同,RPC远程方法调用,即一个应用调用另一个应用的接口。

       如何在一个应用中调用另一个应用?可以通过HTTP协议,也可以通过自定义的TCP协议实现通信。最终实质上完全相同,都是通过Socket解析调用方的参数,最后再将处理结果通过Socket传输。

       所以,RPC是如何实现服务间的通信,而HTTP可以视为服务间通信采取的数据传输格式,如一个美国人要和日本人交流,他们彼此之间交流可以通过一个中国人,美国人要表达的信息告诉中国人,中国人在将其翻译成日语告诉日本人。在这三者中,美国人、日本人便是两个应用进程,而中国人可以视作HTTP协议。当然,你也可以使用其他国的人取代中国人,只要美国人和日本人都可以通过翻译完成交流。

3. HTTP 既然也是 RPC 的一种实现?为什么公司还要自研 RPC 框架?

       HTTP协议可以说是目前最为主流的一种网络通信协议,但是很多大厂依然自研RPC框架,如字节、阿里以及腾讯等?为什么他们的应用进程不之间通过HTTP协议完成交互?

       最主要的原因还是RPC框架包含了重试机制,路由策略,负载均衡策略,高可用策略,流量控制策略等等。

       如果应用进程之间只使用HTTP协议通信,显然是无法完成上述功能的。

你可能感兴趣的:(系统设计,RPC,HTTP)