13.Hystrix服务熔断

类比保险丝达到最大访问后,直接拒绝访问,拉闸限电,然后调用服务降级方法,返回友好提示!
服务降级===>进而熔断====>恢复调用链路


熔断机制概述:
    熔断机制就是应对雪崩效应的一种微服务链路保护机制。当扇出链路的某个微服务出错不可用,或者想响应时间过长时
    会进行服务降级,进而熔断该节点的微服务调用,快速返回错误的响应信息
    当检测到该节点服务调用响应正常后,恢复调用链路

在srpingcloud框架中,熔断机制通过Hystrix实现,Hystrix会监控微服务间的调用状况
当失败的调用达到一定阈值,缺省是5秒20次调用失败,就会启动熔断机制,熔断机制的注解是@HystrixCommand


具体的实现代码如下:
    重点1:HystrixCommand标签,以及熔断的状态:服务降级(返回友好提示信息)===>服务熔断(服务无法正常访问,返回友好错误信息)=====>恢复调用链路
    @HystrixCommand(
        fallbackMethod = "getCurrentThread_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")//失败率达到多少后跳闸
                /*
                    1.服务降级==>服务熔断:上述配置的意思是:在一个窗口期(10秒内),调用量超过10次,并且失败率达到了60%,会进行服务熔断,这时候短路器处于全开状态(保险丝的全开)
                        服务熔断后,即使访问正确的过来,也会返回错误结果
                    2.断路器半开:慢慢的,有部分请求,当检测到服务节点返回正常时(断路器处于半开状态,放部分请求过去,看是否返回正常结果)
                    3.恢复调用链路:发现可以正常调用了,就闭合保险丝
                 */
        }
    )
    @GetMapping("/producer/getCurrentThread/{id}")
    public String getCurrentThread(@PathVariable("id")int id){
        if (id<0){
            throw  new RuntimeException("$$$$$$$$$$ id不能为负数");
        }
        String uuid= IdUtil.simpleUUID();
        return Thread.currentThread().getName()+" 调用成功!流水号:"+uuid;
    }
    //重点2:服务降级方法
    public String getCurrentThread_fallback(int id){
        return "id:"+id+" 不能为负数,请稍后重试,/(ㄒoㄒ)/~~";
    }
    
场景总结:
    上述设置是:传入的id值不能为负数,要不会进行服务降级,当错误率在10秒钟,10次访问以上,错误率达到60%以上,会进行服务熔断,
    这时即使传过来正数参数,也会返回服务降级方法,但慢慢当访问参数为正时,又会恢复链路调用,即正数返回正确的返回!

服务熔断总结:

熔断类型:
    1.熔断打开:请求不再进行调用当前服务,内部设置始终一半为MTTR(平均故障处理时间),当打开时长达到所设始终则进入版熔断状态
    2.熔断关闭:熔断关闭,不会对服务进行熔断
    3.熔断半开:部分请求根据规则调用当前服务,如果请求成功且符合规则则认为当前服务恢复正常,关闭熔断

 

posted @ 2022-05-29 17:38  努力的达子  阅读(118)  评论(0编辑  收藏  举报