dubbo配置启动时检查
启动检查设置
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配置启动时检查的更多相关文章
- dubbo之启动时检查
启动时检查 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发现问题,默认 check="true".所以可以通过 ...
- dubbo的启动时检查
修改的消费者(xml) 修改的消费者(注解)
- dubbo启动时检查服务
Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true". 可以通过 che ...
- Dubbo启动时检查
Dubbo在启动时会检查服务提供者所提供的服务是否可用,默认为True. (1).单个服务关闭启动时检查(check属性置为false) 1).基于xml文件配置方式 <!--3.声明需要调用的 ...
- Dubbo -- 系统学习 笔记 -- 示例 -- 启动时检查
示例 想完整的运行起来,请参见:快速启动,这里只列出各种场景的配置方式 启动时检查 Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止Spring初始化完成,以便上线时,能及早发 ...
- Dubbo学习-8-dubbo启动时检查
启动时检查的作用如下: (1)Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题,默认 check="true& ...
- Dubbo入门到精通学习笔记(十一):Dubbo服务启动依赖检查、Dubbo负载均衡策略、Dubbo线程模型(结合Linux线程数限制配置的实战分享)
文章目录 Dubbo服务启动依赖检查 Dubbo负载均衡策略 Dubbo线程模型(结合Linux线程数限制配置的实战分享) 实战经验分享( ** 属用性能调优**): Dubbo服务启动依赖检查 Du ...
- Bubbo的启动时检查
这个地方参考dubbo的官网,不是很难,为了使得文档的完整,也单独起一章. 1.默认 Dubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时, ...
- Dubbo服务启动依赖检查
dubbo 官方文档地址:http://dubbo.io/User+Guide-zh.htm 项目中存在服务之间存在循环依赖,启动时总是报错,通过修改启动检查check=false解决,下面是dubb ...
随机推荐
- AcWing 380. 舞动的夜晚
大型补档计划 题目链接 这题是求必须边,而不是不可行边,因为不可行边 = 必须边 + 死掉了的边(貌似lyd第三版书上还是说的不可行边)先跑最大流. 在跑完以后的残余网络上,对于一条当前匹配的边 \( ...
- 安卓实用工具箱v4.3几百种小功能
款多功能实用工具箱.提供了从日常.图片.查询.设备.辅助.提取.优惠券.趣味游戏等多方面的功能,操作简单,即点即用,避免您下载超多应用的难题,且应用体积轻巧,界面简洁.已去除广告! 下载地址:http ...
- 在linux下使用Apache搭建文件服务器
目录 一.关于文件服务器 二.使用Apache搭建文件服务器 三.测试文件服务器是否可用 一.关于文件服务器 在一个项目中,如果想把公共软件或者资料共享给项目组成员,可以搭建一个简易的文件服务器来 ...
- Linux vmstat 使用说明
摘自 https://www.thomas-krenn.com/en/wiki/Linux_Performance_Measurements_using_vmstat Linux Performanc ...
- 网站开发学习Python实现-Django项目部署-介绍(6.2.1)
@ 目录 1.第一步:找源码 2.第二步:在windows中更改代码 2.第三步:同步到linux中 3.第三步:部署 4.第四步:运行 关于作者 1.第一步:找源码 从github上找一个djang ...
- Python高级语法-多继承MRO相关-args和kwargs(4.5.2)
@ 目录 1.说明 2.代码 关于作者 1.说明 args数据类型为元组 kwargs数据类型为字典 一般传入方法中使用遍历去得到值 这个传入参数的顺序没有特殊的要求 当你自定义的参数传完以后,写了名 ...
- pandas的学习8-pandas-plot出图
import pandas as pd import numpy as np import matplotlib.pyplot as plt ''' 这次我们讲如何将数据可视化. 首先import我们 ...
- 基于 WebRTC 的 RTSP 视频实时预览
简介 背景 由于项目需要,需要使用摄像头预览功能,设备型号为海康威视.目前已存在的基于 FFmpeg 的方案延迟都太高,所以项目最终选择基于此方案. 方案 方案选用为基于 WebRTC 的视频即时通讯 ...
- K-NN(最近邻分类算法 python
# algorithm:K-NN(最近邻分类算法)# author:Kermit.L# time: 2016-8-7 #======================================== ...
- Python制作折线图
利用python的第三方包Pygal制作简单的折线图. 申明:本文仅供学习交流使用.源码大部分来自<python编程从入门到实践>:如有侵权,请联系我删除. 1 #!usr/bin/env ...