关于配置中timeout,有的服务有时是provider的身份,有时是consumer的身份,配置的timeout属性到底哪个生效,哪个优先,折腾了我一阵子,于是自己测试了半天,总结一下

原则:

1.精度优先(方法级优先,接口级次之,全局配置再次之)

2.消费者设置优先(如果级别一样)

下面简单demo记录下:

用户模块xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><dubbo:provider timeout="2000"/><dubbo:consumer timeout="3000"/><!--loadbalance:负载均衡的一种轮询算法--><bean id="userService" class="com.study.impl.UserServiceImpl"></bean><dubbo:service interface="com.study.service.UserService" ref="userService" loadbalance="roundrobin"/><bean id="authrizationService" class="com.study.impl.AuthrizationServiceImpl"></bean><dubbo:service interface="com.study.service.AuthrizationService" ref="authrizationService" loadbalance="roundrobin"/><!--retries:找不到依赖服务时,不重试--><!--check:启动时不检查依赖服务是否存在--><dubbo:reference id="productService" interface="com.study.service.ProductService" retries="0" check="false"/><dubbo:reference id="saleService" interface="com.study.service.OrderService" retries="0" check="false"/></beans>

<dubbo:provider > 这里的配置表示:UserService,AuthrizationService这两个服务在作为服务提供者的时候,超时时间是2s

<dubbo:consumer 这里的配置表示:ProductService,SaleService这两个服务在作为服务消费者的时候,被调用时的超时时间是3s

商品模块xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd"><dubbo:application name="dubbo_provider"/><dubbo:provider timeout="4000"/><dubbo:consumer timeout="5000"/><bean id="productService" class="com.study.impl.ProductServiceImpl"></bean><dubbo:service interface="com.study.service.ProductService" ref="productService" loadbalance="roundrobin"/><dubbo:reference id="userService" interface="com.study.service.UserService" retries="0" check="false"/></beans>

<dubbo:provider > 这里的配置表示:ProductService这个服务在作为服务提供者的时候,超时时间是4s

<dubbo:consumer 这里的配置表示:UserService这个服务在作为服务消费者的时候,被调用时的超时时间是5s

业务场景1:用户模块UserService调用商品模块ProductService时,整个过程的超时时间又是怎么样的呢?

public class UserServiceImpl
{private ProductService productService;  public void getUser(){this.userMapper.getOne();...this.productService.getProductByUser(); }
}

1.用户模块的UserService是作为provider的身份执行的,UserService本身的超时时间是2s;

2.远程调用的商品模块的ProductService的超时时间是2s还是4s还是5s呢?答案是2s,同一级别下调用,consumer的配置优先

思考:如果这里用户模块的<dubbo:consumer不设置超时时间,那么远程调用的商品模块的ProductService是多少呢?答案是4s,如果远程调用的商品模块不设置<dubbo:provider,这里超时时间就会缺省,就是找不到配置的,就会以默认超时时间1s为准。

业务场景2:商品模块ProductService调用用户模块UserService时,整个过程的超时时间又是怎么样的呢?

public class ProductServiceImpl
{private UserService userService;public void getProduct(){this.productMapper.getOne();...this.userService.getUserByProduct();}
}

1.商品模块的ProductService是作为provider的身份执行的,ProductService本身的超时时间是4s;

2.远程调用的用户模块的UserService的超时时间是2s还是4s还是5s呢?答案是5s,同一级别下调用,consumer的配置优先

思考:如果这里商品模块的<dubbo:consumer不设置超时时间,那么远程调用的用户模块的UserService是多少呢?答案是2s,如果远程调用的用户模块不设置<dubbo:provider,这里超时时间就会缺省,就是找不到配置的,就会以默认超时时间1s为准。

最后说一句:除了timeout属性是这样的优先级规则,retries等其他配置也是这样

