Dubbo 2.7帮助手册

2 篇文章 0 订阅

Dubbo 2.7(http://dubbo.apache.org/zh/docs/v2.7/)

内置配置类

配置类标签用途解释
ProtocolConfig协议配置用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受
ApplicationConfigdubbo:application应用配置用于配置当前应用信息,不管该应用是提供者还是消费者
ModuleConfig模块配置用于配置当前模块信息,可选
RegistryConfigdubbo:registry注册中心配置用于配置连接注册中心相关信息
MonitorConfigdubbo:monitor监控中心配置用于配置连接监控中心相关信息,可选
ProviderConfigdubbo:provider提供方配置当 ProtocolConfig 和 ServiceConfig 某属性没有配置时,采用此缺省值,可选
ConsumerConfigdubbo:consumer消费方配置当 ReferenceConfig 某属性没有配置时,采用此缺省值,可选
MethodConfigdubbo:method方法配置用于 ServiceConfig 和 ReferenceConfig 指定方法级的配置信息
ArgumentConfigdubbo:argument参数配置用于指定方法参数配置

通过申明对应的 Spring 扩展标签,在 Spring 应用上下文中将自动生成相应的配置 Bean。

dubbo.properties 配置属性能够映射到 ApplicationConfigProtocolConfig 以及 RegistryConfig 的字段。从某种意义上来说,dubbo.properties 也是 Dubbo 的外部化配置。

映射规则

将 XML 配置的标签名,加属性名,用点分隔,多个属性拆成多行

  • 比如:dubbo.application.name=foo等价于``
  • 比如:dubbo.registry.address=10.20.153.10:9090等价于``

如果 XML 有多行同名标签配置,可用 id 号区分,如果没有 id 号将对所有同名标签生效

  • 比如:dubbo.protocol.rmi.port=1234等价于``2
  • 比如:dubbo.registry.china.address=10.20.153.10:9090等价于``

下面是 dubbo.properties 的一个典型配置:

dubbo.application.name=foo
dubbo.application.owner=bar
dubbo.registry.address=10.20.153.10:9090
配置类外部化配置属性前缀用途
ProtocolConfigdubbo.protocol协议配置
ApplicationConfigdubbo.application应用配置
ModuleConfigdubbo.module模块配置
RegistryConfigdubbo.registry注册中心配置
MonitorConfigdubbo.monitor监控中心配置
ProviderConfigdubbo.provider提供方配置
ConsumerConfigdubbo.consumer消费方配置

属性配置

属性配置的方式来配置你的 Dubbo 应用 如果你的应用足够简单,例如,不需要多注册中心或多协议,并且需要在spring容器中共享配置,那么,我们可以直接使用 dubbo.properties 作为默认配置。Dubbo 可以自动加载 classpath 根目录下的 dubbo.properties

properties配置

dubbo扫描包路径

dubbo.scan.base-packages=com.alibaba.boot.dubbo.demo.provider.service

dubbo服务版本号,用于灰色发布相关控制

dubbo.application.version=1.0

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

dubbo.application.owner= 可选,应用负责人,用于服务治理,请填写负责人公司邮箱前缀

组织名(BU或部门)

dubbo.application.organization=xx

分层

dubbo.application.architecture=xxx

环境 如:dev/test/run

dubbo.application.environment=xxx

Java代码编译器

dubbo.application.compiler=xxx

日志输出方式

dubbo.application.logger=xxx

注册中心 0

dubbo.application.registries[0].address=zookeeper:#127.0.0.1:2181=xxx

注册中心 1

dubbo.application.registries[1].address=zookeeper:#127.0.0.1:2181=xxx

服务监控

dubbo.application.monitor.address=xxx

这里注意多个注册中心的配置方式。下面介绍单个注册中心的配置方式。 注册中心配置类:常用 ZooKeeper 作为注册中心进行服务注册。
Dubbo 注册中心配置

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

dubbo.application.registries[1].id=xxx

注册中心地址

dubbo.application.registries[1].address=xxx

注册中心登录用户名

dubbo.application.registries[1].username=xxx

注册中心登录密码

dubbo.application.registries[1].password=xxx

注册中心缺省端口

dubbo.application.registries[1].port=xxx

注册中心协议

dubbo.application.registries[1].protocol=xxx

网络传输方式,可选mina,netty

dubbo.application.registries[1].transport =xxx

使用文件缓存注册中心地址列表及服务提供者列表,应用重启时将基于此文件恢复,注意:两个注册中心不能使用同一文件存储

dubbo.application.registries[1].file=xxx
## registries 集合    registry 对象
dubbo.application.registries[0].transporter=xxx

dubbo.application.registries[0].server=xxx

dubbo.application.registries[0].client=xxx

dubbo.application.registries[0].cluster=xxx

dubbo.application.registries[0].group=xxx

dubbo.application.registries[0].version=xxx

注册中心请求超时时间(毫秒)

dubbo.application.registries[0].timeout=xxx

注册中心会话超时时间(毫秒)

dubbo.application.registries[0].session=xxx

动态注册中心列表存储文件

dubbo.application.registries[0].file=xxx

停止时等候完成通知时间

dubbo.application.registries[0].wait=xxx

启动时检查注册中心是否存在

dubbo.application.registries[0].check=xxx

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

dubbo.application.registries[0].dynamic=xxx

在该注册中心上服务是否暴露

dubbo.application.registries[0].register=xxx

在该注册中心上服务是否引用【 是否向此注册中心订阅服务,如果设为false,将只注册,不订阅 】

dubbo.application.registries[0].subscribe=xxx

停止时等待通知完成时间(毫秒)

dubbo.application.registries[0]. wait =xxx
Dubbo 服务协议配置

Dubbo协议的,默认也是用的dubbo协议

#Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协议,但是Dubbo官网是推荐我们
#使用Dubbo协议的,默认也是用的dubbo协议。
dubbo.protocol.name=dubbo

协议端口号

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

服务IP地址(多网卡时使用) , 自动查找本机IP

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

性能调优 , 请求过大的问题

dubbo.protocol.payload =xxx
可选,88388608 = 8M 请求及响应数据包大小限制,单位:字节

上下文路径

dubbo.application.protocol.contextpath=xxx

线程池类型 【 线程池类型,可选:fixed/cached 】

dubbo.application.protocol.threadpool=xxx

线程池大小(固定大小)

dubbo.application.protocol.threads=xxx

IO线程池大小(固定大小)

dubbo.application.protocol.iothreads=xxx

线程池队列大小

dubbo.application.protocol.queues=xxx

最大接收连接数

dubbo.application.protocol.accepts=xxx

协议编码

dubbo.application.protocol.codec=xxx

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

dubbo.application.protocol.serialization=xxx

字符集

dubbo.application.protocol.charset=xxx

最大请求数据长度

dubbo.application.protocol.payload=xxx

缓存区大小

dubbo.application.protocol.buffer=xxx

心跳间隔

dubbo.application.protocol.heartbeat=xxx

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

dubbo.application.protocol.accesslog=xxx

网络传输方式

dubbo.application.protocol.transporter=xxx

信息交换方式

dubbo.application.protocol.exchanger=xxx

信息线程模型派发方式

dubbo.application.protocol.dispatcher=xxx

对称网络组网方式

dubbo.application.protocol.networker=xxx

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

dubbo.application.protocol.server=xxx

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

dubbo.application.protocol.client=xxx 

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

dubbo.application.protocol.telnet=xxx

命令行提示符

dubbo.application.protocol.prompt=xxx

status检查

dubbo.application.protocol.status=xxx

是否注册 【 该协议的服务是否注册到注册中心 】

dubbo.application.protocol.register=xxx

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

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

当application同时具备provider和consumer身份时,可能会出现启动循环依赖问题,可以在dubbo.consumer.check = false 设置启动不检查依赖

监控中心配置可选 添加monitor监控

dubbo.monitor.protocol=N/A 

重写与优先级

优先级从高到低:

  • JVM -D 参数:当你部署或者启动应用时,它可以轻易地重写配置,比如,改变 dubbo 协议端口;
  • XML:XML 中的当前配置会重写 dubbo.properties 中的;
  • Properties:默认配置,仅仅作用于以上两者没有配置时。
  1. 如果在 classpath 下有超过一个 dubbo.properties 文件,比如,两个 jar 包都各自包含了 dubbo.properties,dubbo 将随机选择一个加载,并且打印错误日志。
  2. 如果 id 没有在 protocol 中配置,将使用 name 作为默认属性。

注解配置

以注解配置的方式来配置你的 Dubbo 应用

@EnableDubbo 一般写在启动类上和Spring相关项目整合使用

@EnableDubbo整合了三个注解@EnableDubboConfig、@DubboComponentScan、@EnableDubboLifecycle。@EnableDubbo的功能都是由这三个注解完成的。

@EnableDubboConfig引入类DubboConfigConfigurationRegistrar,将于解析配置相关的类注册到spring容器;
@DubboComponentScan引入类DubboComponentScanRegistrar,用于指定@Service扫描路径;
@EnableDubboLifecycle引入类DubboLifecycleComponentRegistrar,注册了两个监听器到spring容器。

1.指定Spring扫描路径

@Configuration
@EnableDubbo(scanBasePackages = "org.apache.dubbo.samples.simple.annotation.impl")
@PropertySource("classpath:/spring/dubbo-provider.properties")
static public class ProviderConfiguration {
       
}
@DubboService 服务提供方 注解暴露服务
名称类型是否必填缺省值作用描述
versionstring可选0.0.0服务发现服务版本,建议使用两位数字版本,如:1.0,通常在接口不兼容时版本号才需要升级
groupstring可选服务发现服务分组,当一个接口有多个实现,可以用分组区分
delayint可选0性能调优延迟注册服务时间(毫秒) ,设为-1时,表示延迟到Spring容器初始化完成时暴露服务
timeoutint可选5000性能调优远程服务调用超时时间(毫秒)
retriesint可选2性能调优远程服务调用重试次数,不包括第一次调用,不需要重试请设为0
connectionsboolean可选100性能调优对每个提供者的最大连接数,rmi、http、hessian等短连接协议支持此配置,dubbo协议长连接不支持此配置
loadbalancestring可选random性能调优负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用
asyncboolean可选false性能调优是否缺省异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程
localclass/boolean可选false服务治理设为true,表示使用缺省代理类名,即:接口名 + Local后缀,服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)
mockclass/boolean可选false服务治理设为true,表示使用缺省Mock类名,即:接口名 + Mock后缀,服务接口调用失败Mock实现类,该Mock类必须有一个无参构造函数,与Local的区别在于,Local总是被执行,而Mock只在出现非业务异常(比如超时,网络异常等)时执行,Local在远程调用之前执行,Mock在远程调用后执行。
tokenstring/boolean可选false服务治理令牌验证,为空表示不开启,如果为true,表示随机生成动态令牌,否则使用静态令牌,令牌的作用是防止消费者绕过注册中心直接访问,保证注册中心的授权功能有效,如果使用点对点调用,需关闭令牌功能
registerboolean可选true服务治理该协议的服务是否注册到注册中心
providerstring可选缺使用第一个provider配置配置关联指定provider,值为<dubbo:provider>的id属性
eprecatedboolean可选false服务治理服务是否过时,如果设为true,消费方引用时将打印服务过时警告error日志
dynamicboolean可选true服务治理服务是否动态注册,如果设为false,注册后将显示后disable状态,需人工启用,并且服务提供者停止时,也不会自动取消册,需人工禁用。
accesslogstring/boolean可选false服务治理设为true,将向logger中输出访问日志,也可填写访问日志文件路径,直接把访问日志输出到指定文件
ownerstring可选服务治理服务负责人,用于服务治理,请填写负责人公司邮箱前缀
documentstring可选服务治理服务文档URL
weightint可选性能调优服务权重
executesint可选0性能调优服务提供者每服务每方法最大可并行执行请求数
activesint可选0性能调优每服务消费者每服务每方法最大并发调用数
proxystring可选javassist性能调优生成动态代理方式,可选:jdk/javassist
clusterstring可选failover性能调优集群方式,可选:failover/failfast/failsafe/failback/forking
filterstring可选default性能调优服务提供方远程调用过程拦截器名称,多个名称用逗号分隔
listenerstring可选default性能调优服务提供方导出服务监听器名称,多个名称用逗号分隔
protocolstring可选配置关联使用指定的协议暴露服务,在多协议时使用,值为<dubbo:protocol>的id属性,多个协议ID用逗号分隔
layerstring可选服务治理服务提供者所在的分层。如:biz、dao、intl:web、china:acton。
@DubboService
public class DubboxMemberService implements DubboTestService{

