• dubbo服务暴露原理-远程暴露


    1.与本地暴露相比,远程暴露也大同小异

     

     

     

     

     

     

     

     

     

     

     我们已经到了第三个关键词Procotol我们来看看他的继承体系图

     按照经典图的路线,我们下一个关键词应该就是Server了,从方法名openServer(url)也可以看出来确实是这样.在这个ProcotolTransporter插播一个关键词,那就是Exchanger

     

     从单词意思我们知道,这个是交换的意思,按照计算机术语,这个称之为交换层更贴切.那么问题来了,他交换什么东西?那我们来看一下他的方法图(粗暴式点题,怎么看源码)

     

     

     

     

     下面就要注意了,我们要来到下一个关键词Transporter,这个从字面理解为传输层,那这个究竟是什么传输层?我们来看一下继承体系图

     从这里就可以看出,这个是网络传输层,其中GrizzlyMinaNetty都是非常有名的NIO框架,想了解他们可以查一下相关资料

     

     

     

     

     继续往下走,看到这里有个构造方法,那么就要敲黑板画一下重点了.看源码凡是遇到构造方法的,都要特别注意,因为我们知道调用构造方法前,会先调用父类的构造方法,因此,这个继承体系图是要看一下的

     

     因此我们将断点打到他的父类上,可以看出,这做的主要是一些根据配置文件设置一些超时时间之类的

     

     

    高潮还没完,我们注意到,在AbstractServer类中有一个doOpen()方法.这个doOpen()方法方法是一个抽象方法,这种做法称之为钩子方法.也叫模板方法,熟悉设计模式的话,会对这种方式并不模式,其实在Servletinit()方法也是这种做法,可以看看Servlet的源码(粗暴式点题,看源码学到了什么)

    那么我们就到了doOpen方法,这里如果大家写过一些简单的netty例子看到这段代码就会很熟悉了

     另外提一下这个9并不是固定的,这个和我们的机器是有关的,不熟悉的参数我们可以用以下的方式查一下文档

    那么继续走,这里为什么会进入这个构造方法呢?注意我们在提Transporter关键词之前是有new一个HeaderExchangeServer对象的.在这个构造方法中,通过startHeatbeatTimer设置了netty的心跳,这些netty的细节我们在后面的netty专题再细说

     正如官方文档所说Dubbo 处理服务暴露的关键就在 Invoker 转换到 Exporter 的过程,看到这个exporter,也预告本篇走到了尾声




    参考:https://www.jianshu.com/p/893f7e6e0c58

  • 相关阅读:
    sublime text3 常用插件安装
    eclipse 快捷键
    数组去重及数组的prototype原型
    如何用angularjs给从后台传来数据添加链接
    【转载】Java Web的web.xml文件作用及基本配置
    【转】数据库几种范式
    Socket编程
    进程间的五种通信方式介绍
    进程与线程的区别
    【转载】程序员必知之浮点数运算原理详解
  • 原文地址:https://www.cnblogs.com/xyj179/p/11491893.html
Copyright © 2020-2023  润新知