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系列之常用配置用法简介的更多相关文章

  1. SpringBoot系列之外部配置用法简介

    SpringBoot系列之外部配置用法简介 引用Springboot官方文档的说法,官方文档总共列举了如下用法: 1.Devtools global settings properties on yo ...

  2. SpringBoot系列之@Conditional注解用法简介

    SpringBoot系列之@Conditional注解用法简介 引用Spring官方文档的说法介绍一下@Conditional注解:Spring5.0.15版本@Conditional注解官方文档 @ ...

  3. SpringBoot系列之YAML配置用法

    1.全局配置 SpringBoot的全局配置文件有两种: application.properties application.yml 配置文件的作用:修改SpringBoot自动配置的默认值,主要是 ...

  4. 初识Dubbo 系列之6-Dubbo 配置

    配置 Xml配置 配置项说明 具体配置项,请參见:配置參考手冊 (+) API使用说明 假设不想使用Spring配置.而希望通过API的方式进行调用,请參见:API配置 (+) 配置使用说明 想知道怎 ...

  5. SpringBoot系列之@PropertySource用法简介

    SpringBoot系列之@PropertySource用法简介 继上篇博客:SpringBoot系列之@Value和@ConfigurationProperties用法对比之后,本博客继续介绍一下@ ...

  6. 【转】logback 常用配置详解(序)logback 简介

    原创文章,转载请指明出处:http://aub.iteye.com/blog/1101222, 尊重他人即尊重自己 详细整理了logback常用配置, 不是官网手册的翻译版,而是使用总结,旨在更快更透 ...

  7. SpringBoot常用配置简介

    SpringBoot常用配置简介 1. SpringBoot中几个常用的配置的简单介绍 一个简单的Spring.factories # Bootstrap components org.springf ...

  8. logback常用配置详解及logback简介

    logback 简介(一) Ceki Gülcü在Java日志领域世界知名.他创造了Log4J ,这个最早的Java日志框架即便在JRE内置日志功能的竞争下仍然非常流行.随后他又着手实现SLF4J 这 ...

  9. MyWebViewDemo【封装Webview常用配置和选择文件、打开相机、录音、打开本地相册的用法】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 封装webview的常用配置和选择文件.打开相机.录音.打开本地相册的用法.[如果想要使用简单的预览功能,可以参考<MyBri ...

  10. dubbo的常用配置(基于注解)

    之前记录了基于springboot的dubbo入门案例,今天在此基础上记录dubbo官网介绍的常用属性配置,dubbo读取我们配置的属性时是有优先级的,优先级如下图: 如图所示,优先级的属性依次为虚拟 ...

随机推荐

  1. C#8.0,9.0,10.0常见新语法学习

    顶级语句 (1)一个项目最多只能有一个文件具有顶级语句,就是直接写代码,如果存在多个,则会报错, (2)如果顶级语句和Main共存,则只调用顶级语句 (3)如果没有顶级语句,则必须有Main 简化us ...

  2. docker-compose用法

    以下的示例搭建龙一个wordpress博客 services: mysql: image: mysql:latest environment: - MYSQL_ROOT_PASSWORD=123456 ...

  3. 构建基于Serverless架构的向量检索MCP Server

    构建基于Serverless架构的向量检索MCP Server 随着LLM与Agent的快速发展,向量检索成为构建高效语义搜索和智能推荐系统的关键技术之一.OpenSearch Service 作为一 ...

  4. linux系统自定义登录提示信息

    centos7配置说明 这里对于centos7.x系统,可以直接编辑/etc/motd文件,增加定制的提示信息,并可以通过不同颜色展示. vim /etc/motd ^[[32m 设备IP地址: 10 ...

  5. kubernetes之Ingress工作原理

    一.kubernetes集群外部访问的方式 在kubernetes集群中,如果外部的应用需要访问集群内部的服务,可以通过NodePort Service.LoadBalancer Service.In ...

  6. wso2~api生命周期与关联事件

    api生命周期 CREATED 建立 PRE-RELEASED 预发布 PUBLISHED 发布 DEPRECATED 删除 BLOCKED 冻结 RETIRED 退役 状态为Published的ap ...

  7. APEX实战第4篇:如何把APEX程序变成“移动端APP”?

    因为使用手机登录APEX程序时,每次都要先到手机浏览器的入口感觉不方便且不专业,所以能不能像APP那样直接点击进入呢? 最简单的方式,就是使用PWA来实现类似APP程序一样的移动端登录. PWA本身配 ...

  8. XXL-JOB v3.1.1 | 分布式任务调度平台(Dify工作流调度增强)

    Release Notes 1.[调整]AI任务(difyWorkflowJobHandler)优化:针对 "baseUrl.apiKey" 等Dify配置信息,从执行器侧文件类配 ...

  9. ET6.0运行Demo和工具使用

    环境:Mac + Rider + ET6.0 一:运行Demo 1:下载ET6.0,get:https://github.com/egametang/ET 2:下载.net core 5.0.ET6. ...

  10. Electron 办公党的摸鱼神器

    概要 俗话说水生金,摸鱼 = 水,得出定式摸鱼 ≈ 生金. 下面提到的项目我已经开源,发布在 gitee,检索 fish-ads-app 可以查看. 正文 前段时间刷小红薯看到一些将桌面背景改为客厅的 ...