Dubbo常用的xml配置

所有配置项分为三大类:

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

所有配置最终都将转换为 URL表示,并由服务提供方生成,经注册中心传递给消费方,各属性对应 URL 的参数。

  1. XML Schema: http://dubbo.apache.org/schema/dubbo/dubbo.xsd
  2. 注意:只有 group,interface,version 是服务的匹配条件,三者决定是不是同一个服务,其它配置项均为调优和治理参数
  3. URL 格式:protocol://username:password@host:port/path?key=value&key=value

xml schema示例:

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:dubbo="http://dubbo.apache.org/schema/dubbo"
       xmlns="http://www.springframework.org/schema/beans"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd">
   
</beans>

dubbo:application

应用信息配置。对应的配置类:org.apache.dubbo.config.ApplicationConfig

常用的配置:

1)name

当前应用名称,用于注册中心计算应用间依赖关系。你当前项目叫什么名字就填什么。

dubbo:service

服务提供者暴露服务配置。对应的配置类:org.apache.dubbo.config.ServiceConfig。

示例:

<bean id="demoService" class="org.apache.dubbo.samples.basic.impl.DemoServiceImpl"/>
<dubbo:service interface="org.apache.dubbo.samples.basic.api.DemoService" ref="demoService"/>

常用的配置:

1)interface

必填。作用是服务发现。

服务接口名。

2)ref

必填。作用是服务发现。

服务对象实现引用。

3)group

可选。作用是服务发现。

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

4)delay

可选。作用是性能调优。

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

5)timeout

可选。作用是性能调优。

远程服务调用超时时间(毫秒)。默认是1000。

6)retries

可选。作用是性能调优。

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

7)connections

可选。作用是性能调优。

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

8)loadbalance

可选。作用是性能调优。

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

9)registry

可选。作用是配置关联。

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

10)provider

可选。作用是配置关联。

指定provider,值为<dubbo:provider>的id属性。默认是第一个provider配置。

11)accesslog

可选。作用是服务治理。

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

12)weight

可选。作用是性能调优。

服务权重

13)executes

可选。作用是性能调优。

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

14)cluster

可选。作用是性能调优。

集群方式,可选:failover/failfast/failsafe/failback/forking。默认是failover。

15)filter

可选。作用是性能调优。

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

16)listener

可选。作用是性能调优。

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

17)protocol

可选。作用是配置关联。

使用指定的协议暴露服务,在多协议时使用,值为<dubbo:protocol>的id属性,多个协议ID用逗号分隔。

18)register

可选。作用是服务治理。

该协议的服务是否注册到注册中心。默认是true。

dubbo:reference

服务消费者引用服务配置。对应的配置类: org.apache.dubbo.config.ReferenceConfig。

示例:

<!--配置代理-->
<dubbo:reference id="demoService" check="false" interface="org.apache.dubbo.samples.basic.api.DemoService"/>

常用的配置:

1)id

必填。

服务引用BeanId(类似Spring中的beanId)。

2)interface

必填。作用是服务发现。

服务接口名。

3)group

可选。作用是服务发现。

服务分组,当一个接口有多个实现,可以用分组区分,必需和服务提供方一致。

4)timeout

可选。作用是性能调优。

服务方法调用超时时间(毫秒)。默认是<dubbo:consumer>的timeout。

5)retries

可选。作用是性能调优。

远程服务调用重试次数,不包括第一次调用,不需要重试请设为0。默认是<dubbo:consumer>的retries。

6)connections

可选。作用是性能调优。

对每个提供者的最大连接数,rmi、http、hessian等短连接协议表示限制连接数,dubbo等长连接协表示建立的长连接个数。默认是<dubbo:consumer>的connections。

7)loadbalance

可选。作用是性能调优。

负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮询,最少活跃调用。默认是<dubbo:consumer>的loadbalance。

8)check

可选。作用是服务治理。

启动时检查提供者是否存在,true报错,false忽略。默认是<dubbo:consumer>的check。

9)cache

可选。作用是服务治理。

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

10)validation

