问题引出,从dubbo2升级到了dubbo3版本,出现了一些消费方调用超时的现象,通过日志发现异常信息中的timeout竟然是1000ms,明明在暴漏接口的时候指定了超时时间,为什么没有生效。

经过debug分析调试后,找到了timeout无法获取预期值的源头,同时发现了两个关键可疑点:

  • 从可疑点一,仔细研读计算超时时间的方法,挖掘出Dubbo配置的四层覆盖关系,最终我们巧妙利用不同层级的特性,解决了超时时间失效的问题。
  • 从可疑点二中,发现类名使用了新版本的服务发现类进行了远超调用,联想到了应用级注册和接口级注册的因素,最终找到了解决失效时间的解决方案。

消费方在发起远超调用时,超时时间的逻辑:

  • 首先,整体分为三大块,分别为方法级别、服务级别、实例级别。
  • 然后在每一块内部,按照先消费方后提供方的顺序进行取值。

四个层级关系:

  • System Properties,最高优先级,一般会在启动命令中通过JVM的-D参数进行指定。
  • Externalized Configuration,优先级次之,外部化配置,可以直接从统一的配置中心加载配置。
  • API/XML/注解,优先级再次之,开发直接写在代码中的一些配置。
  • Local File,优先级最低,一般是项目中默认的一份基础配置,当前边三个层级都没配置的时候会读取。

学习来源:极客时间 《Dubbo源码剖析与实战》学习笔记

Dubbo配置加载问题相关推荐

  1. Dubbo(十)之配置加载流程

    转载自  Dubbo配置加载流程 Dubbo 中的配置加载流程介绍 此篇文档主要讲在应用启动阶段,Dubbo框架如何将所需要的配置采集起来(包括应用配置.注册中心配置.服务配置等),以完成服务的暴露和 ...

  2. Soul网关源码阅读(九)插件配置加载初探

    Soul网关源码阅读(九)插件配置加载初探 简介     今日来探索一下插件的初始化,及相关的配置的加载 源码Debug 插件初始化     首先来到我们非常熟悉的插件链调用的类: SoulWebHa ...

  3. 关于flume配置加载(二)

    为什么翻flume的代码,一方面是确实遇到了问题,另一方面是想翻一下flume的源码,看看有什么收获,现在收获还谈不上,因为要继续总结.不够已经够解决问题了,而且确实有好的代码,后续会继续慢慢分享,这 ...

  4. 3springboot:springboot配置文件(外部配置加载顺序、自动配置原理,@Conditional)

    1.外部配置加载顺序 SpringBoot也可以从以下位置加载配置: 优先级从高到低 高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置  1.命令行参数 所有的配置都可以在命令行上进行指定 ...

  5. 配置文件加载位置||外部配置加载顺序||自动配置原理

    配置文件加载位置 SpringBoot会从这四个位置全部加载主配置文件:互补配置: 外部配置加载顺序 自动配置原理 1.自动配置原理: 1).SpringBoot启动的时候加载主配置类,开启了自动配置 ...

  6. Spring boot外部配置加载顺序

    外部配置加载顺序 Spring boot 可以从以下位置加载配置 优先级从高到低 高优先级的配置,覆盖低优先级的配置 所有的配置,会形成互补配置 官网,给出了17个位置 这里,只介绍常用的11个位置 ...

  7. 对集合变量定义赋值_SpringBoot配置加载原理(自定义加载配置)

    前言 在SpringBoot应用程序中会有很多的地方定义配置文件,如: bootstrap.properties application.properties 或者是SpringCloud中定义的远程 ...

  8. SpringBoot_配置-外部配置加载顺序

    接下来我们再来看SpringBoot的一个特点,外部配置的加载顺序,也就是说,SpringBoot我们要写一些配置,配置可以写在我们的配置文件,application.properties,放到类路径 ...

  9. 二、SpringBoot配置-简述配置加载原理

    springboot使用一个全局配置文件 application.properties application.yml 配置文件放在src/main/resources目录或者类路径/config下 ...

最新文章

  1. 腾讯获赔 475 万!首例“微信自动抢红包”不正当竞争案宣判
  2. python解析json_python解析json文件
  3. 太难了!产品经理想拿高薪
  4. Hashtable学习笔记
  5. TensorFlow的基本介绍及Hello,world
  6. 21届校招应届生Offer薪资曝光:年薪35万+,倒挂老员工:我还没有应届生重要
  7. JAVA 反射机制 获得 private 变量
  8. nodejs redis 发布订阅_Redis 发布订阅,小功能大用处,真没那么废材
  9. Android使用拖拽控件来布局界面并展示
  10. nacos启动报错 db.num is null【已解决】
  11. 联邦学习(Federated Learning)学习小记
  12. MacOS安装git
  13. 【训练记录】2013-2014 Petrozavodsk Winter Training Camp, Moscow SU Trinity Contest @homework-7
  14. cpu第几代计算机,怎么看cpu是几代的,来看看你的CPU是几代的?
  15. 前端理解base64
  16. 健康生活无需等待,松下罗密欧系列洗衣机守护你的四月天
  17. python opencv-11图像像素归一化
  18. 打开IDE里XXX.rc文件夹的子项,显示“!加载失败”
  19. ubuntu显示ip为127.0.0.1
  20. scholarscope不显示影响因子_科研神器Scholarscope

热门文章

  1. python自动剪视频_python剪切视频与合并视频的实现
  2. 计算机毕设(附源码)JAVA-SSM化妆品销售网站
  3. OpenCV - imwrite保存透明PNG
  4. 深入理解MySQL核心技术
  5. 什么样的程序员才算得上优秀,把导师曾对我说的话送给大家(比代码更重要的事)
  6. MoveIt! RViz Visual Tools设置
  7. Microsoft Edge浏览器不显示收藏夹栏 解决方法
  8. 3、核对单《数据收集工具与技术》
  9. Php运行lpush失败,php苹果推送APNS push常用出错和解决方法
  10. 百科系统php,HDwiki与PHPCMS联合推出开源中文Wiki系统