美文网首页
18.Dubbo服务消费端一次远程调用过程

18.Dubbo服务消费端一次远程调用过程

作者: 山海树 | 来源:发表于2020-09-12 07:29 被阅读0次
image.png

ReferenceConfig.get()返回的是一个代理类,并且方法拦截器为InvokerInvocationHandler,所以当消费方调用服务的接口方法后会被InvokerInvocationHandler拦截


image.png

此时返回一个RpcInvocation,method就是要调用的方法,args就是传的真是参数
这个RpcInvocation回一直传递下去
最后调用到DubboInvoker的doInvoker()使用NettyClient与服务端进行交互


image.png
程序首先使获取远程调用Client,然后判断调用是否为异步调用、是否请求响应,需要说明的是,在配置RegerenceConfig时如果是异步需要设置async=true,因为这里会用到
image.png

如果请求不需要响应结果则直接使用远程Client发起请求调用,然后将RpcContext上下文的future设置为null,返回空的RpcResult
如果请求是异步请求,则保存远程Client发起请求后返回的future对象,并且设置到RpcContext上下文中,这样,调用方就可以通过RpcContext上下文获取改future。
如果请求为同步请求,则首先设置RpcContext上下文中的future对象为null,然后使用远程Client发起请求,然后在返回的future对象上调用get()方法,以同步等待远程调用结果的返回。


image.png

相关文章

  • 18.Dubbo服务消费端一次远程调用过程

    ReferenceConfig.get()返回的是一个代理类,并且方法拦截器为InvokerInvocationH...

  • RabbitMQ实现RPC调用

    Remote Procedure Call:远程过程调用,一次远程过程调用的流程即客户端发送一个请求到服务端,服务...

  • Dubbo篇:服务端请求响应与消费端异步写回结果源码分析

    概述 上文消费端服务调用中描述了发起一次远程调用的调用链,解析到了触发了Netty的outBound写事件writ...

  • dubbo消费端调用

    消费端调用的过程 调用链 关键方法 InvokerInvocationHandler#invoke 根据服务消费知...

  • 9.RabbitMQ实现RPC

    RPC,即远程过程调用,其流程如下: RPC实现RPC,则需要客户端(生产者)发送请求消息,服务端(消费者)回复响...

  • Dubbo消费端

    Dubbo消费端可以让我们在调用远程服务时本身是无感知的,就像在本地调用方法一样。 消费端主要内容有配置初始化、服...

  • 第十六章 RPC三 链接

    RPC的执行过程。参考 调用过程 一次远程调用的过程: 服务器启动客户端程序向所在主机上的端口映射器注册自身,然后...

  • 2019-08-03 图解RPC

    一次 RPC 调用流程如下: • 服务消费者(Client 客户端)通过本地调用的方式调用服务。 •客户端存根(C...

  • 2020-08-29_基于 web请求的远程调用学习

    基于 web请求的远程调用学习 1概述 本文模拟远程过程调用进行实战总结,总的内容如下; 抽查接口公共部分 服务端...

  • 手撸一个RPC框架

    如何调用他人的远程服务? 由于各服务部署在不同机器,服务间的调用免不了网络通信过程,服务消费方每调用一个服务都要写...

网友评论

      本文标题:18.Dubbo服务消费端一次远程调用过程

      本文链接:https://www.haomeiwen.com/subject/uaacektx.html