Hystrix
- Hystrix是Netflix开源的一个延迟和容错库,用于隔离访问远程服务、第三方库,防止出现级联失败;Hystrix是微服务的保护机制。
- 服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,形成雪崩效应
- Hystix解决雪崩问题的手段有两个:(1)线程隔离 (2)服务熔断
- 触发Hystrix服务降级的情况:(1)线程池已满 (2)请求超时
- SpringCloudApplicatoin 等价于以下三个注解
- 因为熔断的降级逻辑方法必须跟正常逻辑方法保证:相同的参数列表和返回值声明。失败逻辑中返回User对象没有太大意义,一般会返回友好提示
- 学习chrome的F12
- hystrix:容错组件
降级:检查每次请求,是否请求超时,或者连接池已满
1.引入hystrix启动器
2.熔断时间,默认1s, 6s
3.在引导类上添加了一个注解:@EnableCircuitBreaker @SpringCloudApplication
4.定义熔断方法:局部(要和被熔断的方法返回值和参数列表一致) 全局(返回值类型要被熔断的方法一致,参数列表必须为空)
5.@HystrixCommand(fallbackMethod=“局部熔断方法名”):声明被熔断的方法
6.@DefaultProperties(defaultFallback=“全局熔断方法名”)
熔断:不再发送请求
1.close:闭合状态,所有请求正常方法
2.open:打开状态,所有请求都无法访问。如果在一定时间内容,失败的比例不小于50%或者次数不少于20次
3.half open:半开状态,打开状态默认5s休眠期,在休眠期所有请求无法正常访问。过了休眠期会进入半开状态,放部分请求通过