美文网首页
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服务消费端一次远程调用过程

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