Hadoop--之--RPC(远程过程调用)与HTTP的区别

RPC(远程过程调用)与HTTP的区别:
最主要的区别:
OSI网络7层模型
RPC组件
HTTP服务:
总结:
RPC(远程过程调用)与HTTP的区别:

最主要的区别:
RPC是基于TCP/IP协议的
HTTP服务是基于HTTP协议的
因为http协议是在传输层协议TCP之上的,所有效率上TCP也就是RPC会高一点。

OSI网络7层模型
第一层:应用层。定义了用于在网络中进行通信和传输数据的接口;
第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范等;
第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断;
第四层:传输层。管理着网络中的端到端的数据传输;
第五层:网络层。定义网络设备间如何传输数据;
第六层:链路层。将上面的网络层的数据包封装成数据帧,便于物理层传输;
第七层:物理层。这一层主要就是传输这些二进制数据。

Hadoop--之--RPC(远程过程调用)与HTTP的区别
RPC组件
客户端(client):服务的调用方
服务端(server):真正的服务调用方
客户端存根(client stub):存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。
服务端存根(server stub):接受客户端发送过来的消息,将消息解包,并调用本地的方法
RPC主要是用于大型企业中,因为大型企业中系统繁多,业务线复制,效率是很重要的一块。(比如有个处理订单的服务,先声明它的接口,再将整个项目打jar包,服务端再引用二方库,实现相应的功能,客户端只需引用二方库即可,这样做的目的主要减少客户端jar包的大小。另外客户端与服务端解耦)

Hadoop--之--RPC(远程过程调用)与HTTP的区别
HTTP服务:
在接口不多,系统交互较少的情况下常使用的方法,
优点:简单,直接,开发方便。利用现成的http协议进行传输。

(比如,接口可能返回一个json字符串或xml文档。然后客户端再处理返回信息,从而进行开发,但是对应大型企业来说,内部子系统较多,接口也多的情况下,RPC框架的好处就展示出来了,首先是长链接,不必像http一样,每次都要进行三次握手什么的,减少网络开销;其次RPC框架一般都有注册中心,有丰富的监控管理,对调用方来讲是无感知,统一化操作)。

总结:
一般来讲,RPC服务主要针对大型企业的,HTTP服务主要是小型企业的,因此RPC效率更高,HTTP开发更快。