服务熔断

断路器一句话就是家里保险丝

熔断是什么

在这里插入图片描述
大神论文

实际操作

修改cloud-provider-hystrix-payment8001
1、PaymentService


    //服务熔断
    @HystrixCommand(fallbackMethod = "paymentCircuitBreaker_fallback",commandProperties = {
            @HystrixProperty(name = "circuitBreaker.enabled",value = "true"),  //是否开启断路器
            @HystrixProperty(name = "circuitBreaker.requestVolumeThreshold",value = "10"),   //请求次数
            @HystrixProperty(name = "circuitBreaker.sleepWindowInMilliseconds",value = "10000"),  //时间范围
            @HystrixProperty(name = "circuitBreaker.errorThresholdPercentage",value = "60"), //失败率达到多少后跳闸
    })
    public String paymentCircuitBreaker(@PathVariable("id") Integer id){
        if (id < 0){
            throw new RuntimeException("*****id 不能负数");
        }
        String serialNumber = IdUtil.simpleUUID();//IdUtil 非常好用的工具类,来自--->https://www.hutool.cn/

        return Thread.currentThread().getName()+"\t"+"调用成功,流水号:"+serialNumber;
    }
    
    
    public String paymentCircuitBreaker_fallback(@PathVariable("id") Integer id){
        return "id 不能负数,请稍候再试,(┬_┬)/~~     id: " +id;
    }

2、PaymentController

    //===服务熔断
    @GetMapping("/payment/circuit/{id}")
    public String paymentCircuitBreaker(@PathVariable("id") Integer id){
        String result = paymentService.paymentCircuitBreaker(id);
        log.info("*******result:"+result);
        return result;
    }

测试

1、自测cloud-provider-hystrix-payment8001
2、正确:http://localhost:8001/payment/circuit/31
3、错误:http://localhost:8001/payment/circuit/-31
4、多次错误,然后慢慢正确,发现刚开始不满足条件,就算是正确的访问地址也不能进行访问,需要慢慢的恢复链路

原理(小总结)

在这里插入图片描述

熔断类型

熔断打开: 请求不再进行调用当前服务,内部设置时钟一般为MTTR(平均故障处理时间),当打开时长达到所设时钟则进入熔断状态。

熔断关闭: 熔断关闭不会对服务进行熔断

熔断半开: 部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断

官网断路器流程

在这里插入图片描述

1、官网步骤
在这里插入图片描述

2、断路器在什么情况下开始起作用
在这里插入图片描述

3、断路器开启或者关闭的条件

①当满足一定阀值的时候(默认10秒内超过20个请求次数)
②当失败率达到一定的时候(默认10秒内超过50%请求失败)
③到达以上阀值,断路器将会开启
④当开启的时候,所有请求都不会进行转发
⑤一段时间之后(默认是5秒),这个时候断路器是半开状态,会让其中一个请求进行转发。如果成功,断路器会关闭,若失败,继续开启。重复4和5

4、断路器打开之后
在这里插入图片描述

所有配置

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值