Hystrix简介&说明
文章目录
- Hystrix简介&说明
- Hystrix 介绍
- Hystrix 主要作用
- Hystrix 流程
- Hystrix 两种命令模式
- Hystrix 配置
- GroupKey
- CommandKey
- Hystrix 请求特性
- 请求缓存
- 请求合并
- Hystrix 隔离
- Hystrix 隔离简介
- 线程隔离
- 信号量隔离
- ThreadPoolKey
- Hystrix 降级处理机制
- 降级介绍
- 降级触发原则
- 快速失败
- Hystrix 熔断机制
- 熔断器介绍
- 熔断器状态
Hystrix简介&说明
Hystrix 介绍
- Hystrix 是用于处理延迟和容错的开源库
- Hystrix 主要用于避免级联故障,提高系统弹性
- Hystrix 解决了由于扇出导致的“雪崩效应”
- Hystrix 的核心是“隔离”和“熔断机制”
扇出示意图:
Hystrix 主要作用
- 服务隔离和服务熔断
- 服务降级、限流和快速失败
- 请求合并和请求缓存
- 自带单体和集群监控
Hystrix 流程
- 1、构建一个
HystrixCommand
或者HystrixObservableCommand
对象 2、执行命令
有4种方式可以执行一个Hystrix命令。
execute()
—该方法是阻塞的,从依赖请求中接收到单个响应(或者出错时抛出异常)。queue()
—从依赖请求中返回一个包含单个响应的Future对象。observe()
—订阅一个从依赖请求中返回的代表响应的Observable对象。toObservable()
—返回一个Observable对象,只有当你订阅它时,它才会执行Hystrix命令并发射响应。
- 3、响应是否被缓存
- 4、回路器是否打开
- 5、线程池、队列、信号量是否已满
- 6、
HystrixObservableCommand.construct()
或者HystrixCommand.run()
- 7、计算回路指标[Circuit Health](业务执行成功、失败、拒绝和超时)
- 8、获取FallBack
Hystrix 两种命令模式
HystrixCommand
或者HystrixObservableCommand
Command
会以隔离的形式完成run()
方法的调用ObservableCommand
使用当前线程进行调用
Hystrix 配置
GroupKey
- Hystrix 中 GroupKey 是唯一必填项
- GroupKey 可以作为分组监控和报警的作用
- GroupKey 将作为线程池的默认名称
CommandKey
- Hystrix 可以不填写 CommandKey
- 默认 Hystrix 会通过反射类名命名 CommandKey
- 在 Setting 中加入 andCommandKey 进行命名
Hystrix 请求特性
请求缓存
- Hystrix 支持将请求结果进行本地缓存
- 通过实现 getCacheKey 方法来判断是否取出缓存
- 请求缓存要求请求必须在同一个上下文
- 可以通过 RequestCacheEnabled 开启请求缓存(默认开启)
请求合并
- Hystrix 支持将多个请求合并成一次其你去
- Hystrix 请求合并要求两次请求必须足够 “近”
- 请求合并分为局部合并和全局合并两种
- Collapser 可以设置相关参数
Hystrix 隔离
Hystrix 隔离简介
- Hystrix 提供了信号量和线程两种隔离手段
- 线程隔离会在单独的线程中执行业务逻辑
- 信号量隔离在调用线程上执行
- 官方推荐优先线程隔离
线程隔离
- 应用自身完全受保护,不会受其他依赖影响
- 有效降低接入新服务的风险
- 依赖服务出现问题,应用自身可以快速反应问题
- 可以通过实时刷新动态属性减少依赖问题影响
信号量隔离
- 信号量隔离是轻量级的隔离术
- 无网络开销的情况推荐使用信号量隔离
- 信号量是通过计数器和请求线程比对进行限流
ThreadPoolKey
- Hystrix 可以不填写 ThreadPoolKey
- 默认Hystrix会使用GroupKey 命名线程池
- 在Setting中加入andThreadOPoolKey 进行命名
Hystrix 降级处理机制
降级介绍
- 降级是一种无奈的“选择”,俗称“备胎” (^)
- Command 降级需要实现fallback方法
- ObservableCommand 降级实现 resumeWithFallback方法
降级触发原则
- HystrixBadRequestException 以外的异常
- 运行超时或熔断器处于开启状态
- 线程池或信号量已满
快速失败
- Hystrix 提供了快速失败的机制
- 当不实现fallback 方法时会将异常抛出
Hystrix 熔断机制
熔断器介绍
- 熔断器是一种开关,用来控制流量是否执行业务逻辑
熔断器核心指标
- 快照时间窗
- 请求总数阈值
- 错误百分比阈值
熔断器状态
- 熔断器开启: 所有请求都会进入fallback方法
- 熔断器半开启: 间歇性让请求触发run方法
- 熔断器关闭: 正常处理业务请求
- 默认情况下熔断器开启5秒后进入半开启状态
– end
–
如有问题,请留言或者发送邮件,感谢您的阅读
还没有评论,来说两句吧...