Dubbo 官网:https://dubbo.apache.org/zh/docs

1.标签

标签

用途

解释

<dubbo:application/>

公共

用于配置当前应用信息,不管该应用是提供者还是消费者

<dubbo:registry/>

公共

用于配置连接注册中心相关信息

<dubbo:protocol/>

Provider

用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受

<dubbo:service/>

Provider

用于暴露一个服务,定义服务的元信息,

一个服务可以用多个协议暴露,一个服务也可以注册到多个注册中心

<dubbo:provider/>

Provider

当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选

<dubbo:consumer/>

Consumer

当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选

<dubbo:reference/>

Consumer

用于创建一个远程服务代理,一个引用可以指向多个注册中心

<dubbo:method/>

公共

用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息

<dubbo:argument/>

公共

用于指定方法参数配置

dubbo配置heartbeat dubbo常用配置_性能调优

2.标签配置项

我们可以在官网的查到所有标签的配置项

dubbo配置heartbeat dubbo常用配置_dubbo_02


所有配置项分为三大类

  1. 服务发现:表示该配置项用于服务的注册与发现,目的是让消费方找到提供方。
  2. 服务治理:表示该配置项用于治理服务间的关系,或为开发测试提供便利条件。
  3. 性能调优:表示该配置项用于调优性能,不同的选项对性能会产生影响。

我们下面来看看最核心的两个:<dubbo:provider><dubbo:consumer>

2.1 dubbo:provider

服务提供者缺省值配置。对应的配置类: org.apache.dubbo.config.ProviderConfig

PS:该标签为 <dubbo:service><dubbo:protocol> 标签的缺省值设置。

属性

对应URL参数

类型

是否必填

缺省值

作用

描述

兼容性

id

string

可选

dubbo

配置关联

协议BeanId,可以在<dubbo:service proivder="">中引用此ID

1.0.16以上版本

protocol

string

可选

dubbo

性能调优

协议名称

1.0.16以上版本

host

string

可选

自动查找本机IP

服务发现

服务主机名,多网卡选择或指定VIP及域名时使用,为空则自动查找本机IP,建议不要配置,让Dubbo自动获取本机IP

1.0.16以上版本

threads

threads

int

可选

200

性能调优

服务线程池大小(固定大小)

1.0.16以上版本

payload

payload

int

可选

8388608(=8M)

性能调优

请求及响应数据包大小限制,单位:字节

2.0.0以上版本

path


string

可选

服务发现

提供者上下文路径,为服务path的前缀

2.0.0以上版本

server

server

string

可选

dubbo协议缺省为netty,http协议缺省为servlet

性能调优

协议的服务器端实现类型,比如:dubbo协议的mina,netty等,http协议的jetty,servlet等

2.0.0以上版本

client

client

string

可选

dubbo协议缺省为netty

性能调优

协议的客户端实现类型,比如:dubbo协议的mina,netty等

2.0.0以上版本

codec

codec

string

可选

dubbo

性能调优

协议编码方式

2.0.0以上版本

serialization

serialization

string

可选

dubbo协议缺省为hessian2,rmi协议缺省为java,http协议缺省为json

性能调优

协议序列化方式,当协议支持多种序列化方式时使用,比如:dubbo协议的dubbo,hessian2,java,compactedjava,以及http协议的json,xml等

2.0.5以上版本

default

boolean

可选

false

配置关联

是否为缺省协议,用于多协议

1.0.16以上版本

filter

service.filter

string

可选

性能调优

服务提供方远程调用过程拦截器名称,多个名称用逗号分隔

2.0.5以上版本

listener

exporter.listener

string

可选

性能调优

服务提供方导出服务监听器名称,多个名称用逗号分隔

2.0.5以上版本

threadpool

threadpool

string

可选

fixed

性能调优

线程池类型,可选:fixed/cached/limit(2.5.3以上)/eager(2.6.x以上)

2.0.5以上版本

accepts

accepts

int

可选

0

性能调优

服务提供者最大可接受连接数

2.0.5以上版本

version

version

string

可选

0.0.0

服务发现

服务版本,建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级

2.0.5以上版本

group

group

string

可选

服务发现

服务分组,当一个接口有多个实现,可以用分组区分

2.0.5以上版本

delay

delay

int

可选

0

性能调优

延迟注册服务时间(毫秒)- ,设为-1时,表示延迟到Spring容器初始化完成时暴露服务

2.0.5以上版本

timeout

default.timeout

int

可选

