从理论到实践,必须了解的部分Dubbo配置

5 篇文章 0 订阅

系列文章目录

【收藏向】从用法到源码,一篇文章让你精通Dubbo的SPI机制
面试Dubbo ,却问我和Springcloud有什么区别?
超简单,手把手教你搭建Dubbo工程(内附源码)
Dubbo最核心功能——服务暴露的配置、使用及原理
并不简单的代理,Dubbo是如何做服务引用的
不满足于RPC,详解Dubbo的服务调用链路



在这里插入图片描述

前面我们学习了很多理论知识,但一切理论都是为了实践。Dubbo作为一个框架当然有很多配置点,其中有些配置不起眼,但却很重要。笔者曾经分享过一起内存溢出的问题,其中就有接口超时时间配置得太长的原因,因为数据量比较大,三方接口迟迟无法返回结果。而超时时间又很长,最终大量线程阻塞在调用上,资源无法释放,造成内存溢出。由此可见,合理的参数配置是多么的重要

📕作者简介:战斧,多年开发及管理经验,爱好广泛,致力于创作更多高质量内容
📗本文收录于 Dubbo专栏,有需要者,可直接订阅专栏实时获取更新
📘高质量专栏 RabbitMQSpring全家桶 等仍在更新,欢迎指导
📙Zookeeper Redis kafka docker netty等诸多框架,以及架构与分布式专题即将上线,敬请期待


一、配置的实现方式

Dubbo 本身提供了多种配置方式,如API配置、配置文件、注解配置。大部分都具有同样的作用,使用哪种取决于你的喜好与场景,我们做一些示例:

  1. API配置
// 配置中心
ConfigCenterConfig configCenter = new ConfigCenterConfig();
configCenter.setAddress("zookeeper://192.168.10.2:2181");
  1. XML配置
<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" xmlns:context="http://www.springframework.org/schema/context"
       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 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    <context:property-placeholder/>
    <dubbo:application name="demo-consumer"/>
    <dubbo:registry address="zookeeper://${zookeeper.address:127.0.0.1}:2181"/>
    <dubbo:reference id="demoService" check="true" interface="org.apache.dubbo.samples.basic.api.DemoService"/>
</beans>
  1. YML配置
dubbo:
  registry:
    id: zk-registry
    address: zookeeper://127.0.0.1:2181
  1. properties配置
dubbo.registry.address=zookeeper://127.0.0.1:2181
  1. 注解配置
@DubboReference(retries = 5)

一般来说,耦合在代码里的配置都是固定的,而一些全局的或可变的建议都以配置文件的形式存储,方便配置中心管理

二、工程配置

1. 基础设置application

Dubbo中存在一些应用基础配置,如应用名什么的,组织结构之类的,相对重要的有以下几种

属性对应URL参数类型缺省值作用描述
versionapplication.versionstring服务治理当前应用的版本
environmentenvironmentstring服务治理应用环境,如:develop/test/product,不同环境使用不同的缺省值,以及作为只用于开发测试功能的限制条件
protocolstringdubbo服务治理首选协议,适用于无法确定首选协议的时候
loggerloggerstringslf4j性能优化日志输出方式,可选:slf4j,jcl,log4j,log4j2,jdk

2. 注册中心设置registry

下面列举一些相对重要的关于注册中心的配置

属性对应URL参数类型缺省值作用描述
idstring配置关联注册中心引用BeanId,可以在<dubbo:service registry="">或<dubbo:reference registry="">中引用此ID
addresshost:portstring服务发现注册中心服务器地址,如果地址没有端口缺省为9090,同一集群内的多个地址用逗号分隔,如:ip:port,ip:port,不同集群的注册中心,请配置多个< dubbo:registry>标签
portint9090服务发现注册中心缺省端口,当address没有带端口时使用此端口做为缺省值
fileregistry.filestring服务治理使用文件缓存注册中心地址列表及服务提供者列表,应用重启时将基于此文件恢复,注意:两个注册中心不能使用同一文件存储
checkcheckboolean服务治理注册中心不存在时,是否报错
groupgroupstringdubbo服务治理服务注册分组,跨组的服务不会相互影响,也无法相互调用,适用于环境隔离。
preferredpreferredboolean服务治理是否作为首选注册中心。当订阅多注册中心时,如果设为true,该注册中心作为首选

3. 配置中心设置config-center

