(252条消息) dubbo的exchange层_吴键的博客-CSDN博客
Exchange信息交换层介于Protocol层与Transport层之间,起着承上启下的作用,在Exchange层,封装请求响应模式,将Invocation与Result封装成Request与Response,将请求同步转成异步。
为什么要单独抽象出一个Exchange层,而不是在Protocol层直接对Netty或者Mina引用?这个问题其实不难理解,Netty或者Mina对外接口和调用方式都不一样,如果在Protocol层直接对Mina做引用,对于Protocol层来讲,就依赖了具体而不是抽象,过几天想要换成Netty,就需要对Protocol层做大量的修改。这样不符合开闭原则。
Dubbo使用的是TCP长连接,与我们开发常见到的HTTP协议(HTTP本身与TCP也不在同一层)不同 。TCP本身没有Request和Response的概念。只有发送和接收。HTTP协议中的Request和Response是由Http服务器或者Servlet容器来实现的。
Dubbo要使用TCP长连接,就得自己实现Request和Response的抽象概念,这样客户端与服务端之间的交互才能有去有回。
2.角色Consumer,接收Response信息。然后就是通知DefaultFuture说Response回来了。详细看下DefaultFuture,它就像以前接收信件的传达室,员工对外发了一封信,告知传达室登记下。传达室接到回信后再把信件交给员工。这就完成的信息的一来一回。来看代码HeaderExchangeChannel.request
————————————————
版权声明:本文为CSDN博主「吴键」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wjlucky262/article/details/105907565