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

编程

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调用(使用场景-压测)。

且读且珍惜~

以上是 Dubbo源码解读——Dubbo如何启停服务 的全部内容, 来源链接: utcz.com/z/515130.html

回到顶部