什么是RPC

可乐猪小姐 8月前 ⋅ 78 阅读

要了解什么是RPC,为什么要用RPC,RPC是指远程过程调用,也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器的方法和函数,由于不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的含义及传达调用的数据;

比如说,一个方法定义为 String getHelloByName(String name);

那么,

首先,是通讯问题,即主要通过客户端和服务器之间建立TCP连接,远程过程调用的所有数据都在这个连接里面传输。连接可以是按需连接,调用结束后就中断,也可以是长连接,多个远程过程调用共享同一个连接。

第二,是寻址问题,也就是说,A服务器上的应用入股告诉底层的RPC框架,如何连接B服务器(如主机或者IP地址)及特定端口,方法的名称是什么,这样才能完成调用。

第三,当A服务器上应用发起远程过程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数值也需要序列化成二进制的形式,通过寻址和传输将序列化的二进制发送给B服务器。

第四,B服务器收到请求后,需要对参数和方法名进行反序列,恢复为内存中的表达式,然后找到对应的方法进行本地调用,然后得到返回值。

第五,返回值还要返回到A服务器,也需要经过序列化的方式发送,服务器A接收到后,再次反序列化为内存中的表达方式,交给A服务器。


注意:本文归作者所有,未经作者允许,不得转载

全部评论: 0

    我有话说: