Dubbo系列之常用配置用法简介
Dubbo系列之常用配置用法简介
1、配置原则
配置原则,引用官方的图片:

- JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。
- XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。
- Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。
2、重试次数
接口调用失败,可通过 retries属性 来设置重试次数(注意:不含第一次)
- 服务接口
<dubbo:service retries="2" />
或者@Server(retries=2)
- 引用服务
<dubbo:reference retries="2" />
或者@Reference(retries=2)
- 全局设置
<dubbo:reference>
<dubbo:method name="testMethod" retries="2" />
</dubbo:reference>
3、超时时间
为了避免超时导致客户端资源(线程)因为接口调用时间过长而影响系统性能,需要配置必要的超时时间
- provider配置
- 全局的配置
<dubbo:provider timeout="5000" />
指定接口或者方法的配置
<dubbo:provider interface="com.example.TestService" timeout="4000">
<dubbo:method name="sayHello" timeout="4000" />
</dubbo:provider>
注解方式同理
- consumer配置
全局超时配置
<dubbo:consumer timeout="5000" />
指定接口和方法
<dubbo:reference interface="com.example.TestService" timeout="4000">
<dubbo:method name="sayHello" timeout="4000" />
</dubbo:reference>
超时就会抛出异常:

从前面的分析可以看出,配置可以全局配置,也可以分为服务提供者和消费者进行配置,不过配置是有优先级的,按照优先级,dubbo官方给出了如下的顺序,按照优先级从高到低分别为:

其实也就是官方归纳的:
- 方法级优先,接口级次之,全局配置再次之。
- 如果级别一样,则消费方优先,提供方次之。
4、版本号
dubbo也提供了版本号的配置,目的是为了兼容旧接口,假如新开发了2.0版本的接口,而1.0接口还是有很多地方在调用的,或者是2.0接口还不太稳定等等情况,就可以使用版本设置,然后调用时候要加上版本号即可调用对应版本号的接口
官方的介绍是:
当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
可以按照以下的步骤进行版本迁移:
在低压力时间段,先升级一半提供者为新版本
再将所有消费者升级为新版本
然后将剩下的一半提供者升级为新版本
详情参考官方文档:http://dubbo.apache.org/zh-cn/docs/user/demos/multi-versions.html
1.0.0接口
<dubbo:service interface="com.foo.BarService" version="1.0.0" />
2.0.0接口
<dubbo:service interface="com.foo.BarService" version="2.0.0" />
调用时候同样加上版本号即可
5、本地存根
引用官方的本地存根解释:
远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub [1],然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy。

