启动检查设置

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. 记一次storm提交任务遇到的坑

    摘要:主要是自己没有真正理解storm jar命令参数的意义. 情景复现: 在storm集群中使用命令提交后,在UI界面中,一直看不见任务提交上来的任务,但是在集群提交的shell界面中,是可以看到相 ...

  2. sqli-labs less-24(二次注入)

    less-24 原理: 在网站处理用户提交的数据的时候,只是将某些敏感字符进行了转义.因而使得用户第一次提交的时候不会被当做代码执行.但是这些数据存入数据库的时候却没有转义,而网站程序默认数据库中的数 ...

  3. I/O接口

    目录 I/O接口的功能 接口的功能(要解决的问题) 接口的功能(具体操作) I/O接口的基本结构 接口和端口 I/O端口及编址 统一编址 独立编址 I/O接口的类型 小结 接口可以看作是两个部件之间的 ...

  4. SpringBoot + Layui + JustAuth +Mybatis-plus实现可第三方登录的简单后台管理系统

    1. 简介   在之前博客:SpringBoot基于JustAuth实现第三方授权登录 和 SpringBoot + Layui +Mybatis-plus实现简单后台管理系统(内置安全过滤器)上改造 ...

  5. ubuntu 16.04安装adobe reader

    终端输入:wget ftp://ftp.adobe.com/pub/adobe/reader/unix/9.x/9.5.5/enu/AdbeRdr9.5.5-1_i386linux_enu.deb s ...

  6. Linux shell 获取目录下时间最新的文件的文件名

    ls -lt /dirname/ | grep filename | head -n 1 |awk '{print $9}' 逐条解释: ls -lt /dirname/ 列出此目录下的所有文件并按照 ...

  7. ACL 的功能、匹配原则、端口号类别

    功能 1)限制网络流量.提高网络性能.例如,ACL可以根据数据包的协议,指定这种类型的数据包具有更高的优先级,同等情况下可预先被网络设备处理. 2)提供对通信流量的控制手段. 3)提供网络访问的基本安 ...

  8. Intellij idea 创建java web

    https://blog.csdn.net/qq_41592771/article/details/80577791 将tomcat服务器lib目录下面的servlet-api.jar复制到lib文件 ...

  9. 工具-chrome相关-安装crx包及错误解决(99.3.1)

    @ 目录 1.安装教程 2.程序包无效:"CRX_HEADER_INVALID" 1.安装教程 在浏览器上输入 chrome://extensions 并且选择开发者模式 将.cr ...

  10. 第一章: 初始JVM

    跟很多人一样,我一开始接触 Java 虚拟机只是因为面试需要用到,所以硬着头皮看看.所以很多人对于为什么要学虚拟机这个问题,他们的答案都是:因为面试. 因为装逼 但我经过了几年的学习和实战,我发现其实 ...