美文网首页编程程序员
Hystrix 学习使用

Hystrix 学习使用

作者: 酱油和醋 | 来源:发表于2017-02-17 14:19 被阅读857次

Hystrix使用学习

1. 雪崩效应

一个用户请求处理依赖多个服务,如一个用户请求依赖了服务A,P,H,I,正常情况下均能正常访问并返回


4-2

共有5种情况会触发降级处理:
1.run()方法抛出非HystrixBadRequestException异常。
2.run()方法调用超时。
3.熔断器开启。
4.线程池已满。
5.显示调用fallback逻辑(用于特殊业务处理)
当阻塞发生时(异常,超时等),由于采用了服务降级的处理,可以保证访问可以继续进行。

5 参数设置

参数 作用 备注
maxQueueSize 请求等待队列 默认值:-1,如果使用正数,队列将从SynchronizeQueue改为LinkedBlockingQueue
groupKey 表示所属的group,一个group共用线程池 默认值:getClass().getSimpleName()
fallback.isolation.semaphore.maxConcurrentRequests fallback最大并发度 默认值:10
execution.timeout.enabled 是否打开超时
execution.isolation.thread.timeoutInMilliseconds 超时时间 默认值:1000;</br>在THREAD模式下,达到超时时间,可以中断;</br>在SEMAPHORE模式下,会等待执行完成后,再去判断是否超时.</br>设置标准:</br>有retry,99meantime+avg meantime; 没有retry,99.5meantime
execution.isolation.thread.interruptOnTimeout 是否打开超时线程中断 THREAD模式有效
execution.isolation.strategy 隔离策略,有THREAD和SEMAPHORE 默认使用THREAD模式,以下几种可以使用SEMAPHORE模式:1.只想控制并发度;</br> 2.外部的方法已经做了线程隔离; </br>3.调用的是本地方法或者可靠度非常高、耗时特别小的方法(如medis)</br>
execution.isolation.semaphore.maxConcurrentRequests 信号量最大并发度 SEMAPHORE模式有效,默认值:10
coreSize 线程池coreSize 默认值:10</br>设置标准:qps*99meantime+breathing room
commandKey 默认值:当前执行方法名
circuitBreaker.sleepWindowInMilliseconds 熔断多少秒后去尝试请求 默认值:5000
circuitBreaker.requestVolumeThreshold 熔断触发的最小个数/10s 默认值:20
circuitBreaker.forceClosed 是否强制关闭熔断 如果是强依赖,应该设置为true
circuitBreaker.errorThresholdPercentage 失败率达到多少百分比后熔断 默认值:50</br>主要根据依赖重要性进行调整

参考学习:
Hystrix wiki
Hystrix 分析与使用

相关文章

网友评论

    本文标题:Hystrix 学习使用

    本文链接:https://www.haomeiwen.com/subject/qwtlwttx.html