09第二章:(3)Dubbo 常用配置之 超时&配置覆盖关系

本文详细介绍了Dubbo中超时时间的配置,包括消费端接口和方法级别的设置、服务端全局配置,以及不同粒度配置间的覆盖关系。服务提供者应负责设置合理超时,以确保服务性能。
摘要由CSDN通过智能技术生成

一、超时时间

由于网络或服务端不可靠,会导致调用出现一种不确定的中间状态(超时)。为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间。

1、Dubbo 消费端

指定接口以及特定方法超时配置
<!--
    属性覆盖规则
    以 timeout 为例:
    1)精确优先 (方法级优先,接口级次之,全局配置再次之)
    2)消费者设置优先(如果级别一样,则消费方优先,提供方次之)
-->
<dubbo:reference interface="com.njf.gmall.service.UserService"
                 id="userService" check="false" timeout="4000">
    <dubbo:method name="getUserAddressList" timeout="1000"></dubbo:method>
</dubbo:reference>

<!-- 配置当前消费者的统一规则,所有的服务都不检查-->
全局超时配置
<dubbo:consumer check="false" timeout="5000"></dubbo:consumer>

2、Dubbo 服务端

全局超时配置
<dubbo:provider timeout="5000" />

指定接口以及特定方法超时配置
<dubbo:provider interface="com.foo.BarService" timeout="2000">
    <dubbo:method name="sayHello" timeout="3000" />
</dubbo:provider>

二、配置之间的关系

三、不同粒度配置的覆盖关系

以 timeout 为例,下图显示了配置的查找顺序,其它 retries, loadbalance, actives 等类似:

  • 方法级优先,接口级次之,全局配置再次之。
  • 如果级别一样,则消费方优先,提供方次之。

其中,服务提供方配置,通过 URL 经由注册中心传递给消费方。

配置的覆盖规则:

  1. 方法级配置别优于接口级别,即小 Scope 优先
  2. Consumer 端配置 优于 Provider 配置 优于 全局配置,
  3. 最后是 Dubbo Hard Code 的配置值(见配置文档)

dubbo 推荐在 Provider 上尽量多配置 Consumer 端属性

1、作服务的提供者,比服务使用方更清楚服务性能参数,如调用的超时时间,合理的重试次数,等等

2、在 Provider 配置后,Consumer 不配置则会使用 Provider 的配置值,即 Provider 配置可以作为 Consumer 的缺省值。否则,Consumer
会使用 Consumer 端的全局设置,这对于 Provider 不可控的,并且往往是不合理的

(建议由服务提供方设置超时,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要关心每个服务的超时设置)。

理论上 ReferenceConfig 中除了 interface 这一项,其他所有配置项都可以缺省不配置,框架会自动使用
ConsumerConfig,ServiceConfig, ProviderConfig 等提供的缺省配置。

1、2.1.0 开始支持,注意声明:xmlns:p=“http://www.springframework.org/schema/p”

2、引用缺省是延迟初始化的,只有引用被注入到其它 Bean,或被 getBean()
获取,才会初始化。如果需要饥饿加载,即没有人引用也立即生成动态代理,可以配置:<dubbo:reference … init=“true” />

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值