Dubbo源码解读——Dubbo如何启停服务

原创
2020/04/05 22:13
阅读数 464

Dubbo源码解读——Dubbo如何启停服务

Dubbo源码解读——Dubbo如何启停服务  1、Dubbo配置解析   2、源码解读: 3、记录的知识点:

1、Dubbo配置解析

  • Dubbo 提供的配置方式:Xml、注解、属性文件(ymal,properties)

  • 解析主要生成对应的Bean定义并注册到Spring上下文中

  • 相关配置解析在dubbo-config模块中

  • 其解析入口为:DubboNamespaceHandler

2、源码解读:

  1. xml配置方式解析:其入口是DubboNamespaceHandler,DubboBeanDefinitionParser中parse解析步骤为:

    1. 初始化RootBeanDefinition

    2. 获取BeanId

    3. 将获取到的Bean注册到Spring

    4. 将xml中配置的信息放到beandefinition的PropertyValues中

  2. 注解处理机制:

    1. EnableDubbo激活注解

    2. 如果使用了配置文件,则框架按需生成对应的Bean。

    3. 将所有使用Dubbo注解(@Service)的class提升为Bean。

    4. 使用注解(@Reference)的方法或字段注入代理对象。

  3. 解析注解属性:DubboConfigConfigurationRegistrar 和 DubboComponentScanRegistrar

  4. 服务注解扫描和注册:ServiceAnnotationBeanPostProcessor

  5. 消费注解注入:ReferenceAnnotationBeanPostProcessor

  6. 服务暴露源码入口:ServiceConfig 中doExport

    protected synchronized void doExport() {
        if (unexported) {
            throw new IllegalStateException("The service " + interfaceClass.getName() + " has already unexported!");
        }
        if (exported) {
            return;
        }
        exported = true;
    
        if (StringUtils.isEmpty(path)) {
            path = interfaceName;
        }
        doExportUrls();
    }

  7. 消费服务引用的入口:ReferenceBean中的

    @Override
    public Object getObject() {
        return get();
    }

3、记录的知识点:

  • Dubbo 利用了Spring 配置文件扩展出自定义的解析方式。

  • Dubbo支持多注册中心同时写,支付相同服务暴露多个协议。

  • Dubbo支持多注册中心同时消费。

  • Dubbo可以绕过注册中心直接向指定服务发起RPC调用(使用场景-压测)。


且读且珍惜~

展开阅读全文
加载中

作者的其它热门文章

打赏
0
0 收藏
分享
打赏
1 评论
0 收藏
0
分享
返回顶部
顶部