什么是dubbo?
Apache Dubbo 是一个高性能、轻量级的开源 Java RPC(远程过程调用)框架,主要用于构建分布式服务架构。其前身是阿里巴巴公司开源的一个高性能、轻量级的开源Java RPC框架,可以和Spring框架无缝集成。
官网地址:https://cn.dubbo.apache.org/zh-cn/overview/what/core-features/protocols/
什么是RPC?
RPC全称为remote procedure call,即远程过程调用。比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的方法,由于两个应用不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。
需要注意的是RPC并不是一个具体的技术,而是指整个网络远程调用过程,RPC是一个泛化的概念,严格来说一切远程过程调用手段都属于RPC范畴。各种开发语言都有自己的RPC框架。Java中的RPC框架比较多,广泛使用的有RMI、Hessian、Dubbo等
核心功能
- 微服务开发
- 开发层面,Dubbo 提供了 Java、Go、Rust、Node.js 等语言实现并定义了一套微服务开发范式,配套脚手架可用于快速创建微服务项目骨架
- 部署层面,Dubbo 应用支持虚拟机、Docker 容器、Kubernetes、服务网格架构部署
- 服务治理层面,Dubbo 提供了地址发现、负载均衡、流量管控等治理能力,官方还提供 Admin 可视化控制台、丰富的微服务生态集成
- 服务发现
- Dubbo 提供的是一种 Client-Based 的服务发现机制,依赖第三方注册中心组件来协调服务发现过程,支持常用的注册中心如 Nacos、Consul、Zookeeper 等
- 负载均衡: 在集群负载均衡时,Dubbo 提供了多种均衡策略,默认为
weighted random基于权重的随机负载均衡策略。 - 流量控制:Dubbo 提供了丰富的流量管控策略
- 地址发现与负载均衡,地址发现支持服务实例动态上下线,负载均衡确保流量均匀的分布到每个实例上。
- 基于路由规则的流量管控,路由规则对每次请求进行条件匹配,并将符合条件的请求路由到特定的地址子集。
核心组件
Provider(服务提供者)
- 暴露服务的服务提供方
- 启动时向注册中心注册服务
Consumer(服务消费者)
- 调用远程服务的服务消费方
- 从注册中心订阅服务列表
Registry(注册中心)
- 服务注册与发现的中心化组件
- 常用实现:Nacos、Zookeeper、Consul等
Monitor(监控中心)
- 统计服务调用次数和耗时
- 提供服务监控数据
Dubbo 的工作原理