    @Autowired
    private MemberService memberService;


    @Override
    @Transactional(rollbackFor = Exception.class)
    public Member addMember(Member member) {
        member.setMobile("13888888889");
        memberService.save(member);
        return member;
    }
}
@DubboReference 服务消费方 注解引用服务

常用相关属性配置

名称类型是否必填缺省值作用描述
versionstring可选服务发现服务版本,与服务提供者的版本一致
groupstring可选服务发现服务分组,当一个接口有多个实现,可以用分组区分,必需和服务提供方一致
timeoutlong可选缺省使用<dubbo:consumer>的timeout性能调优服务方法调用超时时间(毫秒)
retriesint可选缺省使用<dubbo:consumer>的retries性能调优远程服务调用重试次数,不包括第一次调用,不需要重试请设为0
connectionsint可选缺省使用<dubbo:consumer>的connections性能调优对每个提供者的最大连接数,rmi、http、hessian等短连接协议支持此配置,dubbo协议长连接不支持此配置
loadbalancestring可选缺省使用<dubbo:consumer>的loadbalance性能调优负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用
asyncboolean可选缺省使用<dubbo:consumer>的async性能调优是否异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程
genericboolean可选缺省使用<dubbo:consumer>的generic服务治理是否缺省泛化接口,如果为泛化接口,将返回GenericService
checkboolean可选缺省使用<dubbo:consumer>的check服务治理启动时检查提供者是否存在,true报错,false忽略
urlstring可选服务治理点对点直连服务提供者地址,将绕过注册中心
localclass可选服务治理服务接口客户端本地代理类名,用于在客户端执行本地逻辑,如本地缓存等,该本地代理类的构造函数必须允许传入远程代理对象,构造函数如:public XxxServiceLocal(XxxService xxxService)
mockclass可选服务治理服务接口调用失败Mock实现类名,该Mock类必须有一个无参构造函数,与Local的区别在于,Local总是被执行,而Mock只在出现非业务异常(比如超时,网络异常等)时执行,Local在远程调用之前执行,Mock在远程调用后执行。
proxyboolean可选javassist性能调优选择动态代理实现策略,可选:javassist, jdk
clientstring可选性能调优客户端传输类型设置,如Dubbo协议的netty或mina。
ownerstring可选服务治理调用服务负责人,用于服务治理,请填写负责人公司邮箱前缀
activesint可选0性能调优每服务消费者每服务每方法最大并发调用数
proxystring可选javassist性能调优生成动态代理方式,可选:jdk/javassist
clusterstring可选failover性能调优集群方式,可选:failover/failfast/failsafe/failback/forking
filterstring可选default性能调优服务消费方远程调用过程拦截器名称,多个名称用逗号分隔
listenerstring可选default性能调优服务消费方引用服务监听器名称,多个名称用逗号分隔
layerstring可选服务治理服务调用者所在的分层。如:biz、dao、intl:web、china:acton。
@RequestMapping("/annotationAction")
public class Controller {

