【轉】hystrix配置屬性說明

目錄
目錄
配置詳解
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 
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章