Dubbo配置方式
1.注解: 基于注解可以快速的将程序配置,无需多余的配置信息,包含提供者和消费者。弊端是根据配置信息无法快速定位。
- XML:和Spring做结合,相关的Service和Reference均使用Spring集成后的。通过这样的方式可以很方便的通过几个文件进行管理整个集群配置。可以快速定位也可以快速更改。
3.基于代码方式: 基于代码方式的对上述配置进行配置。
dubbo:application配置
代表当前应用的信息
-
name: 当前应用程序的名称,在dubbo-admin中我们也可以看到,这个代表这个应用名称。我们在真正时是时也会根据这个参数来进行聚合应用请求。
-
owner: 当前应用程序的负责人,可以通过这个负责人找到其相关的应用列表,用于快速定位到责任人。
-
qosEnable : 是否启动QoS 默认true
-
qosPort : 启动QoS绑定的端口 默认22222
-
qosAcceptForeignIp: 是否允许远程访问 默认是false
注解方式![]
(https://img2024.cnblogs.com/blog/3476084/202503/3476084-20250306213740404-629533682.png)
dubbo:registry配置
代表该模块所使用的注册中心
-
id : 当前服务中provider或者consumer中存在多个注册中心时,则使用需要增加该配置。在一 些公司,会通过业务线的不同选择不同的注册中心,所以一般都会配置该值。
-
address : 当前注册中心的访问地址。
-
protocol : 当前注册中心所使用的协议是什么。也可以直接在 address 中写入,比如使用 zookeeper,就可以写成 zookeeper://xx.xx.xx.xx:2181
-
timeout : 当与注册中心不再同一个机房时,大多会把该参数延长。
dubbo:protocol配置
指定服务在进行数据传输所使用的协议
-
id : 在大公司,可能因为各个部门技术栈不同,所以可能会选择使用不同的协议进行交互。这里 在多个协议使用时,需要指定。
-
name : 指定协议名称。默认使用 dubbo 。
dubbo:service配置
指定当前需要对外暴露的服务信息
-
interface : 指定当前需要进行对外暴露的接口是什么。
-
ref : 具体实现对象的引用,一般我们在生产级别都是使用Spring去进行Bean托管的,所以这里面 一般也指的是Spring中的BeanId。
-
version : 对外暴露的版本号。不同的版本号,消费者在消费的时候只会根据固定的版本号进行消 费。
dubbo:reference配置
消费者的配置
-
id : 指定该Bean在注册到Spring中的id。
-
interface: 服务接口名
-
version : 指定当前服务版本,与服务提供者的版本一致。
-
registry : 指定所具体使用的注册中心地址。这里面也就是使用上面在dubbo:registry中所声明的id。
dubbo:consumer设置
-
mock: 用于在方法调用出现错误时,当做服务降级来统一对外返回结果,后面我们也会对这个方 法做更多的介绍。
-
timeout: 用于指定当前方法或者接口中所有方法的超时时间。我们一般都会根据提供者的时长来 具体规定。比如我们在进行第三方服务依赖时可能会对接口的时长做放宽,防止第三方服务不稳定 导致服务受损。
-
check: 用于在启动时,检查生产者是否有该服务。我们一般都会将这个值设置为false,不让其进 行检查。因为如果出现模块之间循环引用的话,那么则可能会出现相互依赖,都进行check的话, 那么这两个服务永远也启动不起来。
-
retries: 用于指定当前服务在执行时出现错误或者超时时的重试机制,重试次数。
-
注意提供者是否有幂等,否则可能出现数据一致性问题
-
注意提供者是否有类似缓存机制,如出现大面积错误时,可能因为不停重试导致雪崩
-
executes: 用于在提供者做配置,来确保最大的并行度,熔断处理。
-
可能导致集群功能无法充分利用或者堵塞
-
但是也可以启动部分对应用的保护功能
-
可以不做配置,结合后面的熔断限流使用
dubbo:method配置
XML中独有,指定具体方法级别在进行RPC操作时候的配置。
-
name : 指定方法名称,用于对这个方法名称的RPC调用进行特殊配置。
-
async: 是否异步 默认false