可选。作用是服务治理。

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

11)actives

可选。作用是性能调优。

每服务消费者每服务每方法最大并发调用数。默认是0。

12)cluster

可选。作用是性能调优。

集群方式,可选:failover/failfast/failsafe/failback/forking。默认是failover。

13)filter

可选。作用是性能调优。

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

14)listener

可选。作用是性能调优。

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

dubbo:protocol

服务提供者协议配置。对应的配置类: org.apache.dubbo.config.ProtocolConfig。同时,如果需要支持多协议,可以声明多个 <dubbo:protocol> 标签,并在 <dubbo:service> 中通过 protocol 属性指定使用的协议。

常用的配置:

1)name

必填。

协议名称。默认是dubbo。

2)port

服务端口。

dubbo协议缺省端口为20880,rmi协议缺省端口为1099,http和hessian协议缺省端口为80;如果没有配置port,则自动采用默认端口,如果配置为-1,则会分配一个没有被占用的端口。Dubbo 2.4.0+,分配的端口在协议缺省端口的基础上增长,确保端口段可控。

3)threadpool

可选。作用是性能调优。

线程池类型,可选:fixed/cached。默认是fixed。

4)threads

可选。作用是性能调优。

服务线程池大小(固定大小)。默认是200。

5)iothreads

可选。作用是性能调优。

io线程池大小(固定大小)。默认是cpu个数+1。

6)accepts

可选。作用是性能调优。

服务提供方最大可接受连接数。默认是0。

7)payload

可选。作用是性能调优。

请求及响应数据包大小限制,单位:字节。默认是8388608(=8M)。

8)serialization

可选。作用是性能调优。

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

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

9)buffer

可选。作用是性能调优。

网络读写缓冲区大小。默认是8192。

dubbo:method

方法级配置。对应的配置类: org.apache.dubbo.config.MethodConfig。同时该标签为 <dubbo:service> 或 <dubbo:reference> 的子标签,用于控制到方法级。

常用的配置:

1)name

必填。方法名。

2)timeout

可选。作用是性能调优。

方法调用超时时间(毫秒)。

3)retries

可选。作用是性能调优。

远程服务调用重试次数,不包括第一次调用,不需要重试请设为0。默认是<dubbo:reference>的retries。

4)loadbalance

可选。作用是性能调优。

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

5)actives

可选。作用是性能调优。

每服务消费者最大并发调用限制。默认是0。

6)cache

可选。作用是服务治理。

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

7)validation

可选。作用是服务治理。

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

dubbo:argument

方法参数配置。对应的配置类: org.apache.dubbo.config.ArgumentConfig。该标签为 <dubbo:method> 的子标签,用于方法参数的特征描述。

示例:

<dubbo:method name="findXxx" timeout="3000" retries="2">
    <dubbo:argument index="0" callback="true" />
</dubbo:method>

常用的配置:

1)index

必填。

参数索引。0、1......

2)callback

可选。

参数是否为callback接口,如果为callback,服务提供方将生成反向代理,可以从服务提供方反向调用消费方,通常用于事件推送。

dubbo:config-center

配置中心。对应的配置类:org.apache.dubbo.config.ConfigCenterConfig。

Zookeeper配置中心示例:

<dubbo:config-center address="zookeeper://127.0.0.1:2181"/>

dubbo.config-center.address=zookeeper://127.0.0.1:2181

ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("zookeeper://127.0.0.1:2181");

更多的外部化配置:https://dubbo.apache.org/zh/docs/references/configuration/external-config/

常用的配置:

1)address

必填。

配置中心地址。

2)protocol

可选。

使用哪个配置中心:apollo、zookeeper、nacos等。

以zookeeper为例:

  • 指定protocol,则address可以简化为127.0.0.1:2181;
  • 不指定protocol,则address取值为zookeeper://127.0.0.1:2181

3)check

可选。

当配置中心连接失败时,是否终止应用启动。默认true。

4)config-file

可选。

全局级配置文件所映射到的key

zookeeper - 默认路径/dubbo/config/dubbo/dubbo.properties

