Rpc和http的区别

RPC简介

RPC(Remote Procedure Call)中文名「远程过程调用」,拆开理解,「过程」也叫方法或函数,「远程」就是说方法不在当前进程里,而是在其他进程或机器上面,合起来 RPC 就是调用其他进程或机器上面的函数。简单讲,就是本地调用的逻辑处理的过程放在的远程的机器上,而不是本地服务代理来处理。一个完整的 RPC 框架主要有三部分组成:通信框架、通信协议、序列化和反序列化格式。

RPC与HTTP区别

  • RPC 通常所讲是一个框架,而 HTTP(HyperText Transfer Protocol) 是基于 TCP 的实现的超文本传输协议,HTTP 是无状态协议;最初用于浏览器与服务器的通信,后来广泛用于各个服务间的通信。
  • RPC是远程过程调用,RPC框架可以的通信过程可以使用各种通信协议(如 HTTP,TCP以及各种自定义协议)实现。良好的rpc调用是面向服务的封装,针对服务的可用性和效率等都做了优化。单纯使用http调用则缺少了这些特性。

基本原理

首先来看看一个 基于 TCP 的 RPC 调用的基本流程,以便对它有个宏观的认识。

  1. 调用方(Client)通过本地的 RPC 代理(Proxy)调用相应的接口
  2. 本地代理将 RPC 的服务名,方法名和参数等等信息转换成一个标准的 RPC Request 对象,即组装成能够进行网络传输的消息体
  3. RPC 框架采用 RPC 协议(RPC Protocol)将 RPC Request 对象序列化成二进制形式,然后通过 TCP 通道传递给服务提供方 (Server)
  4. 服务端(Server)收到二进制数据后,将它反序列化成 RPC Request 对象(解码)
  5. 服务端(Server)根据 RPC Request 中的解码信息找到本地对应的方法,传入参数执行,得到结果,并将结果封装成 RPC Response 交给 RPC 框架
  6. RPC 框架将 RPC Response 对象序列化成二进制形式,然后通过 TCP 通道传递给服务调用方(Client)
  7. 调用方(Client)收到二进制数据后,将它反序列化成 RPC Response 对象,并且将结果通过本地代理(Proxy)返回给业务代码
  8. 调用方(Client)得到最终结果。

RPC的目标就是要将2~8这些步骤都封装起来,让用户对这些细节透明。

你可能感兴趣的:(rpc,http,网络协议)