属性对应URL参数类型缺省值描述
protocolprotocolstringzookeeper使用哪个配置中心:apollo、zookeeper、nacos等。以zookeeper为例:1. 指定protocol,则address可以简化为127.0.0.1:2181;2. 不指定protocol,则address取值为zookeeper://127.0.0.1:2181
highestPriorityhighest-prioritytrue来自配置中心的配置项具有最高优先级,即会覆盖本地配置项。
checkcheckbooleantrue当配置中心连接失败时,是否终止应用启动。
namespacenamespacestringdubbo通常用于多租户隔离,实际含义视具体配置中心而不同。如zookeeper - 环境隔离,默认值dubbo;apollo - 区分不同领域的配置集合,默认使用dubbo和application

4. 监控中心配置monitor

属性对应URL参数类型缺省值作用描述
address< url>string服务治理直连监控中心服务器地址,address=“10.20.130.230:12080”
usernameusernamestring服务治理监控中心用户名
passwordpasswordstring服务治理监控中心密码
groupgroupstring服务治理分组

三、服务设置

1. 服务提供者provider

可以使用xml进行配置,如<dubbo:service>,亦可以使用注解,进行配置@DubboService,对应配置类为
org.apache.dubbo.config.ProviderConfig

属性对应URL参数类型缺省值作用描述
idstringdubbo配置关联协议BeanId,可以在<dubbo:service proivder="">中引用此ID
protocol< protocol >stringdubbo性能调优协议名称
threadsthreadsint200性能调优服务线程池大小(固定大小)
filterservice.filterstring性能调优服务提供方远程调用过程拦截器名称,多个名称用逗号分隔
listenerexporter.listenerstring性能调优服务提供方导出服务监听器名称,多个名称用逗号分隔
groupgroupstring服务发现服务分组,当一个接口有多个实现,可以用分组区分
timeoutdefault.timeoutint1000性能调优远程服务调用超时时间(毫秒)
retriesdefault.retriesint2性能调优远程服务调用重试次数,不包括第一次调用,不需要重试请设为0
loadbalancedefault.loadbalancestringrandom性能调优负载均衡策略,可选值:random - 随机; roundrobin - 轮询; leastactive - 最少活跃调用; consistenthash - 哈希一致 (2.1.0以上版本); shortestresponse - 最短响应 (2.7.7以上版本);
clusterdefault.clusterstringfailover性能调优集群方式,可选:failover/failfast/failsafe/failback/forking/available/mergeable(2.1.0以上版本)/broadcast(2.1.0以上版本)/zone-aware(2.7.5以上版本)

2. 服务消费者consumer

可以使用xml进行配置,如<dubbo:reference>,亦可以使用注解,进行配置@DubboReference,对应配置类为
org.apache.dubbo.config.ConsumerConfig

属性对应URL参数类型缺省值作用描述
timeoutdefault.timeoutint1000性能调优远程服务调用超时时间(毫秒)
retriesdefault.retriesint2性能调优远程服务调用重试次数,不包括第一次调用,不需要重试请设为0,仅在cluster为failback/failover时有效
loadbalancedefault.loadbalancestringrandom性能调优负载均衡策略,可选值:random - 随机; roundrobin - 轮询; leastactive - 最少活跃调用; consistenthash - 哈希一致 (2.1.0以上版本); shortestresponse - 最短响应 (2.7.7以上版本);
asyncdefault.asyncbooleanfalse性能调优是否缺省异步执行,不可靠异步,只是忽略返回值,不阻塞执行线程
checkcheckbooleantrue服务治理启动时检查提供者是否存在,true报错,false忽略
listenerinvoker.listenerstring性能调优服务消费方引用服务监听器名称,多个名称用逗号分隔
filterreference.filterstring性能调优服务消费方远程调用过程拦截器名称,多个名称用逗号分隔
clusterdefault.clusterstringfailover性能调优集群方式,可选:failover/failfast/failsafe/failback/forking/available/mergeable(2.1.0以上版本)/broadcast(2.1.0以上版本)/zone-aware(2.7.5以上版本)

不难发现,有一些配置如超时时间、重试次数、集群、负载均衡在服务消费者和提供者两边都能配置。比如两边都配置了负载均衡策略时,发生了冲突以谁的为准呢,这里实际是以服务消费方的为准因此,我们建议关于消费调用的内容应该由服务调用方自己来进行配置。

四、总结

上述我们分类对Dubbo一些常见的配置进行了展示,要熟练使用Dubbo,了解这些配置是必需的,但上述并不是全部,如果想了解更多的功能,可以访问官方的配置文档查询配置及API的使用

  • 106
    点赞
  • 108
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 124
    评论
评论 124
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战斧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值