RPC是什么?
RPC是指远程过程调⽤,也就是说两台服务器A,B,⼀个应⽤部署在A服务器上,想要调⽤B 服务器上应⽤提供的函数/⽅法,由于不在⼀个内存空间,不能直接调⽤,需要通过⽹络来表 达调⽤的语义和传达调⽤的数据
RPC怎么做?
连接:通过在客户端和服务器之间建⽴TCP连接,远程过程调⽤的所有交换的数据都在这个连 接⾥传输
寻址:A服务器上的应⽤怎么告诉底层的RPC框架,如何连接到B服务器(如主机或IP地址) 以及特定的端⼝
编码:⽹络协议是基于⼆进制的,内存中的参数的值要序列化成⼆进制的形式,也就是序列 化(Serialize)或编组(marshal),通过寻址和传输将序列化的⼆进制发送给B服务器
解码:B服务器收到请求后,需要对参数进⾏反序列化(序列化的逆操作),恢复为内存中的 表达⽅式,然后找到对应的⽅法(寻址的⼀部分)进⾏本地调⽤,然后得到返回值 处理返回值:返回值还要发送回服务器A上的应⽤,也要经过序列化的⽅式发送,服务器A接 到后,再反序列化,恢复为内存中的表达⽅式,交给A服务器上的应⽤
RPC的协议有很多,⽐如最早的CORBA,Java RMI,Web Service的RPC⻛格,Hessian,Thrift&#x