远程调用的流程
启动服务端(服务提供者)并发布服务到注册中心
启动客户端(服务消费者)并去注册中心订阅感兴趣的服务
客户端收到注册中心推送的服务地址列表
调用者发起调用, Proxy从服务地址列表中选择一个地址并将请求信息<group, providerName, version>, methodName, args[]等信息序列化为字节数组并通过网络发送到该地址上
服务端收到收到并反序列化请求信息, 根据<group, providerName, version>从本地服务字典里查找到对应providerObject, 再根据<methodName, args[]>通过反射调用指定方法, 并将方法返回值序列化为字节数组返回给客户端
客户端收到响应信息再反序列化为Java对象后由Proxy返回给方法调用者
以上流程对方法调用者是透明的, 一切看起来就像本地调用一样,
重要概念: RPC三元组 <ID, Request, Response>
启动服务端(服务提供者)并发布服务到注册中心
启动客户端(服务消费者)并去注册中心订阅感兴趣的服务
客户端收到注册中心推送的服务地址列表
调用者发起调用, Proxy从服务地址列表中选择一个地址并将请求信息<group, providerName, version>, methodName, args[]等信息序列化为字节数组并通过网络发送到该地址上
服务端收到收到并反序列化请求信息, 根据<group, providerName, version>从本地服务字典里查找到对应providerObject, 再根据<methodName, args[]>通过反射调用指定方法, 并将方法返回值序列化为字节数组返回给客户端
客户端收到响应信息再反序列化为Java对象后由Proxy返回给方法调用者
以上流程对方法调用者是透明的, 一切看起来就像本地调用一样,
重要概念: RPC三元组 <ID, Request, Response>