疯狂Spring Cloud连载(18)Hystrix断路器的开启和关闭

 本文节选自《疯狂Spring Cloud微服务架构实战》

京东购买地址:https://item.jd.com/12256011.html

当当网购买地址:http://product.dangdang.com/25201393.html

Spring Cloud教学视频http://blog.csdn.net/boxiong86/article/details/78399104

Spring Cloud电子书http://blog.csdn.net/boxiong86/article/details/78488226

18 Hystrix断路器的开启和关闭

断路器开启

断路器一旦开启,就会直接调用回退方法,不再执行命令,而且也不会更新链路的健康状况。断路器的开启要满足两个条件:

     1、整个链路达到一定的阀值,默认情况下,10秒内产生超过20次请求,则符合第一个条件。

     2满足第一个条件的情况下如果请求的错误百分比大于阀值,则会打开断路器,默认为50%

Hystrix的逻辑,先判断是否满足第一个条件,再判断第二个条件,如果两个条件都满足,则会开启断路器。断路器开启的测试代码,请见代码清单6-8

代码清单6-8

codes\06\6.2\first-hnystrix-client\src\main\java\org\crazyit\cloud\breaker\OpenTest.java

public class OpenTest {

 

public static void main(String[] args) throws Exception {

// 10秒内有10个请求,则符合第一个条件

ConfigurationManager.getConfigInstance().setProperty(

"hystrix.command.default.metrics.rollingStats.timeInMilliseconds", 10000);

ConfigurationManager.getConfigInstance().setProperty(

"hystrix.command.default.circuitBreaker.requestVolumeThreshold", 10);

ConfigurationManager.getConfigInstance().setProperty(

"hystrix.command.default.circuitBreaker.errorThresholdPercentage", 50);

for(int i = 0; i <15; i++) {

//执行的命令全部都会超时

MyCommand c = new MyCommand();

c.execute();

//断路器打开后输出信息

if(c.isCircuitBreakerOpen()) {

System.out.println("断路器被打开,执行第" + (i + 1) + " 个命令");

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨大仙的程序空间

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值