1000

性能调优

远程服务调用超时时间(毫秒)

2.0.5以上版本

retries

default.retries

int

可选

2

性能调优

远程服务调用重试次数,不包括第一次调用,不需要重试请设为0

2.0.5以上版本

connections

default.connections

int

可选

0

性能调优

对每个提供者的最大连接数,rmi、http、hessian等短连接协议表示限制连接数,dubbo等长连接协表示建立的长连接个数

2.0.5以上版本

loadbalance

default.loadbalance

string

可选

random

性能调优

负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮询,最少活跃调用

2.0.5以上版本

async

default.async

boolean

可选

false

性能调优

是否缺省异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程

2.0.5以上版本

stub

stub

boolean

可选

false

服务治理

设为true,表示使用缺省代理类名,即:接口名 + Local后缀。

2.0.5以上版本

mock

mock

boolean

可选

false

服务治理

设为true,表示使用缺省Mock类名,即:接口名 + Mock后缀。

2.0.5以上版本

token

token

boolean

可选

false

服务治理

令牌验证,为空表示不开启,如果为true,表示随机生成动态令牌

2.0.5以上版本

registry

registry

string

可选

缺省向所有registry注册

配置关联

向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A

2.0.5以上版本

dynamic

dynamic

boolean

可选

true

服务治理

服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。

2.0.5以上版本

accesslog

accesslog

string/boolean

可选

false

服务治理

设为true,将向logger中输出访问日志,也可填写访问日志文件路径,直接把访问日志输出到指定文件

2.0.5以上版本

owner

owner

string

可选

服务治理

服务负责人,用于服务治理,请填写负责人公司邮箱前缀

2.0.5以上版本

document

document

string

可选

服务治理

服务文档URL

2.0.5以上版本

weight

weight

int

可选

性能调优

服务权重

2.0.5以上版本

executes

executes

int

可选

0

性能调优

服务提供者每服务每方法最大可并行执行请求数

2.0.5以上版本

actives

default.actives

int

可选

0

性能调优

每服务消费者每服务每方法最大并发调用数

2.0.5以上版本

proxy

proxy

string

可选

javassist

性能调优

生成动态代理方式,可选:jdk/javassist

2.0.5以上版本

cluster

default.cluster

string

可选

failover

性能调优

集群方式,可选:failover/failfast/failsafe/failback/forking

2.0.5以上版本

deprecated

deprecated

boolean

可选

false

服务治理

服务是否过时,如果设为true,消费方引用时将打印服务过时警告error日志

2.0.5以上版本

queues

queues

int

可选

0

性能调优

线程池队列大小,当线程池满时,排队等待执行的队列大小,建议不要设置,当线程池满时应立即失败,重试其它服务提供机器,而不是排队,除非有特殊需求。

2.0.5以上版本

charset

charset

string

可选

UTF-8

性能调优

序列化编码

2.0.5以上版本

buffer

buffer

int

可选

8192

性能调优

网络读写缓冲区大小

2.0.5以上版本

iothreads

iothreads

int

可选

CPU + 1

性能调优

IO线程池,接收网络读写中断,以及序列化和反序列化,不处理业务,业务线程池参见threads配置,此线程池和CPU相关,不建议配置。

2.0.5以上版本

telnet

telnet

string

可选

服务治理

所支持的telnet命令,多个命令用逗号分隔

2.0.5以上版本

<dubbo:service>

contextpath

contextpath

String

可选

缺省为空串

服务治理

layer

layer

string

可选

服务治理

服务提供者所在的分层。如:biz、dao、intl:web、china:acton。

2.0.7以上版本

2.2 dubbo:consumer

服务消费者缺省值配置。配置类:org.apache.dubbo.config.ConsumerConfig

PS:该标签为 <dubbo:reference> 标签的缺省值设置。

属性

对应URL参数

类型

是否必填

缺省值

作用

描述

兼容性

timeout

default.timeout

int

可选

1000

性能调优

远程服务调用超时时间(毫秒)

1.0.16以上版本

retries

default.retries

int

可选

2

性能调优

远程服务调用重试次数,不包括第一次调用,不需要重试请设为0,仅在cluster为failback/failover时有效

1.0.16以上版本

loadbalance

default.loadbalance

string

可选

random

性能调优

负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮询,最少活跃调用

1.0.16以上版本

async

default.async

boolean

可选

false

性能调优

是否缺省异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程

2.0.0以上版本

connections

default.connections

int

可选

100

性能调优

