配置项参考手册
配置详情
application
每个应用必须且仅有一个 application 配置,对应配置类:org.apache.dubbo.config.ApplicationConfig
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
name | application | string | 必填 | 服务治理 | 当前应用的名称,用于注册中心计算应用之间的依赖关系。注意:消费者和提供者应用名称不能相同,此参数不是匹配条件,可以填写您当前项目的名称,与提供者和消费者的角色无关。例如,如果 kylin 应用调用 morgan 应用的服务,kylin 项目将是 kylin,morgan 项目将是 morgan。也许 kylin 也提供其他服务被其他人使用,但 kylin 项目始终被称为 kylin,所以注册中心会显示 kylin 依赖于 morgan | 版本 2.7 .0 或更高 | |
compiler | compiler | string | 可选 | javassist | 性能优化 | Java 字节码编译器,用于生成动态类,可选:jdk 或 javassist | 版本 2.7.0 或更高 |
logger | logger | string | 可选 | slf4j | 性能优化 | 日志输出方式,可选:slf4j、jcl、log4j、log4j2、jdk | 版本 2.7.0 或更高 |
owner | owner | string | 可选 | 服务治理 | 应用负责人,用于服务治理,请填写负责人邮箱前缀 | 版本 2.0.5 及以上 | |
organization | organization | string | 可选 | 服务治理 | 组织名称(BU 或部门),用于注册中心区分服务来源。建议此配置项不要使用 autoconfig,直接在配置中写死,比如 china、intl、itu、crm、asc、dw、aliexpress 等 | 版本 2.0.0 及以上 | |
architecture | architecture | string | 可选 | 服务治理 | . 不同的架构使用不同的层级。 | 版本 2.0. 7 及以上 | |
environment | environment | string | 可选 | 服务治理 | 应用环境,比如:develop/test/product,不同的环境使用不同的默认值,仅作为开发和测试功能的限制使用 | 2.0.0 及以上版本 | |
version | application.version | string | 可选 | 服务治理 | 当前应用版本 | 版本 2.7.0 或更高 | |
dumpDirectory | dump.directory | string | 可选 | 服务治理 | 当进程出现问题,比如线程池满了,框架自动 dump 文件的存储路径 | 版本 2.7.0 或更高 | |
qosEnable | qos.enable | boolean | 可选 | 服务治理 | 是否启用 qos 运维端口 | 版本 2.7.0 或更高 | |
qosHost | qos.host | string | 可选 | 服务治理 | 监控的网络接口地址,默认 0.0.0.0 | 版本 2.7.3 或更高 | |
qosPort | qos.port | int | 可选 | 服务治理 | 监控的网络端口 | 版本 2.7.0 或更高 | |
qosAcceptForeignIp | qos.accept.foreign.ip | boolean | 可选 | 服务治理 | 安全配置,是否接受除了 localhost 本地访问以外的外部请求 | 版本 2.7.0 或更高 | |
shutwait | dubbo.service.shutdown.wait | string | 可选 | 服务治理 | 优雅关闭时关闭等待时间(ms) | 版本 2.7.0 或更高 | |
hostname | string | 可选 | 本地主机名 | 服务治理 | hostname | 版本 2.7.5 或更高 | |
registerConsumer | registerConsumer | boolean | 可选 | true | 服务治理 | 是否将实例注册到注册中心。仅当实例是纯消费者时设置为 false | 版本 2.7.5 及以上 |
repository | application.version | string | 可选 | 服务治理 | 当前应用版本 | 版本 2.7.6 或更高 | |
enableFileCache | file.cache | boolean | 可选 | true | 服务治理 | 是否启用本地缓存 | 版本 3.0.0 或更高 |
protocol | string | 可选 | dubbo | 服务治理 | 首选协议,适用于无法确定首选协议时 | 版本 3.0.0 或更高 | |
metadataType | metadata-type | String | 可选 | local | 服务治理 | 应用级服务发现 元数据传递方式是从 Provider 的角度,Consumer 端的配置无效。可选值有 * remote - Provider 将元数据放到远程注册中心,Consumer 从注册中心获取; * local - Provider 将元数据放到本地,Consumer 直接从 Provider 获取; | 版本 2.7.5 及以上 |
metadataServicePort | metadata-service-port | int | 可选 | 服务治理 | 如果 metadataType 配置为 local,此属性设置 MetadataService 服务使用的端口号 | 版本 2.7.9 或更高 | |
livenessProbe | liveness-probe | string | 可选 | 服务治理 | 与 k8s 系统存活探测相对应的概念和格式 | 版本 3.0.0 或更高 | |
就绪探测 | 就绪探测 | string | 可选 | 服务治理 | 与 k8s 系统就绪探测相对应的概念和格式 | 版本 3.0.0 或更高 | |
启动探测 | 启动探测 | string | 可选 | 服务治理 | 该概念和格式对应于 k8s 系统启动探测 | 3.0.0 或更高版本 | |
注册模式 | 注册模式 | string | 可选 | 全部 | 服务治理 | 控制地址注册行为,用于应用程序级服务发现和迁移。 * 实例仅注册应用程序级地址; * 接口仅注册接口级地址; * 全部(默认)注册应用程序级和接口级地址; | 3.0.0 及以上版本 |
启用空保护 | 启用空保护 | boolean | 可选 | true | 服务治理 | 是否全局启用消费者端空地址列表的保护。启用后,注册中心推送的空地址将被忽略。默认值为 true | 3.0.0 或更高版本 |
参数 | 无 | Map<string, string> | 可选 | 服务治理 | 为扩展保留,任何参数都可以扩展和定义,所有扩展参数将原样反映在 URL 配置中 | 2.7.0 及以上版本 |
服务
服务提供者公开服务配置。对应配置类:org.apache.dubbo.config.ServiceConfig
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
接口 | 类 | 必需 | 服务发现 | 服务接口名称 | 1.0.0 或更高版本 | ||
引用 | 对象 | 必需 | 服务发现 | 服务对象实现引用 | 1.0.0 或更高版本 | ||
version | version | string | 可选 | 0.0.0 | 服务发现 | 服务版本,建议使用两位数版本,例如:1.0,通常接口不兼容时需要升级版本号 | 1.0.0 或更高版本 |
分组 | 分组 | string | 可选 | 服务发现 | 服务分组,当一个接口有多个实现时,可以通过分组进行区分 | 1.0.7 或更高版本 | |
路径 | string | 可选 | 默认接口名称 | 服务发现 | 服务路径(注意:1.0 不支持自定义路径,始终使用接口名称,如果有 1.0 到 2.0,配置服务路径可能不兼容) | 1.0.12+ | |
延迟 | 延迟 | int | 可选 | 0 | 性能调优 | 延迟注册服务时间(毫秒),设置为 -1 表示服务延迟到 Spring 容器初始化完成之后才注册 | 1.0.14 及以上版本 |
超时 | 超时 | int | 可选 | 1000 | 性能调优 | 远程服务调用超时时间(毫秒) | 2.0.0 或更高版本 |
重试 | 重试 | int | 可选 | 2 | 性能调优 | 远程服务调用重试次数,不包括第一次调用,如果不需要重试,请设置为 0 | 2.0.0 或更高版本 |
连接 | 连接 | int | 可选 | 100 | 性能调优 | 每个提供者的最大连接数,rmi、http、hessian 等短连接协议表示连接数的限制,dubbo 等长连接协议表示建立的长连接数量 | 2.0.0 及以上版本 |
负载均衡 | 负载均衡 | string | 可选 | 随机 | 性能调优 | 负载均衡策略,可选值 * 随机 - 随机; * 轮询 - 轮询; * 最少活跃 - 最少活跃调用;br/>* 一致性哈希 - 一致性哈希 (2.1.0+); * 最短响应 - 最短响应 (2.7.7+); | 2.0.0+ |
异步 | 异步 | boolean | 可选 | false | 性能调优 | 是否默认异步执行,不可靠异步,只忽略返回值,不阻塞执行线程 | 2.0.0 以上版本 |
local | local | 类/布尔值 | 可选 | false | 服务治理 | 设置为 true,表示使用默认代理类名,即:接口名 + Local 后缀,已过时,请使用 stub | 2.0.0 或以上 |
存根 | 存根 | 类/布尔值 | 可选 | false | 服务治理 | 设置为 true,表示使用默认代理类名,即:接口名 + Stub 后缀,服务接口客户端的本地代理类名,用于客户端在客户端执行本地逻辑,例如本地缓存等。本地代理类的构造函数必须允许传入远程代理对象,例如:public XxxServiceStub(XxxService xxxService) | 2.0.0 或更高版本 |
模拟 | 模拟 | 类/布尔值 | 可选 | false | 服务治理 | 设置为 true,表示使用默认 Mock 类名,即:接口名 + Mock 后缀,如果服务接口调用失败,则调用 Mock 实现类,Mock 类必须有一个无参构造函数,与 Local 的区别在于 Local 始终执行,而 Mock 仅在发生非业务异常(如超时、网络异常等)时执行,Local 在远程调用之前执行,Mock 在远程调用之后执行。 | 版本 2.0.0 及以上 |
令牌 | 令牌 | 字符串/布尔值 | 可选 | 服务治理 | 消费者绕过注册中心直接访问,保证注册中心的授权功能有效。如果使用点对点调用,则必须关闭 token 功能 | 2.0.0 或更高版本 | |
注册中心 | string | 可选 | 默认注册到所有注册中心 | 配置关联 | 注册到指定的注册中心,用于多个注册中心,值为 dubbo:registry 的 id 属性,用于多个注册中心 ID 用逗号分隔,如果不想将服务注册到任何注册中心,可以将值设置为 N/A | 2.0.0 或更高版本 | |
提供者 | string | 可选 | 默认使用第一个提供者配置 | 配置关联 | 指定提供者,值为 dubbo:provider 的 id 属性 | 2.0.0 以上版本 | |
已弃用 | 已弃用 | boolean | 可选 | false | 服务治理 | 服务是否已弃用,如果设置为 true,消费者将打印服务已弃用警告错误日志 | 2.0.5 或更高版本 |
动态 | 动态 | boolean | 可选 | true | 服务治理 | 服务是否动态注册,如果设置为 false,注册后将显示禁用状态,需要手动启用,服务提供者停止时不会自动取消注册,需要手动禁用。 | 2.0.5 及以上版本 |
访问日志 | 访问日志 | 字符串/布尔值 | 可选 | false | 服务管理 | 设置为 true,访问日志将输出到日志记录器,也可以填写访问日志文件路径,将访问日志直接输出到指定文件 | 2.0.5 及以上版本 |
owner | owner | string | 可选 | 服务治理 | |||
文档 | 文档 | string | 可选 | 服务治理 | 服务文档 URL | 2.0.5 或更高版本 | |
权重 | 权重 | int | 可选 | 性能调优 | 服务权重 | 2.0.5 或更高版本 | |
执行 | 执行 | int | 可选 | 0 | 性能调优 | 服务提供者每个服务和方法的最大并行执行请求数 | 2.0.5 或更高版本 |
活跃 | 活跃 | int | 可选 | 0 | 性能调优 | 每个服务消费者每个服务每个方法的最大并发调用数 | 2.0.5 或更高版本 |
代理 | 代理 | string | 可选 | javassist | 性能调优 | 生成动态代理,可选:jdk/javassist | 2.0.5 或更高版本 |
集群 | 集群 | string | 可选 | 故障转移 | 性能调优 | 集群模式,可选:故障转移/故障快速失败/故障安全/故障回退/分叉/可用/可合并 (2.1. )/区域感知 (2.7.5 或更高版本) | 2.0 .5 或更高版本 |
过滤器 | service.filter | string | 可选 | 默认 | 性能调优 | 服务提供者远程调用过程拦截器名称,多个名称用逗号分隔 | 2.0.5 或更高版本 |
监听器 | exporter.listener | string | 可选 | 默认 | 性能调优 | 服务提供者导出服务监听器名称,多个名称用逗号分隔 | |
protocol | string | 可选 | 配置关联 | 使用指定的协议公开服务,用于多协议,值为 dubbo:protocol 的 id 属性,多个协议 ID 用逗号分隔 | 2.0 .5 或更高版本 | ||
层 | 层 | string | 可选 | 服务治理 | 服务提供者所在的层级。例如:biz、dao、intl:web、china:acton。 | 2.0.7 及以上版本 | |
注册 | 注册 | boolean | 可选 | true | 服务治理 | 该协议的服务是否注册到注册中心 | 2.0.8 或更高版本 |
验证 | 验证 | string | 可选 | 服务治理 | 是否启用 JSR303 标准注解验证,如果启用,将验证方法参数上的注解 | 版本 2.7.0 或更高 | |
参数 | 无 | Map<string, string> | 可选 | 服务治理 | 为扩展保留,任何参数都可以扩展和定义,所有扩展参数将原样反映在 URL 配置中 | 版本 2.0.0 及以上 |
引用
服务消费者引用服务配置。对应配置类:org.apache.dubbo.config.ReferenceConfig
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
id | string | 必需 | 配置关联 | 服务引用 BeanId | 1.0.0 或更高版本 | ||
接口 | 类 | 必需 | 服务发现 | 服务接口名称 | 1.0.0 或更高版本 | ||
version | version | string | 可选 | 服务发现 | 服务版本,与服务提供者的版本一致 | 1.0.0 以上版本 | |
分组 | 分组 | string | 可选 | 服务发现 | 服务分组,当一个接口有多个实现时,可以通过分组进行区分,必须与服务提供者一致 | 1.0.7 或更高版本 | |
超时 | 超时 | 长 | 可选 | 默认使用 dubbo:consumer 的超时时间 | 性能调优 | 服务方法调用超时时间(毫秒) | 1.0.5 或更高版本 |
重试 | 重试 | int | 可选 | 默认使用 dubbo:consumer 的重试次数 | 性能调优 | 远程服务调用重试次数,不包括第一次调用,请设置为 0 | 2.0. 版本 0 及以上 |
连接 | 连接 | int | 可选 | 默认使用 dubbo:consumer 的连接数 | 性能调优 | 每个提供者的最大连接数,rmi、http、hessian 等短连接协议表示连接数的限制,dubbo 等等长连接协议表示建立的长连接数量 | 2.0.0 或更高版本 |
负载均衡 | 负载均衡 | string | 可选 | 默认使用 dubbo:consumer 的负载均衡 | 性能调优 | 负载均衡策略,可选值 * 随机 - 随机; * 轮询 - 轮询 * 最少活跃 - 最少活跃调用; * 一致性哈希 - 一致性哈希 (2.1.0 及以上版本); * 最短响应 - 最短响应 (2.7.7 及以上版本); | 2.0 .0+ 版本 |
异步 | 异步 | boolean | 可选 | 默认使用 dubbo:consumer 的异步 | 性能调优 | 是否异步执行,不可靠异步,只忽略返回值,不阻塞执行线程 | 2.0.0 或更高版本 |
泛型 | 泛型 | boolean | 可选 | 默认使用 dubbo:consumer 的泛型 | 服务治理 | 是否默认泛型接口,如果是泛型接口,将返回 GenericService | 2.0.0 或更高版本 |
检查 | 检查 | boolean | 可选 | 默认使用 dubbo:consumer 的检查 | 服务治理 | 启动时检查提供者是否存在,true 将报错,false 将忽略 | 2.0.0 或更高版本 |
URL | URL | string | 可选 | 服务治理 | 点对点直接连接服务提供者地址,将绕过注册中心 | 1.0.6 或更高版本 | |
存根 | 存根 | 类/布尔值 | 可选 | 服务治理 | 服务接口客户端本地代理类名称,用于在客户端执行本地逻辑,例如本地缓存等。本地代理类的构造函数必须允许输入远程代理对象,构造函数例如:public XxxServiceLocal(XxxService xxxService) | 2.0.0 或更高版本 | |
模拟 | 模拟 | 类/布尔值 | 可选 | 服务治理 | 服务接口调用失败的 Mock 实现类名称,Mock 类必须有一个无参构造函数,与 Local 的区别在于 Local 始终执行,而 Mock 仅在发生非业务异常(如超时、网络异常等)时执行,Local 在远程调用之前执行,Mock 在远程调用之后执行。 | Dubbo1.0.13 及以上版本支持 | |
缓存 | 缓存 | 字符串/布尔值 | 可选 | 服务治理 | 调用参数用作键来缓存返回的结果,可选:lru、threadlocal、jcache 等。 | Dubbo2.1.0 及以上版本支持 | |
验证 | 验证 | boolean | 可选 | 服务治理 | 是否启用 JSR303 标准注解验证,如果启用,将验证方法参数上的注解 | Dubbo2.1.0 及以上版本支持 | |
代理 | 代理 | boolean | 可选 | javassist | 性能调优 | 选择动态代理实现策略,可选:javassist、jdk | 2.0.2 以上版本 |
客户端 | 客户端 | string | 可选 | 性能调优 | 客户端传输类型设置,例如 Dubbo 协议的 netty 或 mina。 | Dubbo2.0.0 及以上版本支持 | |
注册中心 | string | 可选 | 默认情况下,服务列表将从所有注册中心获取,并将结果合并 | 配置关联 | 注册以从指定注册中心获取服务列表,在存在多个注册中心时使用,值为 dubbo:registry 的 id 属性,多个注册中心 ID 用逗号分隔 | 2.0.0 或更高版本 | |
owner | owner | string | 可选 | 服务治理 | 要调用服务负责人的服务治理,请填写负责人的邮件前缀 | 版本 2.0.5 及以上 | |
活跃 | 活跃 | int | 可选 | 0 | 性能调优 | 每个服务消费者每个服务每个方法的最大并发调用数 | 2.0.5 或更高版本 |
集群 | 集群 | string | 可选 | 故障转移 | 性能调优 | 集群模式,可选:故障转移/故障快速失败/故障安全/故障回退/分叉/可用/可合并 (2.1. )/区域感知 (2.7.5 或更高版本) | 2.0 .5 或更高版本 |
连接 | 连接 | int | 可选 | 100 | 性能调优 | 每个提供者的最大连接数,rmi、http、hessian 等短连接协议表示连接数的限制,dubbo 等长连接协议表示建立的长连接数量 | 2.0.0 及以上版本 |
过滤器 | reference.filter | string | 可选 | 默认 | 性能调优 | 服务消费者远程调用过程拦截器名称,多个名称用逗号分隔 | 2.0.5 或更高版本 |
监听器 | invoker.listener | string | 可选 | 默认 | 性能调优 | 服务消费者引用服务监听器名称,多个名称用逗号分隔 | 2.0.5 版本或更高版本 |
层 | 层 | string | 可选 | 服务治理 | 服务调用者所在的层级。例如:biz、dao、intl:web、china:acton。 | 2.0.7 及以上版本 | |
init | init | boolean | 可选 | false | 性能调优 | 是否在 afterPropertiesSet() 后立即初始化引用,否则等到有人注入或引用实例后再初始化。 | 2.0.10 版本及以上 |
protocol | protocol | string | 可选 | 服务治理 | 仅调用指定协议的服务提供者,忽略其他协议。 | 2.7.0 及以上版本 | |
客户端 | 客户端 | string | 可选 | dubbo 协议默认使用 netty | 服务发现 | 协议客户端实现类型,例如:dubbo 协议 mina、netty 等。 | 版本 2.7.0 或更高 |
providerPort | provider-port | int | 可选 | 服务网格 | 当 dubbo.consumer.meshEnable=true 时,Dubbo 默认会将请求转换为 K8S 标准格式,并结合 VirtualService 和 DestinationRule 进行流量管理。此时,消费者可以感知到提供者。如果您不想使用 VirtualService 和 DestinationRule,请设置 providerPort 使消费者感知到提供者暴露的服务端口 | 3.1.0 版本及以上 | |
unloadClusterRelated | unloadClusterRelated | boolean | 可选 | false | 服务网格 | 当 dubbo.consumer.meshEnable=true 时,在 Service Mesh 模式下,设置为 true 以卸载当前调用中与 Cluster 相关的 Directory、Router 和 Load Balance,将重试、负载均衡、超时等流量管理功能委托给 Sidecar,使用 VirtualService 和 DestinationRule 进行流量管理 | 3.1.0 版本及以上 |
参数 | 无 | Map<string, string> | 可选 | 服务治理 | 为扩展保留,任何参数都可以扩展和定义,所有扩展参数将原样反映在 URL 配置中 | 版本 2.0.0 及以上 | |
providedBy | provided-by | string | 可选 | 服务网格 | 当 dubbo.consumer.meshEnable=true 时,Dubbo 默认会将请求转换为 K8S 标准格式,并结合 VirtualService 和 DestinationRule 进行流量管理。此时,消费者可以感知到提供者。该值应与声明的 k8s service 保持一致 | 3.1.0 版本或更高版本 | |
providerNamespace | provider-namespace | string | 可选 | 服务网格 | 当 dubbo.consumer.meshEnable=true 时,Dubbo 默认会将请求转换为 K8S 标准格式,并结合 VirtualService 和 DestinationRule 进行流量管理。此时,消费者可以感知到提供者。请设置 providerNamespace 使消费者能够根据此配置寻址提供者 dns,默认值为 default | 3.1.2 版本或更高版本 |
注册中心
注册中心配置。对应配置类:org.apache.dubbo.config.RegistryConfig
。同时,如果存在多个不同的注册中心,可以声明多个 <dubbo:registry>
标签,并在 <dubbo:service>
或 <dubbo:reference>
的 registry
属性中指定要使用的注册中心。
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
id | string | 可选 | 配置关联 | 注册中心引用 BeanId,可以在 <dubbo:service registry=""> 或 <dubbo:reference registry=""> 中引用 | 1.0.16 版本或更高版本 | ||
address | host:port | string | 必填 | 服务发现 | 注册中心服务器地址。如果地址没有端口,默认端口为 9090。同一个集群中的多个地址用逗号分隔。例如:ip:port, ip:port,不同集群的注册中心,请配置多个 dubbo:registry 标签 | 1.0.16 版本或更高版本 | |
protocol | string | 可选 | dubbo | 服务发现 | 注册中心地址协议,支持 dubbo 、multicast 、zookeeper 、redis 、consul(2.7. .2) 、etcd( 2.7.2) 、nacos(2.7.2) 等协议 | 版本 2.0.0 及以上 | |
port | int | 可选 | 9090 | 服务发现 | 注册中心的默认端口,当地址没有端口时,使用此端口作为默认值 | 2.0.0 或更高版本 | |
username | string | 可选 | 服务治理 | 登录注册中心的用户名,如果注册中心不需要验证,可以留空 | 2.0.0 或更高版本 | ||
password | string | 可选 | 服务治理 | 登录注册中心的密码,如果注册中心不需要验证,可以留空 | 2.0.0 或更高版本 | ||
transport | registry.transporter | string | 可选 | netty | 性能调优 | 网络传输模式,可选 mina、netty | 2.0.0 或更高版本 |
超时 | registry.timeout | int | 可选 | 5000 | 性能调优 | 注册中心请求超时时间(毫秒) | 2.0.0 或更高版本 |
session | registry.session | int | 可选 | 60000 | 性能调优 | 注册中心会话超时时间(毫秒),用于检测提供者异常断开连接后脏数据,例如心跳检测的实现,这个时间就是心跳间隔,不同注册中心会有所不同。 | 2.1.0 版本及以上 |
zone | zone | string | 可选 | 服务治理 | 注册中心所属的区域,通常用于流量隔离 | 版本 2.7.5 或更高 | |
file | registry.file | string | 可选 | 服务治理 | 使用文件缓存注册中心地址列表和服务提供者列表。当应用程序重启时,将根据此文件恢复。注意:两个注册中心不能使用相同的文件存储 | 2.0.0 或更高版本 | |
wait | registry.wait | int | 可选 | 0 | 性能调优 | 停止时等待通知完成的时间(毫秒) | 2.0.0 或更高版本 |
检查 | 检查 | boolean | 可选 | true | 服务治理 | 当注册中心不存在时是否报告错误 | 2.0.0 或更高版本 |
注册 | 注册 | boolean | 可选 | true | 服务治理 | 是否将服务注册到此注册中心,如果设置为 false,则只订阅,不注册 | 2.0.5 及以上版本 |
subscribe | subscribe | boolean | 可选 | true | 服务治理 | 是否订阅此注册中心服务,如果设置为 false,则只注册,不订阅 | 2.0.5 或更高版本 |
动态 | 动态 | boolean | 可选 | true | 服务治理 | 服务是否动态注册,如果设置为 false,则注册后显示为禁用,需要手动启用,当服务提供者停止时,不会自动注销,需要手动禁用。 | 2.0.5 及以上版本 |
分组 | 分组 | string | 可选 | dubbo | 服务治理 | 服务注册分组,跨分组服务互不影响,也不能互相调用,适合环境隔离。 | 2.0.5 及以上版本 |
version | version | string | 可选 | 服务发现 | 服务版本 | 1.0.0 以上版本 | |
simplified | simplified | boolean | 可选 | false | 服务治理 | 注册到注册中心的 URL 是否为简化模式(兼容低版本) | 版本 2.7.0 或更高 |
extra-keys | extraKeys | string | 可选 | 服务治理 | 当 simplified=true 时,extraKeys 允许您在 URL 中除了默认参数之外,还放入额外的键,格式为:“interface,key1,key2”。 | 2.7 .0 版本及以上 | |
useAsConfigCenter | boolean | 可选 | 服务治理 | 注册中心是否用作配置中心 | 版本 2.7.5 或更高 | ||
useAsMetadataCenter | boolean | 可选 | 服务治理 | 注册中心是否用作元数据中心 | 版本 2.7.5 或更高 | ||
accepts | accepts | string | 可选 | 服务治理 | 注册中心接收的 rpc 协议列表,多个协议用逗号分隔,例如 dubbo、rest | 版本 2.7.5 或更高 | |
preferred | preferred | boolean | 可选 | 服务治理 | 是否为首选注册中心。当订阅多个注册中心时,如果设置为 true,则优先使用这些注册中心 | 版本 2.7.5 及以上 | |
权重 | 权重 | int | 可选 | 性能调优 | 注册流量权重。当使用多个注册中心时,可以使用此值调整注册流量的分配。设置首选注册中心时,此值无效 | 2.7. 5 版本或更高版本 | |
注册模式 | 注册模式 | string | 可选 | 全部 | 服务治理 | 控制地址注册行为,用于应用程序级服务发现和迁移。 * 实例仅注册应用程序级地址; * 接口仅注册接口级地址; * 全部(默认)注册应用程序级和接口级地址; | 3.0.0 及以上版本 |
启用空保护 | 启用空保护 | boolean | 可选 | true | 服务治理 | 是否全局启用消费者端空地址列表的保护。启用后,注册中心推送的空地址将被忽略。默认值为 true | 3.0.0 或更高版本 |
参数 | 无 | Map<string, string> | 可选 | 服务治理 | 为扩展保留,任何参数都可以扩展和定义,所有扩展参数将原样反映在 URL 配置中 | 版本 2.0.0 及以上 |
config-center
配置中心。对应配置类:org.apache.dubbo.config.ConfigCenterConfig
| 属性 | 对应 URL 参数 | 类型 | 是否必填 | 默认值 | 描述 | 兼容性 | | —————- | ———————- | ——— ———- | ——– | —————- | ————- ————————————————– | – —- | | protocol | protocol | string | 可选 | zookeeper | 使用哪个配置中心:apollo、zookeeper、nacos 等。
以 zookeeper 为例
1. 如果指定了 protocol,则地址可以简化为 127.0.0.1:2181
;
2. 如果没有指定 protocol,则地址值为 zookeeper:// 127.0.0.1:2181
| 2.7.0 版本或更高版本 | | address | address | string | 必填 | | 配置中心地址。
请参考协议描述获取值 | 2.7.0 版本及以上 | | highestPriority | highest-priority| boolean | 可选 | true | 配置中心中的配置项优先级最高,即本地配置项会被覆盖。 | 2.7.0 版本及以上 | | namespace | namespace | string | 可选 | dubbo | 通常用于多租户隔离,实际含义取决于具体的配置中心。
例如
zookeeper - 环境隔离,默认值为 dubbo
;
apollo - 区分不同域的配置集,默认使用 dubbo
和 application
| 2.7.0 版本及以上 | | cluster | cluster | string | 可选 | | 含义取决于所选的配置中心。
它用于在 Apollo 中区分不同的配置集群 | 2.7.0 版本及以上 | group | group | string | 可选 | dubbo | 含义取决于所选的配置中心。
nacos - 隔离不同的配置集
zookeeper - 隔离不同的配置集 | 2.7.0 版本及以上 | | check | check | boolean | 可选 | true | 连接配置中心失败时是否终止应用程序启动。 | 2.7.0 版本及以上 | | configFile | config-file | string | 可选 | dubbo.properties | 全局配置文件映射到的键
zookeeper - 默认路径 /dubbo/config/dubbo/dubbo.properties
apollo - dubbo dubbo.properties 键在 namespace 中 | 2.7.0 版本或更高版本 | | appConfigFile | app-config-file | string | 可选 | | “configFile” 在全局范围内共享。此项仅限于此应用程序配置的属性 | 2.7.0+ | | timeout | timeout | int | 可选 | 3000ms | 获取配置的超时时间 | 2.7.0 版本或更高版本 | | username | username | string | 可选 | | 如果配置中心需要验证,则用户名
Apollo 尚未启用 | 2.7.0 版本或更高版本 | | password | password | string | 可选 | | 如果配置中心需要验证,则密码
Apollo 尚未启用 | 2.7.0 版本或更高版本 | | parameters | parameters | Map<string, string> | 可选 | | 扩展参数,用于支持不同配置中心的自定义配置参数 | 2.7.0 版本或更高版本 | | includeSpringEnv |include-spring-env| boolean | 可选 | false | 使用 Spring 框架时支持。当为 true 时,配置将自动从 Spring Environment 中读取。
默认情况下,
key 是 dubbo .properties 配置
key 是 Dubbo.properties PropertySource | 2.7.0 版本及以上 |
metadata-report-config
元数据中心。对应配置类:org.apache.dubbo.config.MetadataReportConfig
| 属性 | 对应 URL 参数 | 类型 | 是否必填 | 默认值 | 描述 | 兼容性 | | ————— | ——— | —— | ——– | ——- – | ———————————————– ————- | —— | | address | address | string | 必填 | | 元数据中心地址。 | 2.7.0 版本及以上 | protocol | protocol | string | 可选 | zookeeper | 元数据中心协议:zookeeper、nacos、redis 等。
以 zookeeper 为例
1. 如果指定了 protocol,则地址可以简化为 127.0.0.1:2181
;
2. 如果没有指定 protocol,则地址值为 zookeeper:// 127.0.0.1:2181
| 2.7.13 版本及以上 | | port | port | int | 可选 | | 元数据中心端口号。指定端口,则地址可以简化,无需配置端口号 | 2.7.13 版本或更高版本 | | username | username | string | 可选 | | 元数据中心需要验证,用户名
Apollo 尚未启用 | 2.7.0 版本或更高版本 | | password | password | string | 可选 | | 元数据中心需要验证,密码
Apollo 尚未启用 | 版本 2.7.0 或更高 | | timeout | timeout | int | 可选 | | 获取元数据超时时间 (ms) | 版本 2.7.0 或更高 | | group | group | string | 可选 | dubbo | 元数据分组,适合环境隔离。它与注册中心 group 的含义相同 | 版本 2.7.0 及以上 | | retryTimes | retry-times | int | 可选 | 100 | 重试次数 | 版本 2.7.0 或更高 | | retryPeriod | retry-period | int | 可选 | 3000ms | 重试间隔 (ms) | 版本 2.7.0 或更高 | | cycleReport | cycle-report | boolean| 可选 | true | 是否每天更新完整元数据 | 版本 2.7.0 及以上 | | syncReport | sync-report | boolean| 可选 | false | 是否同步更新元数据,默认异步 | 版本 2.7.0 或更高 | | cluster | cluster | string | 可选 | | 含义取决于所选的元数据中心。
用于区分 Apollo 中不同的配置集群 | 版本 2.7.0 及以上 | | file | file | string | 可选 | | 使用文件缓存元数据中心列表,当应用重启时,会根据此文件进行恢复,注意:两个元数据中心不能使用同一个文件存储 | 版本 2.7.0 或更高 | | check | check | boolean | 可选 | true | 元数据中心连接失败时是否终止应用启动。 | 版本 3.0.0 及以上 | | reportMetadata | report-metadata | boolean | 可选 | false | 是否上传接口配置报告元数据到地址发现中,dubbo.application.metadata-type=remote
配置不生效时会进行上报,dubbo.application.metadata-type=local
时是否上报由配置值决定 | 版本 3.0.0 及以上 | | reportDefinition | report-definition | boolean | 可选 | true | 是否上报服务运维的元数据 | 版本 3.0.0 及以上 | | reportConsumerDefinition | report-consumer-definition | boolean | 可选 | true | 是否上报消费者端服务运维的元数据 | 版本 3.0.0 及以上 | | parameters | parameters | Map<string, string> | 可选 | | 扩展参数,用于支持不同元数据中心的自定义配置参数 | 版本 2.7.0 或更高 |
protocol
服务提供者协议配置。对应配置类:org.apache.dubbo.config.ProtocolConfig
。同时,如果需要支持多种协议,可以声明多个 <dubbo:protocol>
标签,并在 <dubbo:service>
中通过 protocol
属性指定使用哪种协议。
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
id | string | 可选 | dubbo | 配置关联 | protocol BeanId,可以在 <dubbo:service protocol=""> 中引用此 ID,如果 ID 未填写,默认与 name 属性值相同,如果重复,则会在 name 后面加上序号。 | 2.0.5 及以上版本 | |
name | string | 必填 | dubbo | 性能调优 | 协议名称 | 版本 2.0.5 及以上 | |
port | int | 可选 | dubbo 协议默认端口为 20880,rmi 协议默认端口为 1099,http 和 hessian 协议默认端口为 80;如果没有配置端口,则会自动使用默认端口,如果配置为-1,则会分配一个未占用的端口。对于 Dubbo 2.4.0+,分配的端口是在协议默认端口的基础上递增,以确保端口段可控。 | 服务发现 | 服务端口 | 2.0.5 及以上版本 | |
主机 | string | 可选 | 自动查找本地 IP | 服务发现 | - 服务主机名,用于选择多个网卡或指定 VIP 和域名时使用,如果为空,则会自动查找本地 IP,- 建议不要配置,让 Dubbo 自动获取本地 IP | 2.0.5 或更高版本 | |
线程池 | 线程池 | string | 可选 | 固定 | 性能调优 | 线程池类型,可选:fixed/cached/limit (2.5.3 以上)/eager (2.6.x 以上) | 版本 2.0.5 或更高 |
线程名称 | 线程名称 | string | 可选 | 性能调优 | 线程池名称 | 版本 2.7.6 或更高 | |
线程 | 线程 | int | 可选 | 200 | 性能调优 | 服务线程池大小 (固定大小) | 2.0.5 或更高版本 |
核心线程 | 核心线程 | int | 可选 | 200 | 性能调优 | 线程池核心线程大小 | 2.0.5 或更高版本 |
io 线程 | 线程 | int | 可选 | CPU 数量 + 1 | 性能调优 | IO 线程池大小 (固定大小) | 2.0.5 或更高版本 |
accepts | accepts | int | 可选 | 0 | |||
有效载荷 | 有效载荷 | int | 可选 | 8388608(=8M) | 性能调优 | 请求和响应数据包大小限制,单位:字节 | 2.0.5 或更高版本 |
编解码器 | 编解码器 | string | 可选 | dubbo | 性能调优 | 协议编码 | 2.0.5 或更高版本 |
序列化 | 序列化 | string | 可选 | dubbo 协议默认使用 hessian2,rmi 协议默认使用 java,http 协议默认使用 json | 性能调优 | 协议序列化方法,用于协议支持多种序列化方法时使用,例如:dubbo 协议的 dubbo、hessian2、java、compactedjava,http 协议的 json 等。 | 2.0.5 及以上版本 |
访问日志 | 访问日志 | 字符串/布尔值 | 可选 | 服务治理 | 设置为 true,访问日志将输出到日志记录器,也可以填写访问日志文件路径,直接将访问日志输出到指定文件 | 2.0.5 版本或更高版本 | |
路径 | string | 可选 | 服务发现 | 提供者上下文路径,服务路径的前缀 | 2.0.5 或更高版本 | ||
传输器 | 传输器 | string | 可选 | dubbo 协议默认使用 netty | 性能调优 | 协议服务器和客户端实现类型,例如:dubbo 协议 mina、netty 等,可以拆分为服务器和客户端配置 | 2.0.5 及以上版本 |
服务器 | 服务器 | string | 可选 | Dubbo 协议默认使用 netty,http 协议默认使用 servlet | 性能调优 | 协议的服务器端实现类型,例如:dubbo 协议的 mina、netty 等,http 协议的 jetty、servlet 等。 | 2.0.5 及以上版本 |
客户端 | 客户端 | string | 可选 | Dubbo 协议默认使用 netty | 性能调优 | 协议客户端实现类型,例如:dubbo 协议 mina、netty 等。 | 2.0.5 版本或更高版本 |
调度器 | 调度器 | string | 可选 | dubbo 协议默认使用 all | 性能调优 | 协议消息分发方法,用于指定线程模型,例如:dubbo 协议的 all、direct、message、execution、connection 等。 | 2.1 .0+ 版本 |
队列 | 队列 | int | 可选 | 0 | 性能调优 | 线程池队列大小,当线程池满时,等待执行的队列大小,建议不要设置,当线程池满时,应该立即失败,并重试其他提供服务的机器,而不是排队,除非有特殊需要。 | 2.0.5 及以上版本 |
字符集 | 字符集 | string | 可选 | UTF-8 | 性能调优 | 序列化编码 | 2.0.5 或更高版本 |
缓冲区 | 缓冲区 | int | 可选 | 8192 | 性能调优 | 网络读写缓冲区大小 | 2.0.5 或更高版本 |
心跳 | 心跳 | int | 可选 | 0 | 性能调优 | 需要心跳来帮助检查连接是否断开 | 2.0.10+ |
telnet | telnet | string | 可选 | 服务治理 | 支持的 telnet 命令,用逗号分隔 | 2.0.5 及以上版本 | |
注册 | 注册 | boolean | 可选 | true | 服务治理 | 该协议的服务是否注册到注册中心 | 2.0.8 或更高版本 |
contextpath | contextpath | String | 可选 | 默认为空字符串 | 服务治理 | 上下文路径 | 版本 2.0.6 或更高 |
sslEnabled | ssl-enabled | boolean | 可选 | false | 服务治理 | 是否启用 ssl | 版本 2.7.5 或更高 |
参数 | 参数 | Map<string, string> | 可选 | 扩展参数 | 2.0.0 或更高版本 |
提供者
服务提供者默认配置。对应配置类:org.apache.dubbo.config.ProviderConfig
。同时,该标签也是 <dubbo:service>
和 <dubbo:protocol>
标签的默认值设置。
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
id | string | 可选 | dubbo | 配置关联 | protocol BeanId,可以在 <dubbo:service proivder=""> 中引用此 ID | 版本 1.0.16 以上 | |
protocol | string | 可选 | dubbo | 性能调优 | 协议名称 | 1.0.16 版本或更高版本 | |
主机 | string | 可选 | 自动搜索本地 IP | 服务发现 | 服务主机名,用于选择多个网卡或指定 VIP 和域名时使用,如果为空,则会自动搜索本地 IP。Dubbo 自动获取本地 IP | 1.0.16 版本或更高版本 | |
线程 | 线程 | int | 可选 | 200 | 性能调优 | 服务线程池大小 (固定大小) | 1.0.16 版本或更高版本 |
有效载荷 | 有效载荷 | int | 可选 | 8388608(=8M) | 性能调优 | 请求和响应数据包大小限制,单位:字节 | 2.0.0 以上版本 |
路径 | string | 可选 | 服务发现 | 提供者上下文路径,服务路径的前缀 | 2.0.0 或更高版本 | ||
传输器 | 传输器 | string | 可选 | dubbo 协议默认使用 netty | 性能调优 | 协议服务器和客户端实现类型,例如:dubbo 协议 mina、netty 等,可以拆分为服务器和客户端配置 | 2.0.5 及以上版本 |
服务器 | 服务器 | string | 可选 | Dubbo 协议默认使用 netty,http 协议默认使用 servlet | 性能调优 | 协议的服务器端实现类型,例如:dubbo 协议的 mina、netty 等,http 协议的 jetty、servlet 等。 | 版本 2.0.0 及以上 |
客户端 | 客户端 | string | 可选 | Dubbo 协议默认使用 netty | 性能调优 | 协议客户端实现类型,例如:dubbo 协议 mina、netty 等。 | 2.0.0 或更高版本 |
调度器 | 调度器 | string | 可选 | dubbo 协议默认使用 all | 性能调优 | 协议消息分发方法,用于指定线程模型,例如:dubbo 协议的 all、direct、message、execution、connection 等。 | 2.1 .0+ 版本 |
编解码器 | 编解码器 | string | 可选 | dubbo | 性能调优 | 协议编码 | 2.0.0 或更高版本 |
序列化 | 序列化 | string | 可选 | dubbo 协议默认使用 hessian2,rmi 协议默认使用 java,http 协议默认使用 json | 性能调优 | 协议序列化方法,用于协议支持多种序列化方法时使用,例如:dubbo 协议的 dubbo、hessian2、java、compactedjava,http 协议的 json、xml | 2.0.5 及以上版本 |
默认 | boolean | 可选 | false | 配置关联 | 是否为默认协议,用于多协议 | 1.0.16 版本或更高版本 | |
过滤器 | service.filter | string | 可选 | 性能调优 | 服务提供者远程调用过程拦截器名称,多个名称用逗号分隔 | 2.0.5 或更高版本 | |
监听器 | exporter.listener | string | 可选 | 性能调优 | 服务提供者导出服务监听器名称,多个名称用逗号分隔 | 2.0.5 或更高版本 | |
线程池 | 线程池 | string | 可选 | 固定 | 性能调优 | 线程池类型,可选:fixed/cached/limit (2.5.3 以上)/eager (2.6.x 以上) | 版本 2.0.5 或更高 |
线程名称 | 线程名称 | string | 可选 | 性能调优 | 线程池名称 | 版本 2.7.6 或更高 | |
accepts | accepts | int | 可选 | 0 | |||
version | version | string | 可选 | 0.0.0 | 服务发现 | 服务版本,建议使用两位数版本,例如:1.0,通常接口不兼容时需要升级版本号 | 2.0.5 或更高版本 |
分组 | 分组 | string | 可选 | 服务发现 | 服务分组,当一个接口有多个实现时,可以通过分组进行区分 | 2.0.5 或更高版本 | |
延迟 | 延迟 | int | 可选 | 0 | 性能调优 | 延迟注册服务时间 (毫秒) - 设置为 -1 时,表示服务延迟到 Spring 容器初始化完成后才注册 | 2.0.5 及以上版本 |
超时 | default.timeout | int | 可选 | 1000 | 性能调优 | 远程服务调用超时时间(毫秒) | 2.0.5 或更高版本 |
重试 | default.retries | int | 可选 | 2 | 性能调优 | 远程服务调用重试次数,不包括第一次调用,如果不需要重试,请设置为 0 | 2.0.5 版本或更高版本 |
连接 | default.connections | int | 可选 | 0 | 性能调优 | 每个提供者最大连接数,rmi、http、hessian 等短连接协议表示连接数限制,dubbo 等长连接协议表示建立的长连接数量 | 2.0.5 及以上版本 |
负载均衡 | default.loadbalance | string | 可选 | 随机 | 性能调优 | 负载均衡策略,可选值 * 随机 - 随机; * roundrobin - 轮询;leastactive - 最少活跃调用; * consistenthash - 一致性哈希 (2.1.0+); * 最短响应 - 最短响应 (2.7.7+); | 2.0.5+ |
异步 | default.async | boolean | 可选 | false | 性能调优 | 是否默认异步执行,不可靠且异步,只忽略返回值,不阻塞执行线程 | 2.0.5 及以上版本 |
存根 | 存根 | boolean | 可选 | false | 服务治理 | 如果设置为 true,表示使用默认代理类名,即:接口名 + Local 后缀。 | 2.0.5 及以上版本 |
模拟 | 模拟 | boolean | 可选 | false | 服务治理 | 设置为 true 表示使用默认 Mock 类名,即:接口名 + Mock 后缀。 | 2.0.5 及以上版本 |
令牌 | 令牌 | boolean | 可选 | 服务治理 | Token 验证,空表示未启用,如果为 true,表示随机生成动态 Token | 2.0.5 及以上版本 | |
注册中心 | 注册中心 | string | 可选 | 默认注册到所有注册中心 | 配置关联 | 注册到指定的注册中心,用于存在多个注册中心时,值为 dubbo:registry 的 id 属性,多个注册中心 ID 用逗号分隔,如果不想将服务注册到任何注册中心,可以将值设置为 N/A | 2.0.5 版本或更高版本 |
动态 | 动态 | boolean | 可选 | true | 服务治理 | 服务是否动态注册,如果设置为 false,注册后将显示禁用状态,需要手动启用,服务提供者停止时不会自动取消注册,需要手动禁用。 | 2.0.5 及以上版本 |
访问日志 | 访问日志 | 字符串/布尔值 | 可选 | false | 服务管理 | 设置为 true,访问日志将输出到日志记录器,也可以填写访问日志文件路径,将访问日志直接输出到指定文件 | 2.0.5 及以上版本 |
owner | owner | string | 可选 | 服务治理 | |||
文档 | 文档 | string | 可选 | 服务治理 | 服务文档 URL | 2.0.5 或更高版本 | |
权重 | 权重 | int | 可选 | 性能调优 | 服务权重 | 2.0.5 或更高版本 | |
执行 | 执行 | int | 可选 | 0 | 性能调优 | 服务提供者每个服务和方法的最大并行执行请求数 | 2.0.5 或更高版本 |
活跃 | default.actives | int | 可选 | 0 | 性能调优 | 每个服务消费者每个服务每个方法的最大并发调用数 | 2.0.5 或更高版本 |
代理 | 代理 | string | 可选 | javassist | 性能调优 | 生成动态代理,可选:jdk/javassist | 2.0.5 或更高版本 |
集群 | default.cluster | string | 可选 | 故障转移 | 性能调优 | 集群模式,可选:failover/failfast/failsafe/failback/forking | 版本 2.0.5 以上 |
已弃用 | 已弃用 | boolean | 可选 | false | 服务治理 | 服务是否已弃用,如果设置为 true,消费者将打印服务已弃用警告错误日志 | 2.0.5 或更高版本 |
队列 | 队列 | int | 可选 | 0 | 性能调优 | 线程池队列大小,当线程池满时,等待执行的队列大小,建议不要设置,当线程池满时,应该立即失败,并重试其他提供服务的机器,而不是排队,除非有特殊需要。 | 2.0.5 及以上版本 |
字符集 | 字符集 | string | 可选 | UTF-8 | 性能调优 | 序列化编码 | 2.0.5 或更高版本 |
缓冲区 | 缓冲区 | int | 可选 | 8192 | 性能调优 | 网络读写缓冲区大小 | 2.0.5 或更高版本 |
io 线程 | io 线程 | int | 可选 | CPU + 1 | 性能调优 | IO 线程池,接收网络读写中断,序列化和反序列化,不处理业务,业务线程池见 threads 配置,该线程池与 CPU 相关,不建议配置。 | 2.0.5 及以上版本 |
存活 | 存活 | int | 可选 | 服务管理 | 线程池 keepAliveTime,默认单位为 ms | 2.0.5 或更高版本 | |
telnet | telnet | string | 可选 | 服务治理 | 支持的 telnet 命令,用逗号分隔 | 2.0.5 及以上版本 | |
wait | wait | int | 可选 | 服务治理 | 停止服务时的等待时间 | ||
contextpath | contextpath | String | 可选 | 默认为空字符串 | 服务治理 | 上下文路径 | 版本 2.0.6 或更高 |
层 | 层 | string | 可选 | 服务治理 | 服务提供者所在的层级。例如:biz、dao、intl:web、china:acton。 | 2.0.7 及以上版本 | |
参数 | 参数 | Map<string, string> | 可选 | 服务治理 | 扩展参数 | 2.0.0 或更高版本 |
消费者
服务消费者默认配置。配置类:org.apache.dubbo.config.ConsumerConfig
。同时,该标签也是 <dubbo:reference>
标签的默认值设置。
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
超时 | default.timeout | int | 可选 | 1000 | 性能调优 | 远程服务调用超时时间(毫秒) | 1.0.16 版本或更高版本 |
重试 | default.retries | int | 可选 | 2 | 性能调优 | 远程服务调用重试次数,不包括第一次调用,如果不需要重试,请设置为 0,仅在集群为 failback/failover 时有效 | 版本 1.0.16 及以上 |
负载均衡 | default.loadbalance | string | 可选 | 随机 | 性能调优 | 负载均衡策略,可选值 * 随机 - 随机; * roundrobin - 轮询;leastactive - 最少活跃调用; * consistenthash - 一致性哈希 (2.1.0+); * 最短响应 - 最短响应 (2.7.7+); | 1.0.16+ |
异步 | default.async | boolean | 可选 | false | 性能调优 | 是否默认异步执行,不可靠且异步,只忽略返回值,不阻塞执行线程 | 2.0.0 或更高版本 |
发送 | default.sent | boolean | 可选 | true | 服务治理 | 异步调用时,当 flag sent=true 时,表示网络已发送数据 | 版本 2.0.6 或更高 |
连接 | default.connections | int | 可选 | 100 | 性能调优 | 每个服务到每个提供者的最大连接数,rmi、http、hessian 等短连接协议支持此配置,dubbo 协议长连接不支持此配置 | 1.0.16+ 版本 |
泛型 | 泛型 | boolean | 可选 | false | 服务治理 | 是否默认泛型接口,如果是泛型接口,将返回 GenericService | 2.0.0 以上版本 |
检查 | 检查 | boolean | 可选 | true | 服务治理 | 启动时检查提供者是否存在,true 报错,false 忽略 | 版本 1.0.16 及以上 |
代理 | 代理 | string | 可选 | javassist | 性能调优 | 生成动态代理,可选:jdk/javassist | 2.0.5 或更高版本 |
owner | owner | string | 可选 | 服务治理 | 要调用服务负责人的服务治理,请填写负责人的邮件前缀 | 版本 2.0.5 及以上 | |
活跃 | default.actives | int | 可选 | 0 | 性能调优 | 每个服务消费者每个服务每个方法的最大并发调用数 | 2.0.5 或更高版本 |
集群 | default.cluster | string | 可选 | 故障转移 | 性能调优 | 集群模式,可选:failover/failfast/failsafe/failback/forking/available/mergeable (2.1. 以上)/zone-aware(2.7.5 以上) | 2.0.5 以上 |
过滤器 | reference.filter | string | 可选 | 性能调优 | 服务消费者远程调用过程拦截器名称,多个名称用逗号分隔 | 2.0.5 或更高版本 | |
监听器 | invoker.listener | string | 可选 | 性能调优 | 服务消费者引用服务监听器的名称,多个名称用逗号分隔 | 2.0.5 或更高版本 | |
注册中心 | string | 可选 | 默认注册到所有注册中心 | 配置关联 | 注册到指定的注册中心,用于多个注册中心时,值为 dubbo:registry 的 id 属性,用于多个注册中心 ID 用逗号分隔,如果不想将服务注册到任何注册中心,可以将值设置为 N/A | 2.0.5 版本或更高版本 | |
层 | 层 | string | 可选 | 服务治理 | 服务调用者所在的层级。例如:biz、dao、intl:web、china:acton。 | 2.0.7 及以上版本 | |
init | init | boolean | 可选 | false | 性能调优 | 是否在 afterPropertiesSet() 后立即初始化引用,否则等到有人注入或引用实例后再初始化。 | 2.0.10 版本及以上 |
缓存 | 缓存 | 字符串/布尔值 | 可选 | 服务治理 | 调用参数用作键来缓存返回的结果,可选:lru、threadlocal、jcache 等。 | 版本 2.1.0 及以上支持 | |
验证 | 验证 | boolean | 可选 | 服务治理 | 是否启用 JSR303 标准注解验证,如果启用,将验证方法参数上的注解 | 2.1.0 及以上版本支持 | |
version | version | string | 可选 | 服务治理 | 在 Dubbo 中为同一个服务配置多个版本 | 2.2.0 及以上版本支持 | |
客户端 | 客户端 | string | 可选 | Dubbo 协议默认使用 netty | 性能调优 | 协议客户端实现类型,例如:dubbo 协议 mina、netty 等。 | 2.0.0 或更高版本 |
线程池 | 线程池 | string | 可选 | 固定 | 性能调优 | 线程池类型,可选:fixed/cached/limit (2.5.3 以上)/eager (2.6.x 以上) | 版本 2.0.5 或更高 |
核心线程 | 核心线程 | int | 可选 | 200 | 性能调优 | 线程池核心线程大小 | 2.0.5 或更高版本 |
线程 | 线程 | int | 可选 | 200 | 性能调优 | 服务线程池大小 (固定大小) | 2.0.5 或更高版本 |
队列 | 队列 | int | 可选 | 0 | 性能调优 | 线程池队列大小,当线程池满时,等待执行的队列大小,建议不要设置,当线程池满时,应该立即失败,并重试其他提供服务的机器,而不是排队,除非有特殊需要。 | 2.0.5 及以上版本 |
shareconnections | shareconnections | int | 可选 | 1 | 性能调优 | 共享连接数。当 connection 参数设置为 0 时,会启用共享模式连接,默认只有一个连接。仅支持 dubbo 协议 | 版本 2.7.0 及以上 |
referThreadNum | int | 可选 | 性能优化 | 异步调用线程池大小 | 版本 3.0.0 或更高 | ||
meshEnable | mesh-enable | boolean | 可选 | false | 服务网格 | Dubbo 网格模式切换。开启后,可以适配 SideCar 模式,将 Dubbo 服务调用转换为 K8S 标准调用。仅支持 Triple 协议,兼容 GRPC。设置为 true 后,原生对接 K8S,无需第三方注册中心,只需设置 dubbo.registry.address=N/A | 3.1.0 版本或更高版本 |
参数 | 参数 | Map<string, string> | 可选 | 服务治理 | 扩展参数 | 2.0.0 或更高版本 |
指标
指标配置。配置类:org.apache.dubbo.config.MetricsConfig
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
protocol | protocol | string | 可选 | prometheus | 性能调优 | 协议名称,默认使用 prometheus | 版本 3.0.0 或更高 |
prometheus | PrometheusConfig | 可选 | 配置关联 | prometheus 相关配置 | 版本 3.0.0 或更高 | ||
聚合 | AggregationConfig | 可选 | 配置关联 | 指标聚合相关配置 | 3.0.0 或更高版本 |
- PrometheusConfig 对应类:
org.apache.dubbo.config.nested.PrometheusConfig
属性 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
exporter.enabled | boolean | 可选 | 是否启用 prometheus exporter | |
exporter.enableHttpServiceDiscovery | boolean | 可选 | 是否启用 http 服务发现 | |
exporter.httpServiceDiscoveryUrl | string | 可选 | http 服务发现 URL | |
exporter.metricsPort | int | 可选 | 使用拉取方式时暴露的端口号 | |
exporter.metricsPath | string | 可选 | 使用拉取方式时暴露指标的路径 | |
pushgateway.enabled | boolean | 可选 | 是否通过 prometheus 的 Pushgateway 发布指标 | |
pushgateway.baseUrl | string | 可选 | Pushgateway 地址 | |
pushgateway.username | string | 可选 | Pushgateway 用户名 | |
pushgateway.password | string | 可选 | Pushgateway 密码 | |
pushgateway.pushInterval | int | 可选 | 推送指标间隔时间 |
- AggregationConfig 对应类:
org.apache.dubbo.config.nested.AggregationConfig
属性 | 类型 | 必填 | 默认值 | 描述 |
---|---|---|---|---|
enabled | boolean | 可选 | 是否启用本地指标聚合功能 | |
bucketNum | int | 可选 | 时间窗口桶的数量 | |
timeWindowSeconds | int | 可选 | 时间窗口持续时间(秒) |
ssl
TLS 认证配置。配置类:org.apache.dubbo.config.SslConfig
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
serverKeyCertChainPath | server-key-cert-chain-path | string | 可选 | 安全配置 | |||
serverPrivateKeyPath | server-private-key-path | string | 可选 | 安全配置 | 服务器私钥路径 | 版本 2.7.5 或更高 | |
serverKeyPassword | server-key-password | string | 可选 | 安全配置 | 服务器密钥密码 | 版本 2.7.5 或更高 | |
serverTrustCertCollectionPath | server-trust-cert-collection-path | string | 可选 | 安全配置 | 服务器信任证书路径 | 版本 2.7.5 或更高 | |
clientKeyCertChainPath | client-key-cert-chain-path | string | 可选 | 安全配置 | 客户端签名证书路径 | 版本 2.7.5 或更高 | |
clientPrivateKeyPath | client-private-key-path | string | 可选 | 安全配置 | 客户端私钥路径 | 版本 2.7.5 或更高 | |
clientKeyPassword | client-key-password | string | 可选 | 安全配置 | 客户端密钥密码 | 版本 2.7.5 或更高 | |
clientTrustCertCollectionPath | client-trust-cert-collection-path | string | 可选 | 安全配置 | 客户端信任证书路径 | 版本 2.7.5 或更高 |
module
模块信息配置。对应配置类 org.apache.dubbo.config.ModuleConfig
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
name | module | string | 必填 | 服务治理 | 当前模块名称,用于注册中心计算模块之间的依赖关系 | 版本 2.2.0 或更高 | |
version | module.version | string | 可选 | 服务治理 | 当前模块版本 | 版本 2.2.0 或更高 | |
owner | module.owner | string | 可选 | 服务治理 | 模块负责人,用于服务治理,请填写负责人邮箱前缀 | 版本 2.2.0 以上 | |
organization | module.organization | string | 可选 | 服务治理 | 组织名称(BU 或部门),用于注册中心区分服务来源。建议此配置项不要使用 autoconfig,直接在配置中写死,例如 China、intl、itu、crm、asc、dw、aliexpress 等。 | 版本 2.2.0 及以上 | |
background | background | boolean | 可选 | 性能调优 | 是否启用后台启动模式。如果启用,则无需等待 spring ContextRefreshedEvent 事件完成 | 3.0.0 及以上版本 | |
referAsync | referAsync | boolean | 可选 | 性能调优 | 是否在消费者端启用异步调用 | 3.0.0 或更高版本 | |
referThreadNum | referThreadNum | int | 可选 | 性能调优 | 异步调用线程池大小 | 版本 3.0.0 或更高 | |
exportAsync | exportAsync | boolean | 可选 | 性能调优 | 是否在服务器端启用导出 | 3.0.0 或更高版本 | |
exportThreadNum | exportThreadNum | int | 可选 | 异步导出线程池大小 | 版本 3.0.0 或更高 |
monitor
监控中心配置。对应配置类:org.apache.dubbo.config.MonitorConfig
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
protocol | protocol | string | 可选 | dubbo | 服务治理 | 监控中心协议,如果是 protocol=“registry”,则表示从注册中心获取监控中心的地址,否则直接连接监控中心。 | 版本 2.0.9 及以上 |
address | string | 可选 | 服务治理 | 直接连接监控中心服务器地址,address=“10.20.130.230:12080” | 1.0.16 版本或更高版本 | ||
username | username | string | 可选 | 服务治理 | 监控中心用户名 | 版本 2.0.9 或更高 | |
password | password | string | 可选 | 服务治理 | 监控中心密码 | 版本 2.0.9 或更高 | |
分组 | 分组 | string | 可选 | 服务治理 | grouping | 版本 2.0.9 或更高 | |
version | version | string | 可选 | 服务治理 | 版本号 | 版本 2.0.9 或更高 | |
interval | interval | string | 可选 | 服务治理 | 间隔时间 | 版本 2.0.9 或更高 | |
参数 | 参数 | Map<string, string> | 可选 | 自定义参数 | 2.0.0 或更高版本 |
method
方法级配置。对应配置类:org.apache.dubbo.config.MethodConfig
。同时该标签是 service
或 reference
的子标签,用于控制到方法级别。
例如
<dubbo:reference interface="com.xxx.XxxService">
<dubbo:method name="findXxx" timeout="3000" retries="2" />
</dubbo:reference>
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
name | string | 必需 | logo | 方法名称 | 版本 1.0.8 或更高 | ||
超时 | int | 可选 | 默认是 timeout | 性能调优 | 方法调用超时时间(毫秒) | 版本 1.0.8 或更高 | |
重试 | int | 可选 | 默认是 dubbo:reference 的 retries | 性能调优 | 远程服务调用重试次数,不包括第一次调用,请设置为 0 | 版本 2.0.0 或更高 | |
负载均衡 | string | 可选 | 默认是 loadbalance | 性能调优 | 负载均衡策略,可选值 * 随机 - 随机; * roundrobin - 轮询; * 最少活跃 - 最少活跃调用; * consistenthash - 一致性哈希(版本 2.1.0+); * shortestresponse - 最短响应(版本 2.7.7+); | 2.0. 版本 0 及以上 | |
异步 | boolean | 可选 | 默认是 dubbo:reference 的 async | 性能调优 | 是否异步执行,不可靠且异步,只忽略返回值,不阻塞执行线程 | 1.0.9 以上版本 | |
发送 | boolean | 可选 | true | 性能调优 | 异步调用时,当标记 sent=true 时,表示网络已经发送数据 | 版本 2.0.6 或更高 | |
活跃 | int | 可选 | 0 | 性能调优 | 每个服务消费者最大并发调用限制 | 2.0.5 或更高版本 | |
执行 | int | 可选 | 0 | 性能调优 | 每个服务和方法使用的最大线程数 - -,此属性仅在 dubbo:method 用作 dubbo:service 的子标签时有效 | 2.0.5 及以上版本 | |
已弃用 | boolean | 可选 | false | 服务治理 | 服务方法是否已弃用,此属性仅在 dubbo:method 用作 dubbo:service 的子标签时有效 | 版本 2.0.5 及以上 | |
sticky | boolean | 可选 | false | 服务治理 | 设置为 true 此接口上的所有方法都使用同一个提供者。如果需要更复杂的规则,请使用路由 | 2.0.6 或更高 | |
return | boolean | 可选 | true | 性能调优 | 方法调用是否需要返回值。它仅在 async 设置为 true 时生效。如果设置为 true,则将返回 future,或 onreturn 等回调方法。如果设置为 false,则在请求成功发送后直接返回 Null | 版本 2.0.6 以上 | |
oninvoke | 属性属性,不反映在 URL 中 | String | 可选 | 性能调优 | 实例执行前拦截 | 版本 2.0.6 或更高 | |
onreturn | 属性属性,不反映在 URL 中 | String | 可选 | 性能调优 | 实例执行返回后拦截 | ||
onthrow | 属性属性,不反映在 URL 中 | String | 可选 | 性能调优 | 实例执行中异常拦截 | ||
oninvokeMethod | 属性属性,不反映在 URL 中 | String | 可选 | 性能调优 | 方法执行前拦截 | 版本 2.0.6 或更高 | |
onreturnMethod | 属性属性,不反映在 URL 中 | String | 可选 | 性能调优 | 方法执行返回后拦截 | 版本 2.0.6 以上 | |
onthrowMethod | 属性属性,不反映在 URL 中 | String | 可选 | 性能调优 | 方法执行有异常拦截 | 版本 2.0.6 或更高 | |
缓存 | 字符串/布尔值 | 可选 | 服务治理 | 使用调用参数作为键缓存返回的结果,可选:lru、threadlocal、jcache 等。 | 版本 2.1.0 以上 | ||
验证 | boolean | 可选 | 服务治理 | 是否启用 JSR303 标准注解验证,如果启用,则会验证方法参数上的注解 | 版本 2.1.0 或更高 |
argument
方法参数配置。对应配置类:org.apache.dubbo.config.ArgumentConfig
。该标签是 method
的子标签,用于描述方法参数的特性,例如 XML 格式
<dubbo:method name="findXxx" timeout="3000" retries="2">
<dubbo:argument index="0" callback="true" />
</dubbo:method>
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
index | int | 必需 | 标识符 | 参数索引 | 版本 2.0.6 或更高 | ||
type | String | 选择 index 和 index 之一 | 识别 | 通过参数类型查找参数索引 | 版本 2.0.6 或更高 | ||
callback | boolean | 可选 | 服务治理 | 参数是否为回调接口,如果是回调,服务提供者会生成反向代理,消费者可以从服务提供者反向调用,通常用于事件推送。 | 版本 2.0.6 以上 |
parameter
可选参数配置。对应配置类:java.util.Map
。同时标签是 protocol
或 service
或 provider
或 reference
或 consumer
或 monitor
或 registry
或 metadata-config
或 config-center
的子标签,用于配置自定义参数,此配置项将作为扩展点设置自定义参数。
例如
<dubbo:protocol name="napoli">
<dubbo:parameter key="http://10.20.160.198/wiki/display/dubbo/napoli.queue.name" value="xxx" />
</dubbo:protocol>
你也可以
<dubbo:protocol name="jms" p:queue="xxx" />
属性 | 对应 URL 参数 | 类型 | 必填 | 默认值 | |||
---|---|---|---|---|---|---|---|
key | key | string | 必填 | 服务治理 | 路由参数键 | 2.0.0 或更高版本 | |
value | value | string | 必填 | 服务治理 | 路由参数值 | 2.0.0 或更高版本 |
环境变量
支持的键是以下两个
dubbo.labels
,指定 URL 中配置的键值对列表,通常通过 JVM -D 或系统环境变量。添加以下配置
# JVM -Ddubbo.labels = "tag1=value1; tag2=value2" # environment variables DUBBO_LABELS = "tag1=value1; tag2=value2"
最终生成的 URL 将包含两个键 tag1 和 tag2:
dubbo://xxx?tag1=value1&tag2=value2
dubbo.env.keys
,指定环境变量键值,Dubbo 会尝试从环境变量中加载每个键# JVM -Ddubbo.env.keys="DUBBO_TAG1, DUBBO_TAG2" # environment variables DUBBO_ENV_KEYS = "DUBBO_TAG1, DUBBO_TAG2"
最终生成的 URL 将包含两个键 DUBBO_TAG1 和 DUBBO_TAG2:
dubbo://xxx?DUBBO_TAG1=value1&DUBBO_TAG2=value2
其他配置
config-mode
background
某些类型的配置类实例在每个 dubbo 应用程序中只能出现一次(例如 ApplicationConfig
、MonitorConfig
、MetricsConfig
、SslConfig
、ModuleConfig
),而有些可以出现多次(例如 RegistryConfig
、ProtocolConfig
等)。
如果应用程序意外扫描到多个唯一的配置类实例(例如,用户在 dubbo 应用程序中错误配置了两个 ApplicationConfig
),应该使用哪种策略来处理这种情况?是直接抛出异常?是保留前者,忽略后者?是忽略前者,保留后者?还是允许某种形式的共存(例如,后者的属性覆盖前者)?
目前,dubbo 中唯一的配置类类型以及找到多个唯一配置类型实例时允许的配置模式/策略如下。
唯一的配置类类型
ApplicationConfig
、MonitorConfig
、MetricsConfig
、SslConfig
、ModuleConfig
。
前四个属于应用程序级别,最后一个属于模块级别。
配置模式
strict
:严格模式。直接抛出异常。override
:覆盖模式。忽略前者,保留后者。ignore
:忽略模式。忽略后者,保留前者。override_all
:属性覆盖模式。无论前者的属性值是否为空,都将后者的属性覆盖/设置在前者上。override_if_absent
:属性覆盖模式(如果不存在)。只有当前者的对应属性值为空时,才能将后者的属性覆盖/设置在前者上。
注意:后两者也会影响配置实例的属性覆盖。由于 Dubbo 具有多种配置方式,即存在多个配置来源,且配置来源也具有优先级。例如,一个 ServiceConfig
通过 xml 配置,并指定了属性 version=1.0.0
。同时,我们在外部配置(配置中心)中配置了 dubbo.service.{interface}.version=2.0.0
,在引入 config-mode
配置项之前,根据原有的配置来源优先级,最终实例的 version=2.0.0
。但是,在引入 config-mode
配置项之后,配置优先级规则不再那么严格,即如果指定 config-mode is override_all
,则为 version=2.0.0
,如果 config-mode is override_if_absent
,则为 version=1.0.0
,如果 config-mode
为其他值,则属性设置/覆盖将遵循原有的配置优先级。
配置方式
配置的键为 dubbo.config.mode
,配置的值如上所述,默认策略值为 strict
。下面是一个示例配置
# JVM -D
-Ddubbo.config.mode=strict
# environment variables
DUBBO_CONFIG_MODE=strict
# External configuration (configuration center), Environment of Spring application, dubbo.properties
dubbo.config.mode=strict