HTTP
首先来回顾一下计算机网络的七层协议:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层
- TCP属于传输层协议
- HTTP是建立在tcp之上的应用层协议
SOCKET
socket是针对tcp或udp的具体接口实现,提供了在传输层进行网络编程的方法
RPC
RPC(Remote Procedure Call:远程过程调用):一种进程间通信方式。允许像调用本地服务一样调用远程服务
RPC架构
包含四个核心组件
- 客户端(client):服务的调用方
- 服务端(server):服务提供方
- 客户端存根(client stub):将客户端请求参数打包成网络消息,再发给服务方
-
服务端存根(server stub):接收客户端发来的消息,将消息解包,并调用本地方法
同步调用与异步调用
- 同步调用就是客户端等待调用执行完成并返回结果,中间不能去干别的事情。优点是时序清晰,逻辑简单;缺点是网络通讯的延迟会制约请求响应速度
- 异步调用就是客户端不用等待调用执行完成返回结果,请求发出之后就可以干别的事情了。定义一个callback接口用于接收服务端向客户端返回的响应
总结
- RPC主要基于TCP/UDP协议,HTTP协议是应用层协议,是构建在传输层协议TCP之上的,从效率来看的话RPC更胜一筹
- RPC长连接:不必每次通信都像http一样去三次握手,减少网络开销;
- HTTP服务开发迭代更快:在接口不多,系统与系统之间交互比较少的情况下,http就显得更加方便;相反,在接口比较多,系统与系统之间交互比较多的情况下,http就没有RPC有优势