Hystrix断路器

Hystrix断路器是什么呢?

Hystix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败。
在微服务I发生异常,请求阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞,服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应。

那么这个问题如何解决呢?来我们一起编写Hystrix

新建提供者cloud-provider-hystrix-payment8001模块
Hystrix断路器_第1张图片
导入依赖,这里我们先把hystrix依赖注释掉,先模拟一下服务器发生超时的状况

 
        
            
        
        
            org.springframework.cloud
            spring-cloud-starter-netflix-eureka-client
        
        
            org.springframework.boot
            spring-boot-starter-web
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
        
            org.springframework.boot
            spring-boot-devtools
            runtime
            true
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
        
            
            org.example
            cloud-api-commons
            1.0-SNAPSHOT
        
    

编写配置文件
Hystrix断路器_第2张图片
编写启动类Hystrix断路器_第3张图片
来写service,因为我们只是模拟一下服务器连接超时,所有就不去连接数据库了Hystrix断路器_第4张图片
编写controller
Hystrix断路器_第5张图片
访问正常的方法
Hystrix断路器_第6张图片
访问延迟的方法,现在都没有问题
Hystrix断路器_第7张图片
接下来我们使用软件来模拟服务器在高并发的情况下会如何,设置一下线程数量
Hystrix断路器_第8张图片
Hystrix断路器_第9张图片
我们再来访问一下试试,可以看出在高并发的情况下一直在刷新,这样会让客户等的时间太长,客户体验极差,你们公司很有可能就凉凉了,就算没有访问到也应该给客户一个提示语句,不能一直瞎等下去,这里我们就需要用到Hystrix断路器了
Hystrix断路器_第10张图片
把这个配置文件的注释解开


                org.springframework.cloud
                spring-cloud-starter-netflix-hystrix
            

修改我们的启动类,这个注解里边包含了上边上个注解,这是开启断路器用的
Hystrix断路器_第11张图片
service层修改一下,注:用户等待3000是毫秒
Hystrix断路器_第12张图片
测试一下,这里是用户最多等待三秒,但是我们模拟的是让它休眠五秒在执行,所以也就超时了,调用了备选方案
Hystrix断路器_第13张图片
Hystrix断路器_第14张图片

你可能感兴趣的:(测试)