启动检查设置

Dubbo缺省会在启动时检查依赖的服务是否可用,不可用会抛出异常,阻止Spring初始化完成,默认check=“true”;是开启检查。

比如测试的时候,有些服务并不关心,或者出现了循环依赖,必须有一方先启动。
此时可以通过设置 check=“false”

配置方式可以通过Spring配置文件

关闭 某个服务没启动时会报错

<dubbo:reference interface="com.foo.BarService" check="false" />

关闭所有服务启动时检查

<dubbo:consumer check="false" />

关闭注册中心启动时检查

<dubbo registry check="false"/>

通过dubbo.properties

dubbo.reference.com.foo.BarService.check=false
dubbo.reference.check=false
dubbo.consumer.check=false
dubbo.registry.check=false

超时设置

配置的覆盖关系

以超时设置为例 timeout默认是1000ms 也就是1秒,可以在全局消费者、全局提供者、消费者的方法,提供者的方法、消费者的引用,提供者的服务都可以指定超时参数。如果方法中线程等待的时间或者方法执行的时间大于超时时间就会抛出超时异常。

如果各个级别都设置了超时时间,覆盖关系(优先级)遵循以下两个原则

  • 方法级优先,接口级次之,全局配置再次之。(精确优先)
  • 如果级别一样,则消费者优先,提供者次之。(在同级别下消费者优先于提供者)
    具体的优先级顺序参考官网给的图

建议服务提供方设置超时时间,因为一个方法需要执行多长时间,服务提供方更清楚,如果一个消费方同时引用多个服务,就不需要惯性每个服务的超时设置

重试次数

一般开发中,超时等待和重试次数组合起来使用。属性retries 类型是int,可选值,默认是重试2次,作用是性能调优,远程服务调用重试次数,不包括第一次调用,不需要重试请设为0,仅在cluster为failback/failover时有效。

例如:对于请求调用一个远程服务,超时时间设置的很短,过程中又有线程阻塞或者等待的时间超过了超时时间。因此可以设置重试次数,当首次调用失败还会再重新请求调用其他的远程服务 n 次,n 代表你设置retries属性的值。

什么时候需要设置retries属性

当本次操作满足幂等性时 才能设置重试次数,默认是2次,0代表不重试。

  • 幂等性:无论操作多少次,对最终结果没有影响。【删除、修改、查询】
  • 非幂等性:每次操作都会影响最后的结果。【新增操作】

本地存根

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

Stub的实现例子

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

需要注意的是:Stub必须有可传入Proxy的构造函数。

在Spring配置文件中按照以下方式


<dubbo:service interface="com.foo.BarService" stub="true" />
<!--或者-->
<dubbo:service interface="com.foo.BarService" stub="com.foo.BarServiceStub" />

dubbo配置启动时检查的更多相关文章

  1. dubbo之启动时检查

    启动时检查 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认 check="true".所以可以通过 ...

  2. dubbo的启动时检查

    修改的消费者(xml) 修改的消费者(注解)

  3. dubbo启动时检查服务

    Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true". 可以通过 che ...

  4. Dubbo启动时检查

    Dubbo在启动时会检查服务提供者所提供的服务是否可用,默认为True. (1).单个服务关闭启动时检查(check属性置为false) 1).基于xml文件配置方式 <!--3.声明需要调用的 ...

  5. Dubbo -- 系统学习 笔记 -- 示例 -- 启动时检查

    示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 启动时检查 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发 ...

  6. Dubbo学习-8-dubbo启动时检查

    启动时检查的作用如下: (1)Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true& ...

  7. Dubbo入门到精通学习笔记(十一):Dubbo服务启动依赖检查、Dubbo负载均衡策略、Dubbo线程模型(结合Linux线程数限制配置的实战分享)

    文章目录 Dubbo服务启动依赖检查 Dubbo负载均衡策略 Dubbo线程模型(结合Linux线程数限制配置的实战分享) 实战经验分享( ** 属用性能调优**): Dubbo服务启动依赖检查 Du ...

  8. Bubbo的启动时检查

    这个地方参考dubbo的官网,不是很难,为了使得文档的完整,也单独起一章. 1.默认 Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时, ...

  9. Dubbo服务启动依赖检查

    dubbo 官方文档地址:http://dubbo.io/User+Guide-zh.htm 项目中存在服务之间存在循环依赖,启动时总是报错,通过修改启动检查check=false解决,下面是dubb ...

随机推荐

  1. 海量数据架构下如何保证Mycat的高可用?

    写在前面 在<冰河,能讲讲Mycat如何实现MySQL的读写分离吗?>一文中,我们实现了使用Mycat实现MySQL的读写分离.然而,此时的Mycat只有一个节点,如果Mycat节点宕机了 ...

  2. airtest数据线连接手机

    1.用USB数据将手机和电脑进行连接,手机打开开发者模式,并且开启USB调试   2.下载adb调试:只是用户检查有没有设备连接,不下载也行,但是最好下载 使用方法:解压 方法一:使用cmd命令进入解 ...

  3. Struts2 S2-061(CVE-2020-17530)漏洞复现

    0x00 漏洞简介 Apache Struts2框架是一个用于开发Java EE网络应用程序的Web框架.Apache Struts于2020年12月08日披露 S2-061 Struts 远程代码执 ...

  4. 数据结构与算法——图(游戏中的自动寻路-A*算法)

    在复杂的 3D 游戏环境中如何能使非玩家控制角色准确实现自动寻路功能成为了 3D 游戏开 发技术中一大研究热点.其中 A*算法得到了大量的运用,A*算法较之传统的路径规划算法,实时性更高.灵活性更强, ...

  5. 设置RAC DB归档

    1.关闭集群数据库 srvctl stop database -d RAC 2.将节点一设置为归档模式 sqlplus / as sysdba startup mount alter database ...

  6. jmeter接口测试笔记

    1.接口测试基础 API:Application Programming Interface,即调用应用程序的通道. 接口测试遵循点 接口的功能性实现:检查接口返回的数据与预期结果的一致性. 测试接口 ...

  7. js下 Day15、正则表达式

    一.正则表达式简介 什么是正则表达式 正则表达式,也叫规则表达式, 是对字符串操作的一种逻辑公式. 为什么要使用正则? 1.使用极简单的方式,去匹配字符串 2.速度快,代码少 3.在复杂的字符串中快速 ...

  8. [日常摸鱼]pojKaka's Matrix Travels-拆点+最大费最大流

    方格取数的升级版,每个格子最多取一次. $k=1$的话就是个普及组的dp题,$k=2$就是在之前的基础上多加两维. 然而现在$k$太大了当然就不dp啦 对于$k=1$的情况我们还可以把$(i,j)$向 ...

  9. 冰河,能不能讲讲如何实现MySQL数据存储的无限扩容?

    写在前面 随着互联网的高速发展,企业中沉淀的数据也越来越多,这就对数据存储层的扩展性要求越来越高.当今互联网企业中,大部分企业使用的是MySQL来存储关系型数据.如何实现MySQL数据存储层的高度可扩 ...

  10. BUUCTF | [网鼎杯 2020 朱雀组]phpweb

    一道比较简单的题,不过对PHP还是不够熟悉 知识点 1.PHP date函数 PHP date() 函数用于对日期或时间进行格式化. 语法 date(format,timestamp) 参数 描述 f ...