每个服务对每个提供者的最大连接数,rmi、http、hessian等短连接协议支持此配置,dubbo协议长连接不支持此配置

1.0.16以上版本

generic

generic

boolean

可选

false

服务治理

是否缺省泛化接口,如果为泛化接口,将返回GenericService

2.0.0以上版本

check

check

boolean

可选

true

服务治理

启动时检查提供者是否存在,true报错,false忽略

1.0.16以上版本

proxy

proxy

string

可选

javassist

性能调优

生成动态代理方式,可选:jdk/javassist

2.0.5以上版本

owner

owner

string

可选

服务治理

调用服务负责人,用于服务治理,请填写负责人公司邮箱前缀

2.0.5以上版本

actives

default.actives

int

可选

0

性能调优

每服务消费者每服务每方法最大并发调用数

2.0.5以上版本

cluster

default.cluster

string

可选

failover

性能调优

集群方式,可选:failover/failfast/failsafe/failback/forking

2.0.5以上版本

filter

reference.filter

string

可选

性能调优

服务消费方远程调用过程拦截器名称,多个名称用逗号分隔

2.0.5以上版本

listener

invoker.listener

string

可选

性能调优

服务消费方引用服务监听器名称,多个名称用逗号分隔

2.0.5以上版本

registry

string

可选

缺省向所有registry注册

配置关联

向指定注册中心注册,在多个注册中心时使用,值为<dubbo:registry>的id属性,多个注册中心ID用逗号分隔,如果不想将该服务注册到任何registry,可将值设为N/A

2.0.5以上版本

layer

layer

string

可选

服务治理

服务调用者所在的分层。如:biz、dao、intl:web、china:acton。

2.0.7以上版本

init

init

boolean

可选

false

性能调优

是否在afterPropertiesSet()时饥饿初始化引用,否则等到有人注入或引用该实例时再初始化。

2.0.10以上版本

cache

cache

string/boolean

可选

服务治理

以调用参数为key,缓存返回结果,可选:lru, threadlocal, jcache等

Dubbo2.1.0及其以上版本支持

validation

validation

boolean

可选

服务治理

是否启用JSR303标准注解验证,如果启用,将对方法参数上的注解进行校验

Dubbo2.1.0及其以上版本支持

3.使用建议

3.1 两个套路

套路一:使用缺省配置标签

如果需要暴露多个服务的时候,每个服务都要设置其超时时间,貌似有点繁琐。Dubbo中可以通过 <dubbo:provider> 来实现服务端缺省配置。它可以同时为 <dubbo:service><dubbo:protocol> 两个标签提供缺省配置。

比如:<dubbo:provider timeout="2000" retries="2"></dubbo:provider> 相当于每个服务提供者设置了超时时间和重试次数。这些缺省设置可以配置多个通过 <dubbo:service provider="providerId">,如果没指定就用第一个。

同样客户端也有缺省配置标签:<dubbo:consumer>

套路二:多标签同一配置项的优先级问题

在服务端配置 timeout 之后,所有客户端都会采用该方超时时间,其客户端可以自定义超时时间吗?通过 <dubbo:reference timeout="2000"> 可以设定,或者在<dubbo:consumer timeout="2000"> 也可以设定,甚至可以设定到方法级别 <dubbo:method name="getUser" timeout="2000"/>

加上服务端的配置,超时总共有6处可以配置。如果6处都配置了不同的值,最后肯定只会有一个超时值生效,其优先级如下:

dubbo配置heartbeat dubbo常用配置_ide_03

3.2 配置示例

Provider:

<dubbo:application name="demo-provider"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" check="true"/>
<dubbo:protocol name="dubbo" port="20880"/>

<dubbo:provider group="xupt.yzh.demo"
                threadpool="fixed"
                threads="500"
                timeout="5000"
                retries="2"/>

<dubbo:service interface="com.xupt.yzh.demo.service.DemoService"
               timeout="5000"
               retries="1"
               version="3.0.0"
               ref="demoService"/>

<bean id="demoService" class="com.xupt.yzh.demo.service.DemoServiceImpl"/>

Consumer:

<dubbo:application name="demo-consumer"/>
<dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" check="true"/>

<dubbo:consumer timeout="5000" retries="2"
                group="xupt.yzh.demo"
                version="1.0.0"/>
                
<dubbo:reference
        timeout="3000" retries="1"
        id="demoService"
        version="*"
        interface="com.xupt.yzh.demo.service.DemoService"/>