RPC 调用和 HTTP 调用的区别

2021-02-25  本文已影响0人  ElliotG

0. OSI网络七层模型

在说RPC和HTTP的区别之前,我觉的有必要了解一下OSI的七层网络结构模型。

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

实际应用过程中,五层协议结构里面是没有表示层和会话层的。应该说它们和应用层合并了。
我们应该将重点放在应用层传输层这两个层面。

HTTP是应用层协议。
TCP是传输层协议。

 

1. 什么是RPC

RPC需要从三个角度来介绍RPC:

RPC架构

先说说RPC服务的基本架构吧,见下图:


RPC架构

一个完整的RPC架构里面包含了四个核心的组件,分别是Client , Server, Client Stub以及Server Stub。
这个Stub大家可以理解为存根。

同步调用与异步调用

什么是同步调用?什么是异步调用?
同步调用就是客户端等待调用执行完成并返回结果。
异步调用就是客户端不等待调用执行完成返回结果,不过依然可以通过回调函数等接收到返回结果的通知。如果客户端并不关心结果,则可以变成一个单向的调用。
这个过程有点类似于Java中的callable和runnable接口,我们进行异步执行的时候,如果需要知道执行的结果,就可以使用callable接口,并且可以通过Future类获取到异步执行的结果信息。如果不关心执行的结果,直接使用runnable接口就可以了,因为它不返回结果,当然啦,callable也是可以的,我们不去获取Future就可以了。

流行的RPC框架

目前流行的开源RPC框架还是比较多的。下面重点介绍三种:

 

2. HTTP服务

大部分企业开发的模式一直为HTTP接口开发,也就是我们常说的RESTful风格的服务接口。
的确,对于在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;
优点就是简单、直接、开发方便。
利用现成的http协议进行传输。
比如下面这个例子:
POST http://www.httpexample.com/restful/buyer/info/shar
接口可能返回一个JSON字符串或者是XML文档。然后客户端再去处理这个返回的信息,从而可以比较快速地进行开发。

对于大型企业来说,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了

 

3. 总结

RPC服务和HTTP服务还是存在很多的不同点的。
一般来说,RPC服务主要是针对大型企业的
HTTP服务主要是针对小企业的,因为RPC效率更高,而HTTP服务开发迭代会更快。

总之,选用什么样的框架不是按照市场上流行什么而决定的,而是要对整个项目进行完整地评估,
从而在仔细比较两种开发框架对于整个项目的影响,最后再决定什么才是最适合这个项目的。
一定不要为了使用RPC而每个项目都用RPC,而是要因地制宜,具体情况具体分析。

上一篇下一篇

猜你喜欢

热点阅读