Hystrix简介
hystrix是一个容错组件,实现了超时机制和断路器模式。实现了熔断和降级
-
降级
服务降级一般是指在服务器压力剧增的时候,根据实际业务使用情况以及流量,对一些服务和页面有策略的不处理或者用一种简单的方式进行处理,从而释放服务器资源的资源以保证核心业务的正常高效运行。 -
熔断
应对雪崩效应的链路自我保护机制。可看作降级的特殊情况
下游服务挂掉后,防止自身被拖垮
Hystrix使用
使用
- 添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
- 启用hystrix
修改application.yaml
feign:
hystrix:
enabled: true # 开启hystrix
- 增加备份
增加备份实现
- 增加回调配置
在触发熔断的时候就会使用RentCarFeignHystrix
- 调用显示
常用配置
hystrix : #hystrix 的全局控制
command :
default :
#default 是全局控制,也可以换成单个方法控制,把 default 换成方法名即可
fallback :
isolation :
semaphore :
maxConcurrentRequests : 1000 # 信号量隔离级别最大并发数
circuitBreaker :
enabled : true # 开启断路器
requestVolumeThreshold : 3 # 失败次数(阀值)
sleepWindowInMilliseconds : 20000 # 窗口时间
errorThresholdPercentage : 60 # 失败率
execution :
isolation :
Strategy : thread # 隔离方式 thread 线程隔离集合和 SEMAPHORE 信号量隔离 级别
thread :
timeoutInMilliseconds : 3000 # 调用超时时长
- 线程隔离方式
#隔离方式 两种隔离方式 thread 线程池 按照 group(10 个线程)划分服务提供者,用户请求的线程 和做远程的线程不一样
# 好处 当 B 服务调用失败了 或者请求 B 服务的量太大了 不会对 C 服务造成影响 用户访问比较大的情 况下使用比较好 异步的方式
# 缺点 线程间切换开销大,对机器性能影响
# 应用场景 调用第三方服务 并发量大的情况下
# SEMAPHORE 信号量隔离 每次请进来 有一个原子计数器 做请求次数的++ 当请求完成以后 --
# 好处 对 cpu 开销小
# 缺点 并发请求不易太多 当请求过多 就会拒绝请求 做一个保护机制
# 场景 使用内部调用 ,并发小的情况下
# 源码入门 HystrixCommand AbstractCommand