远程调用的流程

启动服务端(服务提供者)并发布服务到注册中心

启动客户端(服务消费者)并去注册中心订阅感兴趣的服务

客户端收到注册中心推送的服务地址列表

调用者发起调用, Proxy从服务地址列表中选择一个地址并将请求信息<group, providerName, version>, methodName, args[]等信息序列化为字节数组并通过网络发送到该地址上

服务端收到收到并反序列化请求信息, 根据<group, providerName, version>从本地服务字典里查找到对应providerObject, 再根据<methodName, args[]>通过反射调用指定方法, 并将方法返回值序列化为字节数组返回给客户端

客户端收到响应信息再反序列化为Java对象后由Proxy返回给方法调用者

以上流程对方法调用者是透明的, 一切看起来就像本地调用一样,

重要概念: RPC三元组 <ID, Request, Response>