apollo - dubbo namespace中的dubbo.properties键

5)timeout

可选。

获取配置的超时时间。默认是3000ms。

6)include-spring-env

使用Spring框架时支持,为true时,会自动从Spring Environment中读取配置。

默认依次读取:

  • key为dubbo.properties的配置
  • key为dubbo.properties的PropertySource

7)cluster

可选。

含义视所选定的配置中心而不同。

如Apollo中用来区分不同的配置集群

8)group

可选。

含义视所选定的配置中心而不同。

nacos - 隔离不同配置集

zookeeper - 隔离不同配置集

9)namespace

通常用于多租户隔离,实际含义视具体配置中心而不同。

如:

  • zookeeper - 环境隔离,默认值dubbo;
  • apollo - 区分不同领域的配置集合,默认使用dubbo和application

dubbo:registry

注册中心配置。对应的配置类: org.apache.dubbo.config.RegistryConfig。同时如果有多个不同的注册中心,可以声明多个 <dubbo:registry> 标签,并在 <dubbo:service> 或 <dubbo:reference> 的 registry 属性指定使用的注册中心。

更多的说明:https://dubbo.apache.org/zh/docs/references/registry/

常用的配置:

1)address

必填。作用是服务发现。

注册中心服务器地址,如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:port,不同集群的注册中心,请配置多个<dubbo:registry>标签。

2)id

可选。作用是配置关联。

注册中心引用BeanId,可以在<dubbo:service registry="">或<dubbo:reference registry="">中引用此ID

3)protocol

可选。作用是服务发现。

注册中心地址协议,支持dubbo, multicast, zookeeper, redis, consul(2.7.1), sofa(2.7.2), etcd(2.7.2), nacos(2.7.2)等协议。默认是dubbo。

4)port

可选。作用是服务发现。

注册中心缺省端口,当address没有带端口时使用此端口做为缺省值。默认是9090。

5)username

可选。作用是服务治理。

登录注册中心用户名,如果注册中心不需要验证可不填。

6)password

可选。作用是服务治理。

登录注册中心密码,如果注册中心不需要验证可不填。

7)timeout

可选。作用是性能调优。

注册中心请求超时时间(毫秒)。默认是5000。

8)session

可选。作用是性能调优。

注册中心会话超时时间(毫秒),用于检测提供者非正常断线后的脏数据,比如用心跳检测的实现,此时间就是心跳间隔,不同注册中心实现不一样。默认是60000。

9)wait

可选。作用是性能调优。

停止时等待通知完成时间(毫秒)。默认是0。

10)check

可选。作用是服务治理。

注册中心不存在时,是否报错。默认是true。

11)group

可选。作用是服务治理。

服务注册分组,跨组的服务不会相互影响,也无法相互调用,适用于环境隔离。默认是dubbo。

dubbo:provider

服务提供者缺省值配置。对应的配置类: org.apache.dubbo.config.ProviderConfig。同时该标签为 <dubbo:service> 和 <dubbo:protocol> 标签的缺省值设置

常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-provider/

dubbo:consumer

服务消费者缺省值配置。配置类: org.apache.dubbo.config.ConsumerConfig 。同时该标签为 <dubbo:reference> 标签的缺省值设置。

常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-consumer/

dubbo:module

模块信息配置。对应的配置类 org.apache.dubbo.config.ModuleConfig

常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-module/

dubbo:monitor

监控中心配置。对应的配置类: org.apache.dubbo.config.MonitorConfig

常用的配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-monitor/

dubbo:parameter

选项参数配置。对应的配置类:java.util.Map。同时该标签为<dubbo:protocol>或<dubbo:service>或<dubbo:provider>或<dubbo:reference>或<dubbo:consumer>的子标签,用于配置自定义参数,该配置项将作为扩展点设置自定义参数使用。

常用配置:https://dubbo.apache.org/zh/docs/references/xml/dubbo-parameter/

 

posted @ 2022-03-20 22:52  残城碎梦  阅读(1492)  评论(0编辑  收藏  举报