从抽象架构上分为两层:
- 服务治理控制面。服务治理控制面不是特指如注册中心类的单个具体组件,而是对 Dubbo 治理体系的抽象表达。控制面包含协调服务发现的注册中心、流量管控策略、Dubbo Admin 控制台等,如果采用了 Service Mesh 架构则还包含 Istio 等服务网格控制面。
- Dubbo 数据面。数据面代表集群部署的所有 Dubbo 进程,进程之间通过 RPC 协议实现数据交换,Dubbo 定义了微服务应用开发与调用规范并负责完成数据传输的编解码工作。
-
- 服务消费者 (Dubbo Consumer),发起业务调用或 RPC 通信的 Dubbo 进程
- 服务提供者 (Dubbo Provider),接收业务调用或 RPC 通信的 Dubbo 进程
组件调用说明:
- 服务容器负责启动,加载,运行服务提供者。
- 服务提供者在启动时,向注册中心注册自己提供的服务。
- 服务消费者在启动时,向注册中心订阅自己所需的服务。
- 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
- 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
- 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心
主要优势
透明化调用:像调用本地方法一样调用远程服务
负载均衡:自动分配请求到不同服务实例
容错处理:支持集群容错和失败重试
服务治理:提供服务路由、权重配置等治理功能
多协议支持:支持dubbo、hessian、http等多种协议
dubbo的使用
开发版本:nacos 2.3.0,Spring Boot 3.2.0,jdk 17,dubbo 3.3.0
消费者,生产者服务注册到nacos
生产者,消费者pom引入dubbo依赖:
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
</dependency>
消费者yml配置dubbo:
server:
port: 9992
spring:
application:
name: service-consumer
dubbo:
# Dubbo应用配置
application:
name: ${spring.appliction.name} #默认是应用的名称
qos-enable: false # 禁用QoS功能,不开启远程运维端口
metadataType: remote # 元数据类型为远程存储,存储到注册中心
register-mode: instance # 注册模式为实例级注册,只注册应用实例信息
service-discovery: # 服务发现相关配置
migration: FORCE_APPLICATION # 强制使用应用级服务发现模式
# Dubbo提供者配置
provider:
timeout: 3000 # 提供者服务处理超时时间3秒
# 注册中心配置,指定消费者从哪里发现生产者服务
registry:
address: nacos://127.0.0.1:8848 # Nacos注册中心地址
username: nacos # 注册中心用户名
password: nacos # 注册中心密码
parameters: # 注册中心额外参数
namespace: c05ac516-4b3d-4462-93e0-de2aedd74dcb # 命名空间ID
生产者yml配置:
server:
port: 9994
spring:
application:
name: service-provider1-mgt
dubbo:
# Dubbo应用配置
application:
name: ${spring.appliction.name} #默认是应用的名称
qos-enable: false # 禁用QoS功能,不开启远程运维端口
metadataType: remote # 元数据类型为远程存储,存储到注册中心
register-mode: instance # 注册模式为实例级注册,只注册应用实例信息
service-discovery: # 服务发现相关配置
migration: FORCE_APPLICATION # 强制使用应用级服务发现模式
# Dubbo提供者配置
provider:
timeout: 3000 # 提供者服务处理超时时间3秒
# 注册中心配置
registry:
address: nacos://127.0.0.1:8848 # Nacos注册中心地址
username: nacos # 注册中心用户名
password: nacos # 注册中心密码
parameters: # 注册中心额外参数
namespace: c05ac516-4b3d-4462-93e0-de2aedd74dcb # 命名空间ID
# 服务扫描配置
scan:
base-packages: com.yzz.*.*.provider.impl # 自动扫描服务实现类的基础包路径
# 协议配置
protocol:
name: tri # 使用Triple协议(gRPC兼容协议)
port: -1 # 端口设为-1,表示使用随机可用端口
注意:
dubbo.scan.base-packages:是服务者对外提供即支持消费者远程调用的类的包路径
dubbo.protocol.port: 可以填写固定端口号,但是如果存在多个生产者的情况下,必须保证这个端口唯一,不可以重复,最好设置为-1,表示使用随机可用端口
服务暴露
@DubboService标记生产者需要暴露给消费者的类
@DubboService
public class TestProvider1Impl implements TestProvider1 {
@Override
public String test() {
return "service-provider1 服务test调用成功";
}
}
@DubboService 注解的作用
1. 服务暴露
- 将当前类标记为Dubbo服务提供者
- 自动将该实现类暴露为远程服务
- 无需额外的XML配置或手动注册
2. 自动注册
- 服务启动时自动向注册中心(Nacos)注册服务
- 生成服务URL并发布到注册中心
- 其他服务可以通过注册中心发现此服务
3. 配置继承
- 继承来自 dubbo.provider 的全局配置
- 如超时时间、重试次数、负载均衡等参数
- 可以通过注解属性覆盖默认配置
4. 协议绑定
- 根据 dubbo.protocol 配置绑定相应协议
- 当前配置使用Triple协议(tri)
- 监听随机端口(port: -1)
5. 服务发现
- 生成标准的服务元数据
- 包括接口名、版本、分组等信息
- 便于消费者进行服务调用
6. 注解属性(可选配置)
@DubboService(
version = "1.0.0", // 服务版本
group = "test", // 服务分组
timeout = 5000, // 超时时间
retries = 2, // 重试次数
loadbalance = "random", // 负载均衡策略
weight = 100 // 服务权重
)
7. 工作原理
- Spring容器启动时扫描带有 @DubboService 的类
- 创建服务实现类的Bean实例
- 构造服务URL并绑定到指定协议端口
- 向注册中心注册服务信息
- 启动服务监听,等待消费者调用
启动消费者生产者,查看服务注册和自动配置情况:



