什么是RPC
rpc全称是Remote Procedure Call 远程过程调用
- 两台服务器A,B,一个部署在A服务器上的应用,想要调用B服务器上应用提供的函数(方法),由于不在一个内存空间,不可以直接调用,需要通过网络来传递数据
客户端调用远程服务的过程
- 客户端client发起调用服务的请求
- client stub(代理)将调用的方法,参数按照一定的格式封装,通过服务提供的地址,发起网络请求
- 消息通过网络发送给服务端
- server stub 接收来自scoket消息
- server stub解包,告诉服务端调用哪个服务及参数
- 返回结果给server stub
- server stub将结果打包给socket
- socket通过网络传递消息
- client stub接收来自socket的消息
10.client stub解包并将消息传递给client
RPC的三个过程
- 通讯协议
RPC是基于TCP进行远程调用,数据传输在传输层完成;RPC在客户端与服务端之间建立Socket连接,所有的数据交互都在此连接中传输。连接可以按需连接,调用结束之后就断掉,也可以是长连接,多个远程调用共享一个连接
- 寻址
A服务器上的应用告诉底层的RPC框架,如何连接B服务器及特定端口,方法名,这样才能完成调用
例如:基于Web服务协议栈的RPC,需要提供一个endpoint URI,或者从UDDI服务查找
- 数据序列化
由于网路协议是基于二进制的,内存中的参数值要序列化成二进制格式,通过寻址和传输序列化的二进制参数发送给B服务器
B服务器接收到请求后,反序列化参数,恢复为内存中的数据形式,然后寻找对应的方法进行本地调用,然后得到返回值
返回值需要返回给A服务器,也是经过序列化方式传输,A服务器接收后再反序列化