目錄
目錄
配置詳解
Hystrix屬性4種優先級
Hystrix屬性
Command Properties 相關類 HystrixCommand
執行相關 控制HystrixCommandrun 執行
回退 控制HystrixCommandgetFallback 執行 對於線程池或者信號量執行策略都生效
斷路器 控制HystrixCircuitBreaker
度量 主要度量HystrixCommand 和 HystrixObservableCommand 的執行情況
請求上下文 控制HystrixRequestContext 被HystrixCommand使用
Collapser Properties 控制HystrixCollapser
Thread Pool Properties 控制執行的線程池
配置詳解:
參考網址:
https://github.com/Netflix/Hystrix/wiki/Configuration
Hystrix屬性4種優先級
內置全局
採用ConcurrentHashMap 有 HystrixCommandProperties HystrixThreadPoolProperties HystrixCollapserProperties
動態全局
HystrixDynamicProperty
實例
動態實例
Hystrix屬性
Command Properties 相關類 HystrixCommand
1.執行相關 控制HystrixCommand.run() 執行
執行的隔離策略:
execution.isolation.strategy
線程池隔離:THREAD
信號量隔離:SEMAPHORE
默認THREAD
信號量適用於接口併發量高的情況,如每秒數百次調用的情況,導致的線程開銷過高,通常只適用於非網絡調用,執行速度快
超時時間:
execution.isolation.thread.timeoutInMilliseconds
默認1000毫秒
超過該時間會執行回退邏輯
是否啓用超時設置
execution.timeout.enabled
默認true
是否超時中斷正在執行的run
execution.isolation.thread.interruptOnTimeout
默認true
是否執行取消動作時,中斷正在執行的run
execution.isolation.thread.interruptOnCancel
默認false
設置最大的信號量,只對於使用信號量[SEMAPHORE]策略的生效
execution.isolation.semaphore.maxConcurrentRequests
默認10
如果超出該併發量,則超出的會被拒絕;且該值必需小於容器的線程池大小,否則並不起保護作用,因爲其實容器線程池的一小部分而已
2. 回退 控制HystrixCommand.getFallback() 執行 對於線程池或者信號量執行策略都生效
最大的併發調用getFallback()
fallback.isolation.semaphore.maxConcurrentRequests
默認10
如果超出該數,則後續的會被拒絕,如果沒有實現回退邏輯的,則會拋出異常
是否當故障或者拒絕發生後,一個調用嘗試調用getFallback()方法
fallback.enabled
默認true
3. 斷路器 控制HystrixCircuitBreaker
是否開啓斷路器用於健康監控和短路請求
circuitBreaker.enabled
默認true
設置一個窗口內的請求數,當在該窗口內(即時間內)請求數達到了該值,則斷路器會被打開
circuitBreaker.requestVolumeThreshold
默認20
設置在斷路打開後,拒絕請求到再次嘗試請求並決定斷路器是否繼續打開的時間
circuitBreaker.sleepWindowInMilliseconds
默認5000毫秒
設置打開斷路器並走回退邏輯的錯誤率
circuitBreaker.errorThresholdPercentage
默認50%
是否強制打開斷路器,如果打開則會拒絕左右的請求
circuitBreaker.forceOpen
默認false
優先級比circuitBreaker.forceClosed高
是否強制關閉斷路器,則允許所有的請求,無視錯誤率
circuitBreaker.forceClosed
默認false
4. 度量 主要度量HystrixCommand 和 HystrixObservableCommand 的執行情況
設置滾動窗口的統計時間
metrics.rollingStats.timeInMilliseconds
默認10000毫秒
該項不可以動態修改,以防止統計的不正確
設置滾動的統計窗口被分成的桶的數量
metrics.rollingStats.numBuckets
默認10
metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0 這個必須成立,否則會拋異常
是否開啓百分數和均值統計
metrics.rollingPercentile.enabled
默認true
如果爲false,則值爲-1
設置滾動窗口的持續時間,其中執行時間保持在百分位數中
metrics.rollingPercentile.timeInMilliseconds
默認60000
numBuckets
metrics.rollingPercentile.numBuckets
默認6
bucketSize
metrics.rollingPercentile.bucketSize
默認100
intervalInMilliseconds
metrics.healthSnapshot.intervalInMilliseconds
默認500
5. 請求上下文 控制HystrixRequestContext 被HystrixCommand使用
是否啓動當HystrixCommand.getCacheKey()調用後,緩存到HystrixRequestCache
requestCache.enabled
默認true
是否記錄HystrixCommand執行或者事件的日誌到HystrixRequestLog
requestLog.enabled
默認true
Collapser Properties 控制HystrixCollapser
設置在批處理請求中,允許的最大請求數
maxRequestsInBatch
默認Integer.MAX_VALUE
設置批處理在多少毫秒後出發執行
timerDelayInMilliseconds
默認10毫秒
是否緩存HystrixCollapser.execute() 和 HystrixCollapser.queue()
requestCache.enabled
默認true
Thread Pool Properties 控制執行的線程池
執行線程數
coreSize
默認10
最大執行線程數 通常同1一樣大小
maximumSize
默認10
設置使用哪種BlockingQueue,如果-1爲SynchronousQueue;其他則爲LinkedBlockingQueue
maxQueueSize
默認-1
不支持動態調整
設置拒絕隊列大小,這個屬性是因爲maxQueueSize無法動態改變,但需要去動態改變隊列大小
queueSizeRejectionThreshold
默認5
當maxQueueSize爲-1,則該屬性不可用
設置線程存活多少毫秒
keepAliveTimeMinutes
默認1
設置maximumSize啓作用
allowMaximumSizeToDivergeFromCoreSize
默認false
滾動窗口
metrics.rollingStats.timeInMilliseconds
默認10000毫秒
設置桶數 必需metrics.rollingStats.timeInMilliseconds % metrics.rollingStats.numBuckets == 0 否則拋異常
metrics.rollingStats.numBuckets
默認10
---------------------
作者:二代凡
來源:CSDN
原文:https://blog.csdn.net/u012314558/article/details/78347219
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!