What is RPC?

832 阅读1分钟

一、到底什么是 RPC ?

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,也就是说,A,B方法部署在不同的服务器之间,A方法要通过网络通信调用B方法,就这么简单。

工作原理:

运行时,一次客户机对服务器的RPC调用,其内部操作大致有如下十步:

  • 1.调用客户端句柄;执行传送参数
  • 2.调用本地系统内核发送网络消息
  • 3.消息传送到远程主机
  • 4.服务器句柄得到消息并取得参数
  • 5.执行远程过程
  • 6.执行的过程将结果返回服务器句柄
  • 7.服务器句柄返回结果,调用远程系统内核
  • 8.消息传回本地主机
  • 9.客户句柄由内核接收消息
  • 10.客户接收句柄返回的数据

如下图:

二、为什么要使用 RPC 而不是简单的 HTTP 接口 ?

  • RPC 框架设计复杂,功能强大,而 HTTP 协议由于带请求头,传输效率、安全性低。
  • RPC 是一个技术名词,或者说是思想,它可以通过 HTTP 协议去实现,也可以通过 Socket 自己重新设计一套协议方法。
  • RPC 基于长链接,不需要像 HTTP 一样每次调用都需要进行3次握手,不过好像http已经支持长链接了
  • RPC:所谓的远程过程调用 (面向方法)
  • SOA:所谓的面向服务的架构(面向消息)
  • REST:所谓的 Representational state transfer (面向资源)