dubbo服务发布 2.0版本

    技术2022-07-11  72

    Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东东,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSdl,以服务者与消费者的方式在dubbo上注册)

    前面讲到dubbo spi机制 这篇主要将如何发布服务

    配置文件 

     

    DubboBeanDefinitionParser 解析dubbo-server1.xml 文件 注入多大屏ioc容器中 被spring容器管理

    ServiceBean 中的 export方法

    再到 ServiceConfig     doExport() 方法

     

    doExportUrls()方法

     

    protocol.export() 方法 当前用到了扩展点 dubbo spi机制

    private static final Protocol protocol  =(Protocol)ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();

    注意这里的protocol  返回的是 RegisterProtocol  中的export()

    DubboProtocol 

     

     

    Exchangers 类 bind方法

    HeaderExchanger bind()

    Transporters bind方法

    NettyTransporter bind方法

    NettyServer     doOpen 方法 真正的发布服务

    从 RegisterProtocol - > Dubbo$Protocol -> ProtocolFilterWrapper  -> ProtocolListenerWrapper -> DubboProtocol -> Exchangers ->  HeaderExchanger -> Transporters ->  NettyTransporter -> NettyServer     服务发布 并注册到注册中心    

    Processed: 0.011, SQL: 9