使用非常容易,加上stub属性即可
<dubbo:service interface="com.foo.BarService" stub="true" />
官方的实例:
package com.foo;
public class BarServiceStub implements BarService {
private final BarService barService;
// 构造函数传入真正的远程代理对象
public BarServiceStub(BarService barService){
this.barService = barService;
}
public String sayHello(String name) {
// 此代码在客户端执行, 你可以在客户端做ThreadLocal本地缓存,或预先验证参数是否合法,等等
try {
return barService.sayHello(name);
} catch (Exception e) {
// 你可以容错,可以做任何AOP拦截事项
return "容错数据";
}
}
}
详情参考官方文档:http://dubbo.apache.org/zh-cn/docs/user/demos/local-stub.html
dubbo的官方文档还是比较详细的,本博客仅仅列举一小部分,内容肯定不够详细,具体使用请参考dubbo官方文档:http://dubbo.apache.org/zh-cn/docs/user/quick-start.html
Dubbo系列之常用配置用法简介的更多相关文章
- SpringBoot系列之外部配置用法简介
SpringBoot系列之外部配置用法简介 引用Springboot官方文档的说法,官方文档总共列举了如下用法: 1.Devtools global settings properties on yo ...
- SpringBoot系列之@Conditional注解用法简介
SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...
- SpringBoot系列之YAML配置用法
1.全局配置 SpringBoot的全局配置文件有两种: application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值,主要是 ...
- 初识Dubbo 系列之6-Dubbo 配置
配置 Xml配置 配置项说明 具体配置项,请參见:配置參考手冊 (+) API使用说明 假设不想使用Spring配置.而希望通过API的方式进行调用,请參见:API配置 (+) 配置使用说明 想知道怎 ...
- SpringBoot系列之@PropertySource用法简介
SpringBoot系列之@PropertySource用法简介 继上篇博客:SpringBoot系列之@Value和@ConfigurationProperties用法对比之后,本博客继续介绍一下@ ...
- 【转】logback 常用配置详解(序)logback 简介
原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...
- SpringBoot常用配置简介
SpringBoot常用配置简介 1. SpringBoot中几个常用的配置的简单介绍 一个简单的Spring.factories # Bootstrap components org.springf ...
- logback常用配置详解及logback简介
logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这 ...
- MyWebViewDemo【封装Webview常用配置和选择文件、打开相机、录音、打开本地相册的用法】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装webview的常用配置和选择文件.打开相机.录音.打开本地相册的用法.[如果想要使用简单的预览功能,可以参考<MyBri ...
- dubbo的常用配置(基于注解)
之前记录了基于springboot的dubbo入门案例,今天在此基础上记录dubbo官网介绍的常用属性配置,dubbo读取我们配置的属性时是有优先级的,优先级如下图: 如图所示,优先级的属性依次为虚拟 ...
随机推荐
- codeup之字符串求最大值
Description 从键盘上输入3个字符串,求出其中最大者. Input 输入3行,每行均为一个字符串. Output 一行,输入三个字符串中最大者. Sample Input Copy Engl ...
- Intellij Idea 通过svn或者git提交代码时速度慢的解决办法
问题分析:在使用 IntelliJ IDEA 操作Git的时候,Git响应速度特别满,等待差不多10秒.甚至更长时间才完成操作,真是等的花儿都谢了. 解决方案:更改IntelliJ IDE ...
- Spring Boot项目基于POI框架导出Excel表格
1. 依赖 我的项目是基于Spring Boot的,这里只贴出POI框架需要依赖的两个包,其他的都无所谓,只要能提供Controller让浏览器访问即可.在pom.xml配置文件中增加如下两个包 ...
- 洛谷P4643 [国家集训队]阿狸和桃子的游戏 & 初赛心情
洛谷P4643 [国家集训队]阿狸和桃子的游戏 引入 其实是道小水题,没有那么多的数据结构和卡常.但是我就是喜欢这种题!giao! (希望这道题不要变色啊--这可是我a的第一道黑题啊啊啊-- 蒟蒻的心 ...
- 一个老程序员, 两个小时能用corsur做出什么样的东西
背景 最近cosur太火了, 很多没开发背景的人也直接说0基础建站了, 互联网项目的门槛越高越低. 第一次看到一个行业拼命卷自己的. 作为一个16年的老程序员了, 肯定得试试这款颠覆性的产品. 在上 ...
- java练习题之String字符串
1 编写程序将"jdk" 全部变成大写 并输出到屏幕 截取"DK"并输出到屏幕 1 package com.lv.study.am.first; 2 3 pu ...
- [2024.10.27鲜花/csp后记?/rain] 夢をみせて
[2024.10.27鲜花/csp后记?] 夢をみせて \(csp\)这周非常涨\(rp\)的,牙龈肿了,可能是牙周炎,总之又去了趟医院,自高中后,12.2,刚刚被月轮踩出的数字,很有趣,也许什么时候 ...
- C++ map容器 学习总结
-----------------------------------------------map/multimap容器 map/multimap特性 map相对于set区别,map具有键值和实值, ...
- paddle训练安装
这里共有三个模块安装部署与训练.版面区域检测.文本检测.文本识别. 一.版面区域检测模块训练 说明:训练这里只需要用到paddlepaddle.paddlex.所以ocr这里不安装. 以下为CPU安装 ...
- openwrt 加上开源库
因为openwrt 自身带有很多的开源库,所以当你想要增加一个开源库的时候不妨去看一下,openwrt的库 首先在 1 . openwrt/package/项目名称/项目名称/Makefile + 上 ...