Hystrix简介&说明
Posted 痴乙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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秒后进入半开启状态
以上是关于Hystrix简介&说明的主要内容,如果未能解决你的问题,请参考以下文章
微服务架构之spring cloud hystrix&hystrix dashboard
重学SpringCloud系列七之服务熔断降级hystrix