1、RPC的原理是什么?
1、客户端(服务消费端):调用远程方法的一端
2、客户端Stub(桩): 这其实就是一代理类。代理类主要的是事情很简单,就是把你调用方法、类、方法参数等信息传递到服务端
3、网络传输:网络传输就是你要把你调用的方法的信息比如说参数啊这些东西传输到服务端,然后服务端执行完之后再把返回结果通过网络传输给你传输回来。网络传输的实现方式有很多种比如最近基本的 Socket或者性能以及封装更加优秀的 Netty(推荐)。
4、服务端Stub(桩):这个桩就不是代理类了。我觉得理解为桩实际不太好,大家注意一下就好。这里的服务端 Stub 实际指的就是接收到客户端执行方法的请求后,去指定对应的方法然后返回结果给客户端的类。
5、服务端(服务提供端):提供远程方法的一端
1、服务消费端: 以本地调用的方式调用远程服务;
2、客户端Stub :接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体。
3、客户端Stub: 找到远程服务的地址,并将消息发送到服务提供端
4、服务端 Stub(桩)收到消息将消息反序列化为Java对象: RpcRequest
;
5、服务端 Stub(桩)根据RpcRequest
中的类、方法、方法参数等信息调用本地的方法;
6、服务端 Stub(桩)得到方法执行结果并将组装成能够进行网络传输的消息体:RpcResponse
(序列化)发送至消费方;
7、客户端 Stub(client stub)接收到消息并将消息反序列化为Java对象:RpcResponse
,这样也就得到了最终结果。over!