    @Reference
    private DubboTestService dubboTestService;
    
    public String doSayHello(Member member) {
        return dubboTestService.addMember(member);
    }
}

1.启动检查

默认情况下dubbo是开启自动检查的,即当项目启动时会自动检查其依赖的服务是否开启,如果没开是会阻止spring的初始化的,即check=true;我们可以将check置为false来关闭启动时检查,如我们在测试或者对其他服务没有依赖的时候可以关闭检查;在springboot中我们可以进行如下配置来关闭启动时检查:

1、关闭某个服务的启动检查

在引用该服务的@DubboReference  注解上添加check=false,@DubboReference (check = false)

2、关闭所有服务的启动时检查

在application.properties中添加dubbo.consumer.check=false

2.超时配置 (timeout,默认为1000),重试次数(retries) :生产环境上建议:不支持重试,重试次数为0,由业务发起端控制逻辑实现

当消费者调用提供者时由于网络等原因有可能会造成长时间拿不到响应,而请求还在不断的发过来这就有可能造成线程阻塞,使用timeout设置超时时间当超过该时间就会抛出异常;

当只针对某个服务时:@DubboReference(timeout=XXX)  

当针对所有服务时:dubbo.consumer.timeout=XXX   

重试次数:当调用失败或超时后重新尝试调用的次数,其值不包含第一次

