RPC是什么?
英文全称Remote Procedure Call Protocol 翻译过来就是远程过程调用,主要使用在分布式服务场景,比如淘宝,从用户角度来看,就是一个系统,一个整体,其实背后是多个微服务组成,分别部署在不同的服务器上。比如用户服务,商品服务,订单服务,库存服务等等。那么这个多微服务之间,存在依赖是必须的,那怎么进行调用呢?网络通信涉及的点很多,有什么方式可以让程序员只关心业务逻辑,不用操作网络通信细节呢?RPC就是这种方式,做到了网络通信细节对使用者来说是透明不可见的。
下面是RPC通信原理:
computer01上调用computer02上的服务,
1、client通过调用本地方法的形式,调用02的服务,
2、client stub(客户端助手)将调用的方法和参数进行编码和封装成消息体,以使其适合在网络中传输,
3、client stub找到接口的url后,通过网络发送到server服务端。
4、server stub接收到消息后,对消息进行解码
5、server stub根据解码结果调用本地方法得到结果。
6、server stub得到结果后,进行编码封装到网络传输消息体。
7、server stub将结果发送给服务消费端。
8、client stub接受到结果后,解码消息。
9、client stub将解码结果返回给RPC服务调用者client caller。