一、到底什么是 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 (面向资源)