描述
1、hystrix——熔断组件是什么
- 是Netflix开源的一个延迟和容错库
- 用于隔离访问远程服务,第三方库,防止出现级联失败
2、作用
- 服务降级
- 服务熔断
- 接近实时的监控
- 权限认证
雪崩
什么是雪崩问题
- 一个微服务卡掉,就会影响请求,如果请求多了,后面的请求就会堆积
- 服务器支持的线程和并发数有限,请求一直堵塞,会导致服务器资源耗尽,从而导致所有其他服务都不可用,形成雪崩效应
如何解决雪崩问题
1)线程隔离
降级(运行核心模块,不核心的则降级处理)—检查每次请求是否超时,或连接池已满
- 引入hystrix启动器
- 熔断时间,默认1s,6s
- 设置超时配置------------放在yml文件中
- 在引导类上加一个注解:@EnableCircuitBreaker
- 定义熔断方法:
- 局部(要和被熔断的方法返回值和参数列表保持一致)全局(返回值类型要和被熔断的方法一致,参数列表必须为空)
- @HystrixCommand(fallbackMethod=“局部熔断方法名”):声明被熔断的方法
- @DefaultProperties(defaultFallback=“全局熔断方法名”)
2)服务熔断(不再发送请求)
- 熔断器==即断路器:circuit breaker
- 熔断机制的原理
- 主动熔断------服务调用方法自己判断(反应慢,大量超时)的情况,主动熔断,防止整个系统被拖垮
- 自动重连------Hystrix可实现弹性容错–情况好转后,自动重连
- 3个状态
-
closed:关闭—所有请求访问正常
-
open:打开—所有请求都会被降级
- 条件
- 一定时间内失败请求达到百分比
- 默认失败比例为50%
- 请求次数不低于20次
- 条件
-
Half Open:半开—
- open状态会进入休眠默认5s,随后断路器自动进入半开状态
- 释放部分请求通过,若这些请求都是健康的,则完全关闭断路器,否则继续打开,再次循环进入到休眠计时
-
代码图解
用法步骤
- 导包pom
- 配置文件
- 开启熔断服务