Dubbo关于timeout等相关配置的优先级相关推荐

  1. dubbo provider异步_Dubbo相关面试题

    金九银十的面试季节,最近我会多发一些面试题相关的文章,因为墨白也要开始找工作了大家一起加油哈 ! ! ! Dubbo是什么? 答∶Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布式服务 ...

  2. nginx的全局配置和HTTP相关配置

    目录 资源类型: 网站访问量 网站访问量统计的重要指标 HTTP1.0和1.1的问题 HTTP2协议 HTTP 请求访问的完整过程 HTTP 请求报文 http协议状态码分类 http协议常用的!!状 ...

  3. 精尽 Dubbo 源码分析 —— API 配置

    1. 概述 Dubbo 的配置目前提供了四种配置方式:1. API 配置 2. 属性配置 3. XML 配置 4. 注解配置 2. 配置一览 我们来看看 dubbo-config-api 的项目结构, ...

  4. dubbo的 timeout 与 retries

    一.问题描述: dubbo消费者端向 dubbo 服务提供者端发起RPC远程调用,服务提供者端任务正常执行,但是却执行了3次.后来发现,虽然 provider 端程序正常执行,但是执行超时了,此时,c ...

  5. Nginx防盗链,Nginx访问控制, Nginx解析php相关配置, Nginx代理

    2019独角兽企业重金招聘Python工程师标准>>> Nginx防盗链 Nginx防盗链配置需要与不记录日志和过期时间结合在一起,因为都用到了location. 打开配置文件,注释 ...

  6. dubbo学习(四)配置dubbo 注解方式配置

    provider service注解暴露服务 @Service public class AnnotationServiceImpl implements AnnotationService {@Ov ...

  7. 深入探究.Net Core Configuration读取配置的优先级

    前言 在之前的文章.Net Core Configuration源码探究一文中我们曾解读过Configuration的工作原理,也.Net Core Configuration Etcd数据源一文中探 ...

  8. Redis:21---客户端相关配置篇

    一.客户端相关配置 ①客户端的限制maxclients Redis提供了maxclients参数来限制最大客户端连接数,一旦连接数超过 maxclients,新的连接将被拒绝 maxclients默认 ...

  9. dubbo快速实战(非最佳配置,演示用)

    一.目标: 由于培训需要演示dubbo的快速实战,因此有了本文,再次声明,本文不是最佳配置. 使用dubbo,构建一个provider提供视频信息服务,一个consumer获取视频信息服务并调用. 文 ...

最新文章

  1. C++ OP相关注意事项
  2. php文件内含有隐藏的^m字符,【整理】如何取消Linux下,vi中显示的^M符号
  3. 再发布一个windows live writer 插件 图标信息框 wlw plugin icon info frame
  4. 三十八、判断服务是否运行及定位问题
  5. 用defy来潜水最终还是挂了........
  6. 【自动驾驶】定位方式:RTK定位与激光融合定位
  7. stl-优先队列priority_queue
  8. ae 创建图像等高线 蒙版_如何用AE创建简单的UI动效
  9. python define function的顺序_Python怎么根据一个函数来决定列表顺序
  10. BGP——重分发注意点(总结+配置)
  11. talentcentral测评结果_人才测评报告
  12. 《善用佳软:高效能人士的软件应用之道》一2.5 PDF:跨平台文档解决方案
  13. 如何用两个栈实现一个队列
  14. Incorrect string value: '\xF0\x9F\x91\x80' for column数据库中添加表情报错
  15. runtime error错误
  16. 蓝狐笔记:DeFi现在仍处在初级阶段 | FBEC 2020特别策划
  17. 在北京注册科技类公司的经历(一):名称预审
  18. 谁说手工测试不香了?25k不比二流的开发美滋滋
  19. [javascript] js删除数组中的元素
  20. JavaWeb开发与代码的编写(一)

热门文章

  1. C++自学07:字符串(char/string/wchar_t/char16_t/char32_t)
  2. fonts.googleapis.com加载过慢导致的项目启动过慢的问题
  3. sql between包括两端吗_sql:简单查询
  4. php end array_value,PHP常用处理数组函数
  5. 电暖器选购指南(包括暖风机)
  6. Eclipse搭建springboot项目(六)全局异常
  7. linux工具-journalctl查询日志
  8. lc 297. Serialize and Deserialize Binary Tree
  9. 前端页面数据埋点、分析和参考
  10. hexo博客出现“Cannot GET/xxxx”的错误