首先来回顾一下计算机网络的七层协议:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。
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有优势。