HTTP和RPC的区别

https://www.bilibili.com/video/BV1Qv4y127B4/
a电脑进程往b电脑进程发送一段数据,有两个选择:
1、TCP(可靠)
2、UDP(不可靠,需要自己实现可靠性)
以上两者都是使用socket
但TCP是基于字节流的协议,数据没有边界。所以需要加入一些规则(协议)来添加消息的边界。
最广泛的就是HTTP(s)和RPC协议。
RPC协议使得调用远端过程(方法)变得和调用本端过程(方法)一样简单。
RPC的底层协议常见是TCP,当然也可以是UDP和HTTP。

为什么有了RPC还需要HTTP?
RPC自需要特定的客户端(Client)和服务端(Server)提前确定协议,就可相互通信,但通信协议会各有不同;(C/S架构)
而考虑到浏览器端(Browser)需要访问各种服务器,此时需要一个统一的标准(协议),这个协议就是HTTP协议。(B/S架构)

两者的区别:
1、在服务发现的区别:
1.1、HTTP的服务发现:通过DNS解析域名获得服务器地址。
1.2、RPC的服务发现:通过某些中间件(consul\etcd\redis)去保存服务名和服务器地址信息。
服务发现概念:当需要请求某个服务器时,需要建立连接,而建立连接需要知道服务器的{ip:port},找得这个{ip:port}的过程就是服务发现。
2、在底层连接的区别:
2.1、HTTP1.1:TCP长连接(Keep-Alive),此后的数据交互都是基于这个连接。
2.2、RPC:也是通过TCP长连接进行数据交互。当时会有一个连接池,当请求量大的时候,从连接池挑选一个连接进行数据交互。
3、传输内容的区别
3.1、HTTP1.1:传送的内容无法请求行(相应行)、请求头(响应头)、请求体(响应体)大多都是文本(字符串)格式(当然也有视频、音频、图片等多媒体内容),但最终都可以转为01串(字节流)。
3.2、RPC:RPC传送的内容多为结构体,发送方通过序列化将结构体转为01串(字节流)再发送,而接收方将接收的数据通过反序列化还原出结构体。
HTTP1.1一般会用JSON,而RPC使用protobuf。

但是HTTP2协议的性能就不一定比RPC差(待续)。

posted @ 2023-04-27 18:53  DavidJIAN  阅读(103)  评论(0)    收藏  举报