美文网首页
dubbo信息交换

dubbo信息交换

作者: 忘净空 | 来源:发表于2017-12-26 11:16 被阅读50次

    信息交换层(Exchange):封装请求响应模式,同步转异步,以Request和Response为中心,扩展接口为Exchanger、ExchangeChannel、ExchangeClient和ExchangeServer。

    源码走读

    DubboInvoker类的doInvoke方法开始

    image.png

    顺着同步调用的方法往下走!


    HeaderExchangeChannel类的request

    封装request请求参数,详细看DefaultFuture future = new DefaultFuture(channel, req, timeout)方法。

    如何获取Result呢?请看DefaultFuture的get方法。



    其实get方法中处理很简单,就是没有执行完成,线程切换到等到状态,那么线程何时唤醒呢?

    HeaderExchangeHandler类received方法

    顺着方法一直往下追,将在DefaultFuture类中看到下面的代码。



    唤醒线程

    问题

    1. 封装request请求的时候为何要将requestId作为key,DefaultFuture作为value塞进Map中。

    dubbo协议单一长连接,但是客户端多线程并发请求,为了保证request和response对应需要request标识一个id,同时response也携带这个id。

    相关文章

      网友评论

          本文标题:dubbo信息交换

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