我们发现自动装配成功
有个疑问,消费者不是也配置了dubbo.registry,怎么消费者没有注册到nacos里面?
生产者 (Provider) 的 registry 作用:
主要功能:服务注册
将自身提供的服务信息发布到注册中心
让其他消费者能够发现和调用该服务
# 生产者 dubbo: registry: register: true # 默认true,向注册中心注册自己的服务 subscribe: true # 默认true,也会订阅其他服务(如果需要)消费者 (Consumer) 的 registry 作用:
主要功能:服务发现
从注册中心获取服务提供者列表
实现对远程服务的调用
# 消费者 dubbo: registry: register: false # 通常为false,不注册服务(除非既是生产者又是消费者) subscribe: true # 默认true,订阅需要的服务
服务调用
@DubboReference注解:用于注入远程服务的代理实例。
@DubboReference(providedBy = "service-provider1-mgt")
private TestProvider1 provider1;
public String dubbo(){
return provider1.test()
}
核心作用
远程服务代理:创建远程服务接口的代理对象,屏蔽远程调用的复杂,提供本地方法调用的体验
服务发现:从注册中心自动发现服务提供者,获取服务提供者地址列表,实现负载均衡调用
如果运行过程中出现org.apache.dubbo.rpc.RpcException异常,一般是dubbo版本不兼容问题,比如我之前用的spring Boot版本为3.2.0,dubbo版本为3.2.10,消费者服务调用生产者服务报错:

