Dubbo系列之常用配置用法简介

举报
yd_273762914 发表于 2020/12/02 00:13:06 2020/12/02
【摘要】 Dubbo系列之常用配置用法简介 1、配置原则 配置原则,引用官方的图片: JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.p...

Dubbo系列之常用配置用法简介

1、配置原则

配置原则,引用官方的图片:
在这里插入图片描述

  • JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口。
  • XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的相应配置项无效。
  • Properties 最后,相当于缺省值,只有 XML 没有配置时,dubbo.properties 的相应配置项才会生效,通常用于共享公共配置,比如应用名。

2、重试次数

接口调用失败,可通过 retries属性 来设置重试次数(注意:不含第一次)

  • 服务接口
<dubbo:service retries="2" />

  
 
  • 1

或者@Server(retries=2)

  • 引用服务
<dubbo:reference retries="2" />

  
 
  • 1

或者@Reference(retries=2)

  • 全局设置
<dubbo:reference> <dubbo:method name="testMethod" retries="2" />
</dubbo:reference>

  
 
  • 1
  • 2
  • 3

3、超时时间

为了避免超时导致客户端资源(线程)因为接口调用时间过长而影响系统性能,需要配置必要的超时时间

  • provider配置
  • 全局的配置
<dubbo:provider timeout="5000" />

  
 
  • 1

指定接口或者方法的配置

<dubbo:provider interface="com.example.TestService" timeout="4000"> <dubbo:method name="sayHello" timeout="4000" />
</dubbo:provider>

  
 
  • 1
  • 2
  • 3

注解方式同理

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

  
 
  • 1

指定接口和方法

<dubbo:reference interface="com.example.TestService" timeout="4000"> <dubbo:method name="sayHello" timeout="4000" />
</dubbo:reference>

  
 
  • 1
  • 2
  • 3

超时就会抛出异常:
在这里插入图片描述
从前面的分析可以看出,配置可以全局配置,也可以分为服务提供者和消费者进行配置,不过配置是有优先级的,按照优先级,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" />

  
 
  • 1

2.0.0接口

<dubbo:service interface="com.foo.BarService" version="2.0.0" />

  
 
  • 1

调用时候同样加上版本号即可

5、本地存根

引用官方的本地存根解释:

远程服务后,客户端通常只剩下接口,而实现全在服务器端,但提供方有些时候想在客户端也执行部分逻辑,比如:做 ThreadLocal 缓存,提前验证参数,调用失败后伪造容错数据等等,此时就需要在 API 中带上 Stub,客户端生成 Proxy 实例,会把 Proxy 通过构造函数传给 Stub [1],然后把 Stub 暴露给用户,Stub 可以决定要不要去调 Proxy。

在这里插入图片描述
使用非常容易,加上stub属性即可

<dubbo:service interface="com.foo.BarService" stub="true" />

  
 
  • 1

官方的实例:

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 "容错数据"; } }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

详情参考官方文档: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

文章来源: smilenicky.blog.csdn.net,作者:smileNicky,版权归原作者所有,如需转载,请联系作者。

原文链接:smilenicky.blog.csdn.net/article/details/103876398

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。