HTTP通信与RPC通信

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有优势

你可能感兴趣的:(HTTP通信与RPC通信)