解决方案将dubbo版本升级为3.3.0,问题解决。
@DubboReference 注解参数详解:
## 1. 接口相关参数
### interfaceClass
- **含义**:指定服务接口的Class类型
- **用途**:明确指定要引用的服务接口类型
- **默认值**:void.class
- **示例**:`interfaceClass = UserService.class`
### interfaceName
- **含义**:指定服务接口的全限定名
- **用途**:当无法直接引用接口Class时使用字符串方式指定
- **默认值**:空字符串
- **示例**:`interfaceName = "com.example.UserService"`
## 2. 服务标识参数
### version
- **含义**:服务版本号
- **用途**:实现服务的版本隔离和灰度发布
- **默认值**:空字符串(使用全局配置)
- **示例**:`version = "1.0.0"`
### group
- **含义**:服务分组
- **用途**:实现服务的分组隔离,同一服务可以有多个分组
- **默认值**:空字符串(使用全局配置)
- **示例**:`group = "user-service"`
## 3. 连接相关参数
### url
- **含义**:直连提供者URL
- **用途**:绕过注册中心直接连接指定服务提供者,用于测试或特殊场景
- **默认值**:空字符串
- **示例**:`url = "dubbo://127.0.0.1:20880"`
### client
- **含义**:客户端传输类型设置
- **用途**:指定客户端使用的网络传输方式
- **默认值**:空字符串(使用默认客户端)
- **示例**:`client = "netty"`
## 4. 已废弃参数
### generic(已废弃)
- **含义**:是否启用泛化调用
- **用途**:通用引用,无需指定接口
- **默认值**:false
- **状态**:已废弃
### injvm(已废弃)
- **含义**:是否启用本地调用
- **用途**:在同一个JVM内直接调用,不通过网络
- **默认值**:true
- **状态**:已废弃
## 5. 启动检查参数
### check
- **含义**:启动时是否检查服务提供者是否存在
- **用途**:设置为false可在服务提供者未启动时也允许消费者启动
- **默认值**:true
- **示例**:`check = false`
### init
- **含义**:是否在加载时初始化
- **用途**:是否在Spring容器初始化时就创建服务引用
- **默认值**:true
- **示例**:`init = false`
## 6. 连接模式参数
### lazy
- **含义**:是否延迟连接
- **用途**:设置为true时,第一次调用时才建立连接
- **默认值**:false
- **示例**:`lazy = true`
### stubevent
- **含义**:是否启用事件派遣
- **用途**:在方法调用前是否触发事件
- **默认值**:false
- **示例**:`stubevent = true`
### reconnect
- **含义**:重连时间间隔
- **用途**:连接断开后的重连间隔,单位毫秒
- **默认值**:空字符串(使用默认重连策略)
- **示例**:`reconnect = "10000"`
### sticky
- **含义**:是否启用粘性连接
- **用途**:设置为true时,总是向同一个提供者发起调用
- **默认值**:false
- **示例**:`sticky = true`
## 7. 代理和存根参数
### proxy
- **含义**:代理类型
- **用途**:指定代理生成方式
- **默认值**:空字符串(使用默认代理)
- **示例**:`proxy = "javassist"`
### stub
- **含义**:本地存根
- **用途**:在客户端本地执行部分逻辑后再调用远程服务
- **默认值**:空字符串
- **示例**:`stub = "com.example.UserServiceStub"`
## 8. 集群容错参数
### cluster
- **含义**:集群容错模式
- **用途**:指定服务调用失败时的处理策略
- **默认值**:空字符串(使用默认集群策略failover)
- **示例**:`cluster = "failfast"`
### connections
- **含义**:连接数限制
- **用途**:每个服务提供者的最大连接数
- **默认值**:-1(无限制)
- **示例**:`connections = 100`
### callbacks
- **含义**:回调实例个数限制
- **用途**:限制回调实例的数量
- **默认值**:-1(无限制)
- **示例**:`callbacks = 10`
## 9. 连接事件参数
### onconnect
- **含义**:连接成功时的回调方法
- **用途**:连接建立成功时执行的回调
- **默认值**:空字符串
- **示例**:`onconnect = "onConnect"`
### ondisconnect
- **含义**:断开连接时的回调方法
- **用途**:连接断开时执行的回调
- **默认值**:空字符串
- **示例**:`ondisconnect = "onDisconnect"`
## 10. 服务治理参数
### owner
- **含义**:服务负责人
- **用途**:标识服务的负责人信息
- **默认值**:空字符串
- **示例**:`owner = "developer-team"`
### layer
- **含义**:服务层次
- **用途**:标识服务所在的层次(如biz、dao等)
- **默认值**:空字符串
- **示例**:`layer = "biz"`
### retries
- **含义**:远程服务调用重试次数
- **用途**:调用失败时的重试次数
- **默认值**:-1(使用全局配置)
- **示例**:`retries = 2`
### loadbalance
- **含义**:负载均衡策略
- **用途**:指定多个服务提供者间的负载均衡算法
- **默认值**:空字符串(使用默认负载均衡random)
- **示例**:`loadbalance = "roundrobin"`
## 11. 调用模式参数
### async
- **含义**:是否异步调用
- **用途**:设置为true时,不阻塞当前线程等待结果
- **默认值**:false
- **示例**:`async = true`
### actives
- **含义**:最大并发调用数
- **用途**:限制客户端对同一个服务的最大并发调用数
- **默认值**:-1(无限制)
- **示例**:`actives = 10`
### sent
- **含义**:是否等待发送成功
- **用途**:异步调用时是否等待消息发送成功
- **默认值**:false
- **示例**:`sent = true`
## 12. 服务降级参数
### mock
- **含义**:服务降级处理
- **用途**:服务调用失败时的降级策略
- **默认值**:空字符串
- **示例**:
- `mock = "force:return:null"`(强制返回null)
- `mock = "fail:return:error"`(失败时返回指定值)
- `mock = "com.example.UserServiceMock"`(自定义Mock实现)
### validation
- **含义**:是否启用参数验证
- **用途**:启用JSR303参数验证
- **默认值**:空字符串
- **示例**:`validation = "true"`
### timeout
- **含义**:调用超时时间
- **用途**:设置服务调用的超时时间,单位毫秒
- **默认值**:-1(使用全局配置)
- **示例**:`timeout = 3000`
## 13. 缓存和过滤参数
### cache
- **含义**:缓存策略
- **用途**:启用服务调用结果缓存
- **默认值**:空字符串
- **示例**:
- `cache = "lru"`(最近最少使用)
- `cache = "threadlocal"`(线程本地缓存)
- `cache = "jcache"`(使用JCache API)
### filter
- **含义**:过滤器
- **用途**:指定调用链中要使用的过滤器
- **默认值**:空数组
- **示例**:`filter = {"accesslog", "tps"}`
### listener
- **含义**:监听器
- **用途**:指定服务调用的监听器
- **默认值**:空数组
- **示例**:`listener = {"deprecated"}`
## 14. 自定义参数
### parameters
- **含义**:自定义参数
- **用途**:添加自定义的键值对参数
- **默认值**:空数组
- **示例**:`parameters = {"key1", "value1", "key2", "value2"}`
## 15. 已废弃的配置参数
### application(已废弃)
- **含义**:应用配置
- **用途**:指定应用配置
- **默认值**:空字符串
- **状态**:已废弃
## 16. 配置引用参数
### module
- **含义**:模块配置
- **用途**:指定模块配置
- **默认值**:空字符串
- **示例**:`module = "user-module"`
### consumer
- **含义**:消费者配置
- **用途**:指定消费者配置
- **默认值**:空字符串
- **示例**:`consumer = "user-consumer"`
### monitor
- **含义**:监控配置
- **用途**:指定监控配置
- **默认值**:空字符串
- **示例**:`monitor = "monitor-config"`
### registry
- **含义**:注册中心配置
- **用途**:指定使用的注册中心
- **默认值**:空数组(使用默认注册中心)
- **示例**:`registry = {"registry1", "registry2"}`
### protocol
- **含义**:协议配置
- **用途**:指定使用的协议
- **默认值**:空字符串
- **示例**:`protocol = "dubbo"`
## 17. 服务治理扩展参数
### tag
- **含义**:服务标签
- **用途**:用于标签路由和服务分组
- **默认值**:空字符串
- **示例**:`tag = "gray"`
### merger
- **含义**:结果合并器
- **用途**:集群调用时合并多个结果
- **默认值**:空字符串
- **示例**:`merger = "true"`
## 18. 方法级配置参数
### methods
- **含义**:方法级配置
- **用途**:为特定方法指定个性化配置
- **默认值**:空数组
- **示例**:
```java
methods = {
@Method(name = "getUser", timeout = 5000, retries = 0)
}
```
### id
- **含义**:Bean ID
- **用途**:Spring容器中Bean的唯一标识
- **默认值**:空字符串
- **示例**:`id = "userService"`
## 19. 已废弃的服务参数
### services(已废弃)
- **含义**:服务列表
- **用途**:指定多个服务
- **默认值**:空数组
- **状态**:已废弃
## 20. 服务提供者指定参数
### providedBy
- **含义**:指定服务提供者应用名
- **用途**:明确指定服务由哪个应用提供,用于服务订阅优化
- **默认值**:空数组
- **示例**:`providedBy = {"user-service-provider"}`
### providerPort
- **含义**:提供者端口
- **用途**:指定服务提供者的端口号
- **默认值**:-1(自动发现)
- **示例**:`providerPort = 20880`
### providerNamespace
- **含义**:提供者命名空间
- **用途**:指定服务提供者所在的命名空间
- **默认值**:空字符串
- **示例**:`providerNamespace = "production"`
## 21. 作用域参数
### scope
- **含义**:服务作用域
- **用途**:指定服务引用的作用范围
- **默认值**:空字符串
- **示例**:
- `scope = "local"`(本地)
- `scope = "remote"`(远程)
- `scope = "none"`(不引用)
## 22. 异步引用参数
### referAsync
- **含义**:是否异步引用
- **用途**:设置服务引用是否异步进行
- **默认值**:false
- **示例**:`referAsync = true`
### unloadClusterRelated
- **含义**:是否卸载集群相关资源
- **用途**:在服务引用销毁时是否卸载集群相关资源
- **默认值**:false
- **示例**:`unloadClusterRelated = true`
## 使用示例
```java
@DubboReference(
version = "1.0.0",
group = "user",
timeout = 3000,
retries = 2,
loadbalance = "roundrobin",
cluster = "failover",
check = false,
lazy = true,
mock = "fail:return:服务暂时不可用",
providedBy = "user-service-provider"
)
private UserService userService;
```
简单提供一个相对完整的dubbo配置示例
dubbo:
# 应用配置
application:
name: service-consumer # 应用名称(必填)
owner: yzz # 应用负责人
organization: example-org # 组织名称
architecture: web # 架构类型
environment: dev # 环境:dev/test/prod
version: 1.0 # 应用版本
qos-enable: true # 是否启用QoS
qos-port: 22222 # QoS端口
qos-accept-foreign-ip: false # 是否允许远程访问QoS
metadata-type: remote # 元数据类型:local/remote
register-mode: instance # 注册模式:interface/all/instance
service-discovery:
migration: APPLICATION_FIRST # 服务发现迁移策略
# 注册中心配置(单个)
registry:
address: nacos://127.0.0.1:8848 # 注册中心地址
protocol: nacos # 注册中心协议
username: nacos # 用户名
password: nacos # 密码
port: 8848 # 注册中心端口
timeout: 10000 # 超时时间(毫秒)
session: 60000 # 会话超时时间
file: /tmp/registry.cache # 本地缓存文件路径
wait: 3000 # 停止时等待时间
check: true # 启动时检查注册中心是否可用
dynamic: true # 是否动态注册
register: true # 是否注册服务
subscribe: true # 是否订阅服务
simplified: false # 是否简化注册信息
preferred: false # 是否优先使用
zone: default # 区域标识
parameters: # 自定义参数
namespace: c05ac516-4b3d-4462-93e0-de2aedd74dcb
# 多个注册中心配置
registries:
registry1:
address: nacos://127.0.0.1:8848
protocol: nacos
username: nacos
password: nacos
timeout: 10000
check: true
registry2:
address: zookeeper://127.0.0.1:2181
protocol: zookeeper
timeout: 5000
check: false
# 协议配置(单个)
protocol:
name: dubbo # 协议名称:dubbo/tri/rest/hessian等
port: 20880 # 协议端口(-1表示随机端口)
host: 192.168.1.100 # 服务主机名
context path: /api # 上下文路径
threads: 200 # 线程池大小
iothreads: 8 # IO线程数
threadpool: fixed # 线程池类型:fixed/cached/limited
payload: 8388608 # 请求及响应数据包大小限制(8M)
codec: dubbo # 编解码器
serialization: hessian2 # 序列化方式
heartbeat: 60000 # 心跳间隔(毫秒)
accesslog: /tmp/access.log # 访问日志路径
telnet: echo,help,status # 支持的telnet命令
register: true # 是否注册到注册中心
transporter: netty # 网络传输方式
exchanger: header # 信息交换方式
dispatcher: all # 消息分发策略
networker: netty # 网络组件
server: netty # 服务端实现
client: netty # 客户端实现
core threads: 0 # 线程池核心线程数
queues: 0 # 线程池队列大小
alive: 600000 # 线程池存活时间
buffer: 8192 # 缓冲区大小
accepts: 0 # 最大可接受连接数
ssl-enabled: false # 是否启用SSL
# 多协议配置
protocols:
dubbo1:
name: dubbo
port: 20880
threads: 200
payload: 8388608
rest1:
name: rest
port: 8080
server: tomcat
# 服务提供者配置
provider:
version: 1.0.0 # 服务版本
group: user # 服务分组
delay: 0 # 延迟暴露服务时间(毫秒)
timeout: 1000 # 远程服务调用超时时间
retries: 2 # 远程服务调用重试次数
connections: 0 # 每个提供者的最大连接数
load balance: random # 负载均衡策略
async: false # 是否异步执行
sent: false # 是否等待发送成功
mock: false # 是否启用mock
validation: false # 是否启用参数验证
token: false # 令牌验证
registry: registry1,registry2 # 注册中心
dynamic: true # 是否动态注册
accesslog: true # 是否记录访问日志
executes: 100 # 最大可执行请求数
actives: 0 # 最大并发执行数
cache: false # 是否启用缓存
filter: default # 过滤器
listener: default # 监听器
layer: service # 服务层次
register: true # 是否注册服务
warmup: 0 # 预热时间
weight: 100 # 服务权重
document: http://dubbo.apache.org # 服务文档URL
deprecated: false # 是否已废弃
proxy: javassist # 代理方式
cluster: failover # 集群方式
callbacks: 0 # 回调实例个数限制
onconnect: notify # 连接成功时的回调
on disconnect: notify # 断开连接时的回调
owner: yzz # 服务负责人
tag: gray # 服务标签
# 方法级配置示例
methods:
- name: getUserInfo
timeout: 3000
retries: 0
# 服务消费者配置
consumer:
version: 1.0.0 # 服务版本
group: user # 服务分组
timeout: 1000 # 调用超时时间
retries: 2 # 重试次数
load balance: random # 负载均衡策略
async: false # 是否异步调用
sent: false # 是否等待发送成功
mock: false # 是否启用mock
validation: false # 是否启用参数验证
registry: registry1,registry2 # 注册中心
proxy: javassist # 代理方式
client: netty # 客户端实现
connections: 0 # 连接数限制
callbacks: 0 # 回调实例个数限制
cache: false # 是否启用缓存
filter: default # 过滤器
listener: default # 监听器
check: true # 启动时检查服务提供者是否存在
lazy: false # 是否延迟连接
cluster: failover # 集群方式
# 服务引用配置
reference:
com.example.UserService:
version: 1.0.0
group: user
timeout: 3000
retries: 1
loadbalance: leastactive
async: false
sent: true
mock: false
validation: true
token: true
cluster: failfast
# 方法级配置
methods:
- name: getUserInfo
timeout: 5000
retries: 0
loadbalance: random
async: true
mock: force:return:null
cache: lru
validation: false
- name: updateUser
timeout: 10000
retries: 2
loadbalance: roundrobin
# 监控配置
monitor:
protocol: registry # 监控协议:registry/dubbo等
address: monitor://127.0.0.1:7070 # 监控地址
username: monitor # 用户名
password: monitor # 密码
group: dubbo # 监控分组
version: 1.0 # 监控版本
interval: 60000 # 监控上报间隔
# 配置中心配置
config-center:
address: nacos://127.0.0.1:8848 # 配置中心地址
protocol: nacos # 协议
username: nacos # 用户名
password: nacos # 密码
timeout: 3000 # 超时时间
group: dubbo # 分组
namespace: dubbo-config # 命名空间
config-file: dubbo.properties # 配置文件
app-config-file: app.properties # 应用配置文件
highest-priority: true # 是否最高优先级
check: true # 是否检查配置中心
# 元数据中心配置
metadata-report:
address: nacos://127.0.0.1:8848 # 元数据中心地址
username: nacos # 用户名
password: nacos # 密码
timeout: 3000 # 超时时间
group: dubbo # 分组
retry-times: 10 # 重试次数
retry-period: 3000 # 重试周期
cycle-report: true # 是否周期性上报
sync-report: false # 是否同步上报
# SSL配置
ssl:
server-key-password: password # 服务端密钥密码
client-key-password: password # 客户端密钥密码

2265

被折叠的 条评论
为什么被折叠?



