【高性能网关soul学习】16. 熔断插件之Hystrix
本文目标:
- 跑通熔断插件 Hystrix
- 分析 Soul 中 hystrix 源码实现
Hystrix 插件启动流程
-
soul-bootstrap 增加 soul-spring-boot-starter-plugin-hystrix 依赖
-
依次启动 soul-admin、http测试服务、soul-bootstrap 网关服务
-
参考选择器配置规则 进行配置
-
hystrix 的隔离模式分为两种
- semaphore
- thread配置
- 相比semaphore 多了线程池相关的三个配置项
-
通用参数:
- 跳闸最小请求数量 :最小的请求量,至少要达到这个量才会触发熔断
- 错误百分比阀值 : 这段时间内,发生异常的百分比。
- 最大并发量 : 最大的并发量
- 跳闸休眠时间(ms) :熔断以后恢复的时间。
- 分组Key: 一般设置为:contextPath
- 命令Key: 一般设置为具体的 路径接口。
-
修改 跳闸最小请求数量 和错误百分阈值都为1,然后在 http测试服务中的 OrderController中的对应接口 打上断点,第一次请求超时失败之后,立马请求第二次,则会立马得到下述异常
{
"code": 500,
"message": "Internal Server Error",
"data": "/order/findById short-circuited and fallback failed."
}
源码分析
- 获取相关属性
- 获取上下文相关内容:SoulContext、HystrixHandle
- 设置默认值groupKey 和 commandKey
- 根据 HystrixHandle.getExecutionIsolationStrategy() 类型创建 HystrixCommand 或者 HystrixCommandOnThread
- command.isCircuitBreakerOpen()
- 判断是否
@Override
protected Mono<Void> doExecute(final ServerWebExchange exchange, final SoulPluginChain chain, final SelectorData selector, final R