当只针对某个服务时:@DubboReference(retries=XXX)

当针对所有服务时:dubbo.consumer.retries=XXX
@Method
名称*类型是否必填缺省值作用描述
banestring必填标识方法
timeoutint可选缺省为的timeout性能调优方法调用超时时间(毫秒)
retriesint可选缺省为<dubbo:reference>的retries性能调优远程服务调用重试次数,不包括第一次调用,不需要重试请设为0
loadbalancestring可选缺省为的loadbalance性能调优负载均衡策略,可选值:random,roundrobin,leastactive,分别表示:随机,轮循,最少活跃调用
asyncboolean可选缺省为<dubbo:reference>的async性能调优是否异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程
sentboolean可选true性能调优异步调用时,标记sent=true时,表示网络已发出数据
activesint可选0性能调优每服务消费者最大并发调用限制
executesint可选0性能调优每服务每方法最大使用线程数限制- -,此属性只在<dubbo:method>作为<dubbo:service>子标签时有效
deprecatedboolean可选false服务治理服务方法是否过时,此属性只在<dubbo:method>作为<dubbo:service>子标签时有效
stickyboolean可选false服务治理设置true 该接口上的所有方法使用同一个provider.如果需要更复杂的规则,请使用用路由
returnboolean可选true性能调优方法调用是否需要返回值,async设置为true时才生效,如果设置为true,则返回future,或回调onreturn等方法,如果设置为false,则请求发送成功后直接返回Null
oninvokeString可选性能调优方法执行前拦截
onreturnString可选性能调优方法执行返回后拦截
onthrowString可选性能调优方法执行有异常拦截

[^https://blog.csdn.net/zcw4237256/article/details/78369213 如有未找到,从此链接查询]:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值