rpc 调用底层原理是啥,为啥比 http 性能要好

315 阅读2分钟

RPC(Remote Procedure Call)调用是一种底层通信机制,用于在不同的计算机之间进行进程间通信(IPC)。相比于 HTTP,RPC 调用的性能通常更好,主要原因如下:

  1. 通信协议:HTTP 和 RPC 使用的通信协议不同。HTTP 使用的是明文协议,每次通信都需要进行文本格式的转换,而 RPC 使用的是二进制协议,更加高效且避免了文本转换的开销。
  2. 请求响应模式:HTTP 请求是典型的客户端-服务器模式,每个请求都需要建立连接并完成完整的请求-响应周期。而 RPC 调用采用了基于连接的通信方式,一旦建立了连接,多个请求和响应可以在同一连接上传输,减少了建立连接的开销。
  3. 数据序列化:HTTP 请求中的数据需要进行序列化以进行传输,而 RPC 调用通常使用更高效的数据序列化方式,如 Protocol Buffers 或 Thrift 等。这些序列化方式能够更紧凑地表示数据,减少了数据传输的开销。
  4. 并发处理:HTTP 请求通常是阻塞的,需要等待服务器处理请求并返回响应。而 RPC 调用支持并发处理,可以同时处理多个请求,提高了系统的吞吐量。
  5. 服务发现和负载均衡:RPC 框架通常提供服务发现和负载均衡功能,使得客户端能够快速找到可用的服务实例并进行负载分配,这有助于提高系统的性能和可用性。
  6. 传输层优化:RPC 调用可以利用传输层的优化机制,如流水线(Pipelining)和流控制(Flow Control),以提高数据传输的效率。

需要注意的是,具体的性能差异取决于使用的 RPC 框架、数据量和网络条件等多种因素。在某些场景下,HTTP 也可以通过使用缓存、压缩和并发等技术来提高性能。