启动检查设置

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. AGC043 B题题解

    有的时候,碰到一道题,要给自己先设立部分分,再去想如何把部分分推广到一般情况.这题就是绝佳的例子. 不妨将\(a_i\)用\(a_i - 1\)替代,这样就变成了\(a_i \in \{ 0, 1, ...

  2. js实现弹幕

    弹幕是一个很常见的功能,下面是本人封装的一个小小的实现方案,存在不足之处可以提出来或自由改进. 直接上代码:复制可运行 <!DOCTYPE html> <html> <h ...

  3. 恋爱话术库撩妹至尊VIP版

    本软件来自互联网,解锁永久至尊VIP 是一款教你撩妹密语软件.和女生聊天没有话题? 不知道怎么逗乐女生? 女生生气了不会哄? 不知道怎么让女生愿意跟你聊下去? 不知道女生对你有没有意思? 遇到不知道怎 ...

  4. DVWA各等级XSS

    xss原理及基本介绍 XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器 ...

  5. 【操作系统】页面置换算法(最佳置换算法)(C语言实现)

    [操作系统]页面置换算法(最佳置换算法)(C语言实现) (编码水平较菜,写博客也只是为了个人知识的总结和督促自己学习,如果有错误,希望可以指出) 1.页面置换算法: 在地址映射过程中,若在页面中发现所 ...

  6. Mybatis(二)--SqlMapConfig.xml配置文件

    一.简介 SqlMapConfig.xml是Mybatis的全局配置文件,我们在写mybatis项目时,在SqlMapConfig.xml文件中主要配置了数据库数据源.事务.映射文件等,其实还有很多配 ...

  7. [日常摸鱼]Vijos1083小白逛公园-线段树

    题意:单点修改,询问区间最大子段和,$n\leq 5e5$ 考虑分治的方法$O(nlogn)$求一次最大子段和的做法,我们是根据中点分成左右两个区间,那么整个区间的答案要么是左边答案,要么是右边答案, ...

  8. 开源OLAP引擎对比

    什么是olap 01.绝大多数请求都是读请求 02.数据以相当大的批次(>1000行)更新,而不是单行更新;或者它根本没有更新 03.数据已添加到数据库,但不会进行修改 04.对于读取,每次查询 ...

  9. layui的登录页面设计

    主要的结构 先导入layui的主要的js和css等 <html> <head> <meta charset="utf-8"> <title ...

  10. MySQL(二):快速理解MySQL数据库索引

    索引 基本概念:索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现. 数据结构 Tree 指的是 Balance Tree,也就是平衡树.平衡树是一颗查找树,并 ...