Dubbo 配置小结

本文主要总结 Dubbo 日常使用时的一些常用配置。

配置之间的关系

配置之间的关系

XML 配置 Java Config 配置 配置 解释
<dubbo:application/> com.alibaba.dubbo.config.ApplicationConfig 应用配置 用于配置当前应用信息,不管该应用是提供者还是消费者
<dubbo:registry/> com.alibaba.dubbo.config.RegistryConfig 注册中心配置 用于配置连接注册中心相关信息
<dubbo:monitor/> com.alibaba.dubbo.config.MonitorConfig 监控中心配置 用于配置连接监控中心相关信息,可选
<dubbo:protocol/> com.alibaba.dubbo.config.ProtocolConfig 协议配置 用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
<dubbo:provider/> com.alibaba.dubbo.config.ProviderConfig 提供方配置 ProtocolConfigServiceConfig 某属性没有配置时,采用此缺省值,可选
<dubbo:service/> com.alibaba.dubbo.config.ServiceConfig 服务配置 用于暴露一个服务,定义服务的元信息,一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心。对应注解:@Service
<dubbo:consumer/> com.alibaba.dubbo.config.ConsumerConfig 消费方配置 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
<dubbo:reference/> com.alibaba.dubbo.config.ReferenceConfig 引用配置 用于创建一个远程服务代理,一个引用可以指向多个注册中心。对应注解:@Reference
<dubbo:method/> com.alibaba.dubbo.config.MethodConfig 方法配置 用于 ServiceConfigReferenceConfig 指定方法级的配置信息
<dubbo:argument/> com.alibaba.dubbo.config.ArgumentConfig 参数配置 用于指定方法参数配置
<dubbo:module/> com.alibaba.dubbo.config.ModuleConfig 模块配置 用于配置当前模块信息,可选

下面是一些 dubbo 配置的总结:

协议

服务提供者

服务消费者

配置覆盖关系

配置覆盖关系:

  • 方法级优先,接口级次之,全局配置再次之。
  • 如果级别一样,则消费方优先,提供方次之。

规则二是指,所有配置最终都将转换为 URL 表示,并由服务提供方生成,经注册中心传递给消费方。其 URL 格式如下:protocol://username:password@host:port/path?key=value&key=value

dubbo 配置覆盖关系

参考:XML 配置

属性配置关系

dubbo 属性覆盖关系

参考:属性配置

注解配置实践

如果想用现代的 Java Config 替代传统的 XML 配置方式,配置如下:

声明组件

  • 服务提供方使用 @Service 注解暴露服务

    1
    2
    3
    4
    5
    6
    import com.alibaba.dubbo.config.annotation.Service;

    @Service(timeout = 5000)
    public class AnnotateServiceImpl implements AnnotateService {
    // ...
    }
  • 服务消费方使用 @Reference 注解引用服务

    1
    2
    3
    4
    5
    6
    7
    8
    import com.alibaba.dubbo.config.annotation.Reference;

    public class AnnotationConsumeService {
    @Reference
    public AnnotateService annotateService;

    // ...
    }

开启组件扫描

  • 2.5.7 (Nov, 2017) 以上版本,使用 @DubboComponentScan 指定 dubbo 组件扫描路径
  • 老版本或 Dubbox,使用:<dubbo:annotation package="com.alibaba.dubbo.test.service" />

Java Config 配置

  • 使用 @Configuration 注解开启 Java Config 并使用 @Bean 进行公共模块的 bean 配置,参考:API配置

自动化配置

  • 最后开启 @EnableDubboConfig

参考

在 Dubbo 中使用注解

https://www.oschina.net/news/92687/dubbo-spring-boot-starter-1-0-0

https://mvnrepository.com/artifact/com.alibaba.boot/dubbo-spring-boot-starter

https://mvnrepository.com/artifact/com.alibaba/dubbo

https://github.com/apache/incubator-dubbo