RPC基本原理

RPC

RPC只是一个概念 而不是具体的协议或框架

远程方法调用,这是一个统称,重点在于方法调用(不支持对象的概念)。多用于服务器集群间的通信,因此常使用更加高效 短小精悍的传输模式以提高效率

TCP/IP传输

由服务的调用方与服务的提供方建立 Socket 连接,并由服务的调用方通过 Socket 将需要调用的接口名称、方法名称和参数序列化后传递给服务的提供方,服务的提供方反序列化后再利用反射调用相关的方法。

这个方法的本质就是 客户端把 参数 转化成二进制数组 然后通过TCP传给服务端 由服务端 调用方法获得结果 再转化成二进制数组传给客户端

简化客户端的流程 引入stub(客户端存根)

客户端存根(Client Stub):存放服务端地址信息,将客户端的请求参数数据信息打包成网络消息,再通过网络传输发送给服务端。

本质上就是在客户端对网络层的内容进行了封装,用户不需要再关心网络层,但显然此时由于方法写死导致代码可拓展性不强

使用动态代理生成service类供客户端调用 彻底隐藏所有网络细节

实质就是把方法名也传递给服务端

server:

服务端获得方法名和参数,使用反射的方法获得输出结果返回给客户端

服务端直接写回对象

服务端写回一个对象 而不是在客户端哪里获得属性然后组装对象,这里可以采用不同的序列化方式

在客户端存根当中 服务端写回的结果进行了改变

服务端支持对不同类的不同函数、不同参数的结果返回

实质就是把接口名也传给服务端


server 获取名字

总结

最后 其实上述的所有版本 底层都是基于TCP/IP通信协议

我们也可以采用CORBA,Web Service,RestFul等协议来实现

posted @ 2021-07-22 15:27  刚刚好。  阅读(207)  评论(0编辑  收藏  举报